diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a32e4def0..7db160250 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -873,7 +873,7 @@ jobs: deploy/build.sh -t android --sign --aab --play --build ./deploy/build/play - (cd deploy/build/play/client/android-build/build/outputs/bundle/release && mv android-build-release.aab AmneziaVPN_${VERSION}_play.aab) + (cd deploy/build/play/client/android-build/build/outputs/bundle/playRelease && mv *.aab AmneziaVPN_${VERSION}_play.aab) - name: 'Build Play APK' env: @@ -887,7 +887,7 @@ jobs: deploy/build.sh -t android --sign --apk --play --build ./deploy/build/play-apk - (cd deploy/build/play-apk/client/android-build/build/outputs/apk && mv android-build-release-unsigned.apk AmneziaVPN_${VERSION}_play.apk) + (cd deploy/build/play-apk/client/android-build/build/outputs/apk/play/release && mv *.apk AmneziaVPN_${VERSION}_play.apk) - name: 'Upload universal APK' uses: actions/upload-artifact@v7 @@ -906,14 +906,14 @@ jobs: - name: 'Upload Play AAB' uses: actions/upload-artifact@v7 with: - path: deploy/build/play/client/android-build/build/outputs/bundle/release/*.aab + path: deploy/build/play/client/android-build/build/outputs/bundle/playRelease/*.aab archive: false retention-days: 7 - name: 'Upload Play APK' uses: actions/upload-artifact@v7 with: - path: deploy/build/play-apk/client/android-build/build/outputs/apk/*.apk + path: deploy/build/play-apk/client/android-build/build/outputs/apk/play/release/*.apk archive: false retention-days: 7 diff --git a/client/android/build.gradle.kts b/client/android/build.gradle.kts index 1efa3e967..eadcbda44 100644 --- a/client/android/build.gradle.kts +++ b/client/android/build.gradle.kts @@ -133,21 +133,19 @@ android { // AAB: build/outputs/bundle/{buildType}/{base}-{buildType}.aab (no flavor subdir) // where {base} = outputBaseName (set by Qt Creator) or "android-build" (CI fallback). // Release APK gets -unsigned suffix (Qt cmake signs it); debug does not. + // Copy only oss flavor to the flat output dir that androiddeployqt/Qt Creator expect. + // Play flavor is built via android_play_apk/android_play_aab cmake targets and uses + // its native Gradle output paths directly. applicationVariants.all { val flavorName = productFlavors.firstOrNull()?.name ?: "" val buildTypeName = buildType.name - // Copy play flavor only when invoked explicitly (android_play_apk/aab cmake targets pass -DexplicitRun=1). - // This prevents play from overwriting oss in the flat output dir during normal Qt Creator builds. - val isExplicitRun = project.findProperty("explicitRun") == "1" - val shouldCopy = flavorName == "oss" || (flavorName == "play" && isExplicitRun) - if (shouldCopy) { + if (flavorName == "oss") { val base = outputBaseName.ifEmpty { "android-build" } val unsignedSuffix = if (buildTypeName == "release") "-unsigned" else "" - // APK: copy to outputs/apk/{base}-{buildType}[-unsigned].apk packageApplicationProvider.configure { doLast { - val srcDir = layout.buildDirectory.dir("outputs/apk/$flavorName/$buildTypeName").get().asFile + val srcDir = layout.buildDirectory.dir("outputs/apk/oss/$buildTypeName").get().asFile val dstDir = layout.buildDirectory.dir("outputs/apk").get().asFile dstDir.mkdirs() srcDir.listFiles()?.filter { it.name.endsWith(".apk") }?.forEach { apk -> @@ -156,11 +154,9 @@ android { } } - // AAB: copy to outputs/bundle/{buildType}/{base}-{buildType}.aab tasks.named("bundle${name.replaceFirstChar { it.uppercase() }}") { doLast { - val variantBundleDir = "${flavorName}${buildTypeName.replaceFirstChar { it.uppercase() }}" - val srcDir = layout.buildDirectory.dir("outputs/bundle/$variantBundleDir").get().asFile + val srcDir = layout.buildDirectory.dir("outputs/bundle/ossRelease").get().asFile val dstDir = layout.buildDirectory.dir("outputs/bundle/$buildTypeName").get().asFile dstDir.mkdirs() srcDir.listFiles()?.filter { it.name.endsWith(".aab") }?.forEach { aab -> diff --git a/client/cmake/android.cmake b/client/cmake/android.cmake index 53d8ede22..8ed546c75 100644 --- a/client/cmake/android.cmake +++ b/client/cmake/android.cmake @@ -66,14 +66,12 @@ if(ANDROID_BUILD_PLAY) endif() set(_android_build_dir "${CMAKE_CURRENT_BINARY_DIR}/android-build") add_custom_target(android_play_apk - COMMAND ./gradlew assemblePlay${_gradle_suffix} -PexplicitRun=1 - WORKING_DIRECTORY "${_android_build_dir}" + COMMAND ./gradlew assemblePlay${_gradle_suffix} WORKING_DIRECTORY "${_android_build_dir}" COMMENT "Building Android Play APK (assemblePlay${_gradle_suffix})" DEPENDS ${PROJECT} ) add_custom_target(android_play_aab - COMMAND ./gradlew bundlePlay${_gradle_suffix} -PexplicitRun=1 - WORKING_DIRECTORY "${_android_build_dir}" + COMMAND ./gradlew bundlePlay${_gradle_suffix} WORKING_DIRECTORY "${_android_build_dir}" COMMENT "Building Android Play AAB (bundlePlay${_gradle_suffix})" DEPENDS ${PROJECT} )