diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f90e6696..af91f530 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,15 +114,11 @@ jobs: - name: Get release apk path id: apk-path run: echo "path=$(find . -regex '^.*/build/outputs/apk/${{ inputs.flavor }}/${{ inputs.build_type }}/.*\.apk$' -type f | head -1 | tail -c+2)" >> $GITHUB_OUTPUT - - name: Upload APK + - name: Upload All APK Artifacts uses: actions/upload-artifact@v5 with: name: android_artifacts_${{ inputs.flavor }} path: >- - app/build/outputs/apk/${{ inputs.flavor }}/${{ inputs.build_type }}/${{ - inputs.flavor == 'fdroid' && inputs.build_type == 'release' - && 'wgtunnel-fdroid-release-*.apk' - || format('wgtunnel-{0}-v*.apk', inputs.flavor) - }} + app/build/outputs/apk/${{ inputs.flavor }}/${{ inputs.build_type }}/*.apk retention-days: 1 if-no-files-found: warn \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f97061b6..093832fb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ +import com.android.build.gradle.internal.api.BaseVariantOutputImpl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -27,6 +28,15 @@ android { // fix okhttp proguard issue packaging { resources { pickFirsts.add("okhttp3/internal/publicsuffix/publicsuffixes.gz") } } + splits { + abi { + isEnable = true + reset() + include("armeabi-v7a", "arm64-v8a") + isUniversalApk = true + } + } + defaultConfig { applicationId = Constants.APP_ID minSdk = Constants.MIN_SDK @@ -69,7 +79,7 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) - signingConfig = signingConfigs.getByName(Constants.RELEASE) + signingConfig = signingConfigs.getByName("debug") resValue("string", "provider", "\"${Constants.APP_NAME}.provider\"") } @@ -128,19 +138,33 @@ android { allowedLicenseUrls().forEach { allowUrl(it) } } - applicationVariants.all { + android.applicationVariants.all { val variant = this - variant.outputs - .map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl } - .forEach { output -> - val outputFileName = - if (variant.flavorName == "fdroid" && variant.buildType.name == "release") { - "${Constants.APP_NAME}-fdroid-release-${variant.versionName}.apk" - } else { - "${Constants.APP_NAME}-${variant.flavorName}-v${variant.versionName}.apk" - } - output.outputFileName = outputFileName - } + + val abiNameMap = + mapOf( + "armeabi-v7a" to "armv7", + "arm64-v8a" to "arm64", + "x86" to "x86", + "x86_64" to "x64", + ) + + variant.outputs.all { + val output = this as BaseVariantOutputImpl + val abi = output.getFilter("ABI") + + val baseFileName = "${Constants.APP_NAME}-${variant.flavorName}-v${variant.versionName}" + + val outputFileName = + if (!abi.isNullOrEmpty()) { + val shortAbiName = abiNameMap.getOrDefault(abi, abi) + "${baseFileName}-${shortAbiName}.apk" + } else { + "${baseFileName}.apk" + } + + output.outputFileName = outputFileName + } } }