From f4fcb474e9c80bbb32a6bdc35a837a7b8a6afd91 Mon Sep 17 00:00:00 2001 From: crueter Date: Sat, 29 Nov 2025 21:03:29 -0500 Subject: [PATCH] add chromeos flavor instead of abi splits ABI splits suck apparently. so we'll just use a flavor for now. Also added back the copy task now that APKs are building correctly again. Signed-off-by: crueter --- .ci/android/build.sh | 41 +++++------------- src/android/app/build.gradle.kts | 73 +++++++++++++++++++++++++++----- 2 files changed, 74 insertions(+), 40 deletions(-) diff --git a/.ci/android/build.sh b/.ci/android/build.sh index ff94678ad7..07cda2829f 100755 --- a/.ci/android/build.sh +++ b/.ci/android/build.sh @@ -12,7 +12,7 @@ RETURN=0 usage() { cat < Build flavor (variable: TARGET) - Valid values are: legacy, optimized, standard + Valid values are: legacy, optimized, standard, chromeos Default: standard -b, --build-type Build type (variable: TYPE) Valid values are: Release, RelWithDebInfo, Debug @@ -60,7 +58,6 @@ type() { while true; do case "$1" in - -c|--chromeos) CHROMEOS=true ;; -r|--release) DEVEL=false ;; -t|--target) target "$2"; shift ;; -b|--build-type) type "$2"; shift ;; @@ -71,16 +68,17 @@ while true; do shift done -: "${CHROMEOS:=false}" : "${TARGET:=standard}" : "${TYPE:=Release}" : "${DEVEL:=true}" -case "$TARGET" in +TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]') + +case "$TARGET_LOWER" in legacy) FLAVOR=Legacy ;; optimized) FLAVOR=GenshinSpoof ;; standard) FLAVOR=Mainline ;; - chromeos) FLAVOR=Mainline; CHROMEOS=true ;; + chromeos) FLAVOR=ChromeOS ;; *) die "Invalid build flavor $TARGET." esac @@ -104,32 +102,15 @@ chmod +x ./gradlew set -- "$@" -DUSE_CCACHE="${CCACHE}" [ "$DEVEL" != "true" ] && set -- "$@" -DENABLE_UPDATE_CHECKER=ON -[ "$CHROMEOS" = "true" ] && ABI=x86_64 -: "${ABI:=arm64-v8a}" -echo "-- building APK" -./gradlew "assemble${FLAVOR}${TYPE}" \ - -Dorg.gradle.caching="${CCACHE}" \ - -Dorg.gradle.parallel="${CCACHE}" \ - -Dorg.gradle.workers.max="${NUM_JOBS}" \ - -Pandroid.injected.build.abi="${ABI}" \ - -PYUZU_ANDROID_ARGS="$*" +echo "-- building..." -echo "-- building AAB" -./gradlew "bundle${FLAVOR}${TYPE}" \ +./gradlew "copy${FLAVOR}${TYPE}Outputs" \ -Dorg.gradle.caching="${CCACHE}" \ -Dorg.gradle.parallel="${CCACHE}" \ -Dorg.gradle.workers.max="${NUM_JOBS}" \ - -Pandroid.injected.build.abi="${ABI}" \ - -PYUZU_ANDROID_ARGS="$*" - -echo "-- packaging APK" -cp "app/build/outputs/apk/${LOWER_FLAVOR}/${LOWER_TYPE}/app-${LOWER_FLAVOR}-${LOWER_TYPE}.apk" \ - "$ARTIFACTS_DIR/app-${LOWER_FLAVOR}-${ABI}-${LOWER_TYPE}.apk" || echo "APK not found" - -echo "-- packaging AAB" -cp app/build/outputs/bundle/"${LOWER_FLAVOR}${TYPE}/app-${LOWER_FLAVOR}-${LOWER_TYPE}.aab" \ - "$ARTIFACTS_DIR/app-${LOWER_FLAVOR}-${ABI}-${LOWER_TYPE}.aab" || echo "AAB not found" + -PYUZU_ANDROID_ARGS="$*" \ + --info if [ -n "${ANDROID_KEYSTORE_B64}" ]; then rm "${ANDROID_KEYSTORE_FILE}" @@ -137,4 +118,4 @@ fi echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}" -ls -l "${ARTIFACTS_DIR}/" \ No newline at end of file +ls -l "${ARTIFACTS_DIR}/" diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index 6d1bdb4e93..87d815c92c 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -4,11 +4,11 @@ // SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -import android.annotation.SuppressLint +// import android.annotation.SuppressLint import kotlin.collections.setOf import org.jlleitschuh.gradle.ktlint.reporter.ReporterType import com.github.triplet.gradle.androidpublisher.ReleaseStatus -import org.gradle.api.tasks.bundling.AbstractArchiveTask +import org.gradle.api.tasks.Copy plugins { id("com.android.application") @@ -86,15 +86,9 @@ android { *extraCMakeArgs.toTypedArray() ) ) - } - } - } - splits { - abi { - isEnable = true - reset() - include("arm64-v8a", "x86_64") + abiFilters("arm64-v8a") + } } } @@ -165,12 +159,20 @@ android { create("mainline") { dimension = "version" resValue("string", "app_name_suffixed", "Eden") + + ndk { + abiFilters += listOf("arm64-v8a") + } } create("genshinSpoof") { dimension = "version" resValue("string", "app_name_suffixed", "Eden Optimized") applicationId = "com.miHoYo.Yuanshen" + + ndk { + abiFilters += listOf("arm64-v8a") + } } create("legacy") { @@ -189,6 +191,25 @@ android { res.srcDirs("src/main/legacy") } } + + ndk { + abiFilters += listOf("arm64-v8a") + } + } + + create("chromeOS") { + dimension = "version" + resValue("string", "app_name_suffixed", "Eden") + + ndk { + abiFilters += listOf("x86_64") + } + + externalNativeBuild { + cmake { + abiFilters("x86_64") + } + } } } @@ -323,3 +344,35 @@ fun getGitVersion(): String { } return versionName.ifEmpty { "0.0" } } + +afterEvaluate { + val artifactsDir = layout.projectDirectory.dir("../../../artifacts") + val outputsDir = layout.buildDirectory.dir("outputs").get() + + android.applicationVariants.forEach { variant -> + val variantName = variant.name + val variantTask = variantName.replaceFirstChar { it.uppercaseChar() } + + val flavor = variant.flavorName + val type = variant.buildType.name + + val baseName = "app-$flavor-$type" + + val apkFile = outputsDir.file("apk/$flavor/$type/$baseName.apk") + val aabFile = outputsDir.file("bundle/$variantName/$baseName.aab") + + val taskName = "copy${variantTask}Outputs" + + tasks.register(taskName) { + group = "publishing" + description = "Copy APK and AAB for $variantName to $artifactsDir" + + from(apkFile) + from(aabFile) + into(artifactsDir) + + dependsOn("assemble${variantTask}") + dependsOn("bundle${variantTask}") + } + } +}