Browse Source

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 <crueter@eden-emu.dev>
pull/3086/head
crueter 3 weeks ago
parent
commit
f4fcb474e9
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 41
      .ci/android/build.sh
  2. 73
      src/android/app/build.gradle.kts

41
.ci/android/build.sh

@ -12,7 +12,7 @@ RETURN=0
usage() { usage() {
cat <<EOF cat <<EOF
Usage: $0 [-c|--chromeos] [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
Usage: $0 [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
[-h|--help] [-r|--release] [extra options] [-h|--help] [-r|--release] [extra options]
Build script for Android. Build script for Android.
@ -21,12 +21,10 @@ and will apply both to this script and the packaging script.
bool values are "true" or "false" bool values are "true" or "false"
Options: Options:
-c, --chromeos Build for ChromeOS (x86_64) (variable: CHROMEOS, bool)
Default: false
-r, --release Enable update checker. If set, sets the DEVEL bool variable to false. -r, --release Enable update checker. If set, sets the DEVEL bool variable to false.
By default, DEVEL is true. By default, DEVEL is true.
-t, --target <FLAVOR> Build flavor (variable: TARGET) -t, --target <FLAVOR> Build flavor (variable: TARGET)
Valid values are: legacy, optimized, standard
Valid values are: legacy, optimized, standard, chromeos
Default: standard Default: standard
-b, --build-type <TYPE> Build type (variable: TYPE) -b, --build-type <TYPE> Build type (variable: TYPE)
Valid values are: Release, RelWithDebInfo, Debug Valid values are: Release, RelWithDebInfo, Debug
@ -60,7 +58,6 @@ type() {
while true; do while true; do
case "$1" in case "$1" in
-c|--chromeos) CHROMEOS=true ;;
-r|--release) DEVEL=false ;; -r|--release) DEVEL=false ;;
-t|--target) target "$2"; shift ;; -t|--target) target "$2"; shift ;;
-b|--build-type) type "$2"; shift ;; -b|--build-type) type "$2"; shift ;;
@ -71,16 +68,17 @@ while true; do
shift shift
done done
: "${CHROMEOS:=false}"
: "${TARGET:=standard}" : "${TARGET:=standard}"
: "${TYPE:=Release}" : "${TYPE:=Release}"
: "${DEVEL:=true}" : "${DEVEL:=true}"
case "$TARGET" in
TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]')
case "$TARGET_LOWER" in
legacy) FLAVOR=Legacy ;; legacy) FLAVOR=Legacy ;;
optimized) FLAVOR=GenshinSpoof ;; optimized) FLAVOR=GenshinSpoof ;;
standard) FLAVOR=Mainline ;; standard) FLAVOR=Mainline ;;
chromeos) FLAVOR=Mainline; CHROMEOS=true ;;
chromeos) FLAVOR=ChromeOS ;;
*) die "Invalid build flavor $TARGET." *) die "Invalid build flavor $TARGET."
esac esac
@ -104,32 +102,15 @@ chmod +x ./gradlew
set -- "$@" -DUSE_CCACHE="${CCACHE}" set -- "$@" -DUSE_CCACHE="${CCACHE}"
[ "$DEVEL" != "true" ] && set -- "$@" -DENABLE_UPDATE_CHECKER=ON [ "$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.caching="${CCACHE}" \
-Dorg.gradle.parallel="${CCACHE}" \ -Dorg.gradle.parallel="${CCACHE}" \
-Dorg.gradle.workers.max="${NUM_JOBS}" \ -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 if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
rm "${ANDROID_KEYSTORE_FILE}" rm "${ANDROID_KEYSTORE_FILE}"
@ -137,4 +118,4 @@ fi
echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}" echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}"
ls -l "${ARTIFACTS_DIR}/"
ls -l "${ARTIFACTS_DIR}/"

73
src/android/app/build.gradle.kts

@ -4,11 +4,11 @@
// SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project // SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
import android.annotation.SuppressLint
// import android.annotation.SuppressLint
import kotlin.collections.setOf import kotlin.collections.setOf
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType import org.jlleitschuh.gradle.ktlint.reporter.ReporterType
import com.github.triplet.gradle.androidpublisher.ReleaseStatus import com.github.triplet.gradle.androidpublisher.ReleaseStatus
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.api.tasks.Copy
plugins { plugins {
id("com.android.application") id("com.android.application")
@ -86,15 +86,9 @@ android {
*extraCMakeArgs.toTypedArray() *extraCMakeArgs.toTypedArray()
) )
) )
}
}
}
splits {
abi {
isEnable = true
reset()
include("arm64-v8a", "x86_64")
abiFilters("arm64-v8a")
}
} }
} }
@ -165,12 +159,20 @@ android {
create("mainline") { create("mainline") {
dimension = "version" dimension = "version"
resValue("string", "app_name_suffixed", "Eden") resValue("string", "app_name_suffixed", "Eden")
ndk {
abiFilters += listOf("arm64-v8a")
}
} }
create("genshinSpoof") { create("genshinSpoof") {
dimension = "version" dimension = "version"
resValue("string", "app_name_suffixed", "Eden Optimized") resValue("string", "app_name_suffixed", "Eden Optimized")
applicationId = "com.miHoYo.Yuanshen" applicationId = "com.miHoYo.Yuanshen"
ndk {
abiFilters += listOf("arm64-v8a")
}
} }
create("legacy") { create("legacy") {
@ -189,6 +191,25 @@ android {
res.srcDirs("src/main/legacy") 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" } 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<Copy>(taskName) {
group = "publishing"
description = "Copy APK and AAB for $variantName to $artifactsDir"
from(apkFile)
from(aabFile)
into(artifactsDir)
dependsOn("assemble${variantTask}")
dependsOn("bundle${variantTask}")
}
}
}
Loading…
Cancel
Save