Browse Source

Merge branch 'split-abi-apks'

renovate/org.robolectric-robolectric-4.x
Ammar Githam 4 years ago
parent
commit
e9e8ad2391
  1. 28
      .github/workflows/github_pre_release.yml
  2. 46
      app/build.gradle

28
.github/workflows/github_pre_release.yml

@ -14,20 +14,20 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: set up JDK 1.8 - name: set up JDK 1.8
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 1.8 java-version: 1.8
- name: Grant execute permission for gradlew - name: Grant execute permission for gradlew
run: chmod +x gradlew run: chmod +x gradlew
- name: Build Github unsigned pre-release apk - name: Build Github unsigned pre-release apk
run: ./gradlew assembleGithubRelease --stacktrace --project-prop pre
run: ./gradlew assembleGithubRelease --stacktrace --project-prop pre --project-prop split
- name: Sign APK - name: Sign APK
uses: r0adkll/sign-android-release@v1
uses: ammargitham/[email protected].1
# ID used to access action output # ID used to access action output
id: sign_app id: sign_app
with: with:
@ -36,18 +36,19 @@ jobs:
alias: ${{ secrets.ALIAS }} alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Get current date and time - name: Get current date and time
id: date id: date
run: echo "::set-output name=date::$(date +'%Y%m%d_%H%M%S')" run: echo "::set-output name=date::$(date +'%Y%m%d_%H%M%S')"
# Create artifact
# Create artifact
- name: Create apk artifact - name: Create apk artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: barinsta_pre-release_${{ steps.date.outputs.date }} name: barinsta_pre-release_${{ steps.date.outputs.date }}
path: ${{steps.sign_app.outputs.signedReleaseFile}}
# path: ${{steps.sign_app.outputs.signedReleaseFile}}
path: app/build/outputs/apk/github/release/*-signed.apk
# Send success notification # Send success notification
- name: Send success Telegram notification - name: Send success Telegram notification
if: ${{ success() }} if: ${{ success() }}
@ -56,8 +57,9 @@ jobs:
to: ${{ secrets.TELEGRAM_BUILDS_CHANNEL_TO }} to: ${{ secrets.TELEGRAM_BUILDS_CHANNEL_TO }}
token: ${{ secrets.TELEGRAM_BUILDS_BOT_TOKEN }} token: ${{ secrets.TELEGRAM_BUILDS_BOT_TOKEN }}
message: "${{ github.workflow }} ${{ github.job }} #${{ github.run_number }} completed successfully.\nURL: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}" message: "${{ github.workflow }} ${{ github.job }} #${{ github.run_number }} completed successfully.\nURL: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
document: ${{steps.sign_app.outputs.signedReleaseFile}}
# document: ${{steps.sign_app.outputs.signedReleaseFile}}
document: app/build/outputs/apk/github/release/*-signed.apk
# Send failure notification # Send failure notification
- name: Send failure Telegram notification - name: Send failure Telegram notification
if: ${{ failure() }} if: ${{ failure() }}

46
app/build.gradle

@ -82,6 +82,27 @@ android {
} }
} }
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable project.hasProperty("split") && !gradle.startParameter.taskNames.isEmpty() && gradle.startParameter.taskNames.get(0).contains('Release')
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"
// Specifies that we want to also generate a universal APK that includes all ABIs.
universalApk true
}
}
android.applicationVariants.all { variant -> android.applicationVariants.all { variant ->
if (variant.flavorName != "github") return if (variant.flavorName != "github") return
variant.outputs.all { output -> variant.outputs.all { output ->
@ -90,15 +111,32 @@ android {
// def versionCode = variant.versionCode // def versionCode = variant.versionCode
def flavor = variant.flavorName def flavor = variant.flavorName
def suffix = "${versionName}-${flavor}_${builtType}" // eg. 19.1.0-github_debug or release
def flavorBuiltType = "${flavor}_${builtType}"
def suffix
// For x86 and x86_64, the versionNames are already overridden
if (versionName.contains(flavorBuiltType)) {
suffix = "${versionName}"
} else {
suffix = "${versionName}-${flavorBuiltType}" // eg. 19.1.0-github_debug or release
}
if (builtType.toString() == 'release' && project.hasProperty("pre")) { if (builtType.toString() == 'release' && project.hasProperty("pre")) {
buildConfigField("boolean", "isPre", "true") buildConfigField("boolean", "isPre", "true")
// append latest commit short hash for pre-release
suffix = "${versionName}.${getGitHash()}-${flavor}" // eg. 19.1.0.b123456-github
flavorBuiltType = "${getGitHash()}-${flavor}"
// For x86 and x86_64, the versionNames are already overridden
if (versionName.contains(flavorBuiltType)) {
suffix = "${versionName}"
} else {
// append latest commit short hash for pre-release
suffix = "${versionName}.${flavorBuiltType}" // eg. 19.1.0.b123456-github
}
} }
output.versionNameOverride = suffix output.versionNameOverride = suffix
outputFileName = "barinsta_${suffix}.apk"
def abi = output.getFilter(com.android.build.OutputFile.ABI)
// println(abi + ", " + versionName + ", " + flavor + ", " + builtType + ", " + suffix)
outputFileName = abi == null ? "barinsta_${suffix}.apk" : "barinsta_${suffix}_${abi}.apk"
} }
} }

Loading…
Cancel
Save