From 5b2a7fb0f6f8a118b34fa8a26aab02a4a60d5a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E9=A3=8E=E9=80=8D=E9=81=A5=E6=B8=B8?= Date: Sun, 11 Oct 2026 04:39:50 +0800 Subject: [PATCH] fix(android): package the requested emulator ABI --- .github/scripts/test-sdk.sh | 3 ++- platform/android/apk/app/build.gradle.kts | 4 +++- scripts/tests/test_mobile_sdk_release_gates.py | 7 +++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/scripts/test-sdk.sh b/.github/scripts/test-sdk.sh index 988363d4..70e0a71c 100755 --- a/.github/scripts/test-sdk.sh +++ b/.github/scripts/test-sdk.sh @@ -97,7 +97,8 @@ EOF printf 'sdk.dir=%s\n' "$ANDROID_SDK" > "$TEMPLATE/local.properties" echo "== [test-sdk] assembling APK from $TEMPLATE ==" - if ! ( cd "$TEMPLATE" && bash gradlew :app:assembleDebug --no-daemon --console=plain ) \ + if ! ( cd "$TEMPLATE" && bash gradlew :app:assembleDebug \ + -PevengineAbi="$ANDROID_PACKAGE_ABI" --no-daemon --console=plain ) \ >"$WORK/apk-build.log" 2>&1; then tail -n 40 "$WORK/apk-build.log" fail "gradle assembleDebug failed" diff --git a/platform/android/apk/app/build.gradle.kts b/platform/android/apk/app/build.gradle.kts index c7c80797..5c13f976 100644 --- a/platform/android/apk/app/build.gradle.kts +++ b/platform/android/apk/app/build.gradle.kts @@ -2,6 +2,8 @@ plugins { id("com.android.application") } +val evengineAbi = providers.gradleProperty("evengineAbi").getOrElse("arm64-v8a") + android { namespace = "com.evengine.example" compileSdk = 34 @@ -16,7 +18,7 @@ android { versionName = "0.5.2" ndk { - abiFilters += listOf("arm64-v8a") + abiFilters += listOf(evengineAbi) } } diff --git a/scripts/tests/test_mobile_sdk_release_gates.py b/scripts/tests/test_mobile_sdk_release_gates.py index 61d3bcae..d729a212 100644 --- a/scripts/tests/test_mobile_sdk_release_gates.py +++ b/scripts/tests/test_mobile_sdk_release_gates.py @@ -11,6 +11,7 @@ APK_RUNNER = ROOT / ".github" / "scripts" / "run-consumer-apks.sh" CONSUMER_TEST = ROOT / ".github" / "scripts" / "consumer-test.sh" SDK_INSTALL = ROOT / "cmake" / "install_sdk.cmake" THIRD_PARTY_BUILD = ROOT / "cmake" / "third_party_build.cmake" +ANDROID_GRADLE = ROOT / "platform" / "android" / "apk" / "app" / "build.gradle.kts" def job_block(workflow: str, job: str, next_job: str | None = None) -> str: @@ -30,6 +31,7 @@ class MobileSdkReleaseGateTests(unittest.TestCase): cls.consumer_test = CONSUMER_TEST.read_text(encoding="utf-8") cls.sdk_install = SDK_INSTALL.read_text(encoding="utf-8") cls.third_party_build = THIRD_PARTY_BUILD.read_text(encoding="utf-8") + cls.android_gradle = ANDROID_GRADLE.read_text(encoding="utf-8") def test_android_emulator_is_a_hard_gate_for_every_consumer_host(self) -> None: block = job_block(self.workflow, "run-android", "ios-sim") @@ -81,6 +83,11 @@ class MobileSdkReleaseGateTests(unittest.TestCase): self.assertIn('ANDROID_ABI MATCHES "^x86(_64)?$"', self.third_party_build) self.assertIn("-DALSOFT_CPUEXT_NEON=OFF", self.third_party_build) + def test_android_apk_abi_is_overridable_for_native_emulator_gate(self) -> None: + self.assertIn('gradleProperty("evengineAbi").getOrElse("arm64-v8a")', self.android_gradle) + self.assertIn('abiFilters += listOf(evengineAbi)', self.android_gradle) + self.assertIn('-PevengineAbi="$ANDROID_PACKAGE_ABI"', self.sdk_test) + if __name__ == "__main__": unittest.main()