diff --git a/.github/workflows/github_pre_release.yml b/.github/workflows/github_pre_release.yml index 22bf3620..9700fdfc 100644 --- a/.github/workflows/github_pre_release.yml +++ b/.github/workflows/github_pre_release.yml @@ -14,20 +14,20 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - + - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - + - name: Grant execute permission for gradlew run: chmod +x gradlew - + - 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 - uses: r0adkll/sign-android-release@v1 + uses: ammargitham/sign-android-release@v1.1.1 # ID used to access action output id: sign_app with: @@ -36,18 +36,19 @@ jobs: alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - + - name: Get current date and time id: date run: echo "::set-output name=date::$(date +'%Y%m%d_%H%M%S')" - - # Create artifact + + # Create artifact - name: Create apk artifact uses: actions/upload-artifact@v2 with: 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 - name: Send success Telegram notification if: ${{ success() }} @@ -56,8 +57,9 @@ jobs: to: ${{ secrets.TELEGRAM_BUILDS_CHANNEL_TO }} 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}}" - document: ${{steps.sign_app.outputs.signedReleaseFile}} - + # document: ${{steps.sign_app.outputs.signedReleaseFile}} + document: app/build/outputs/apk/github/release/*-signed.apk + # Send failure notification - name: Send failure Telegram notification if: ${{ failure() }} diff --git a/app/build.gradle b/app/build.gradle index 017529b7..d20884cf 100755 --- a/app/build.gradle +++ b/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 -> if (variant.flavorName != "github") return variant.outputs.all { output -> @@ -90,15 +111,32 @@ android { // def versionCode = variant.versionCode 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")) { 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 - 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" } }