Android CI: run on mac_mini_m2 (linux_x2 not on the billing plan)
The android-apk workflow requested linux_x2, which Codemagic rejected with "selected instance type is not available with the current billing plan". Switch to mac_mini_m2 — the same instance the iOS workflow already uses on this account; Codemagic's macOS images include the Android SDK + JDK. Also make the SDK path (ANDROID_SDK_ROOT -> ANDROID_HOME fallback) and the google-services base64 decode (GNU --decode / BSD -D) portable to the macOS image. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+11
-7
@@ -172,7 +172,9 @@ workflows:
|
|||||||
# needed to test: download the APK artifact from the Codemagic build page (or wire an email/Slack in the
|
# needed to test: download the APK artifact from the Codemagic build page (or wire an email/Slack in the
|
||||||
# UI), sideload it on a phone (enable "Install unknown apps"), and run.
|
# UI), sideload it on a phone (enable "Install unknown apps"), and run.
|
||||||
#
|
#
|
||||||
# Runs on a Linux instance (has the Android SDK + JDK preinstalled) — much cheaper/faster than a Mac.
|
# Runs on the SAME macOS instance as the iOS workflow (mac_mini_m2) — Codemagic's macOS images ship the
|
||||||
|
# Android SDK + JDK too. (A Linux instance would be cheaper/faster but linux_x2 isn't on every billing
|
||||||
|
# plan; mac_mini_m2 is the one this account already uses for iOS.)
|
||||||
#
|
#
|
||||||
# Firebase push (FCM) is OPTIONAL for this test build: app/build.gradle only applies the google-services
|
# Firebase push (FCM) is OPTIONAL for this test build: app/build.gradle only applies the google-services
|
||||||
# plugin when google-services.json is present, so the APK builds fine WITHOUT it (push/call-wake just
|
# plugin when google-services.json is present, so the APK builds fine WITHOUT it (push/call-wake just
|
||||||
@@ -181,7 +183,7 @@ workflows:
|
|||||||
android-apk:
|
android-apk:
|
||||||
name: Biz Connect Android → test APK
|
name: Biz Connect Android → test APK
|
||||||
max_build_duration: 45
|
max_build_duration: 45
|
||||||
instance_type: linux_x2
|
instance_type: mac_mini_m2
|
||||||
environment:
|
environment:
|
||||||
# To enable FCM push later, create a Codemagic variable group holding GOOGLE_SERVICES_JSON (base64 of
|
# To enable FCM push later, create a Codemagic variable group holding GOOGLE_SERVICES_JSON (base64 of
|
||||||
# google-services.json, marked secure) and uncomment the two lines below. Left out for now so the first
|
# google-services.json, marked secure) and uncomment the two lines below. Left out for now so the first
|
||||||
@@ -207,10 +209,11 @@ workflows:
|
|||||||
npx cap sync android
|
npx cap sync android
|
||||||
# App icon + splash from resources/icon.png & resources/splash*.png.
|
# App icon + splash from resources/icon.png & resources/splash*.png.
|
||||||
npx capacitor-assets generate --android || echo "capacitor-assets returned non-zero (see above)"
|
npx capacitor-assets generate --android || echo "capacitor-assets returned non-zero (see above)"
|
||||||
# The generated project points sdk.dir at wherever it was made; overwrite it with the CI SDK path
|
# The generated project points sdk.dir at wherever it was made; overwrite it with the CI SDK path so
|
||||||
# (Codemagic exports ANDROID_SDK_ROOT) so Gradle finds the SDK.
|
# Gradle finds the SDK. Codemagic exports ANDROID_SDK_ROOT (fall back to ANDROID_HOME on macOS images).
|
||||||
echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
SDK="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}"
|
||||||
echo "Android SDK -> $ANDROID_SDK_ROOT"
|
echo "sdk.dir=$SDK" > android/local.properties
|
||||||
|
echo "Android SDK -> $SDK"
|
||||||
# android/ is gitignored and regenerated fresh in CI, so its manifest only has INTERNET. Inject the
|
# android/ is gitignored and regenerated fresh in CI, so its manifest only has INTERNET. Inject the
|
||||||
# camera/mic/notification permissions the web UI needs (mirrors ios-patch.sh for iOS). Tolerant + idempotent.
|
# camera/mic/notification permissions the web UI needs (mirrors ios-patch.sh for iOS). Tolerant + idempotent.
|
||||||
node scripts/android-patch.js android/app/src/main/AndroidManifest.xml
|
node scripts/android-patch.js android/app/src/main/AndroidManifest.xml
|
||||||
@@ -219,7 +222,8 @@ workflows:
|
|||||||
script: |
|
script: |
|
||||||
cd mobile/android/app
|
cd mobile/android/app
|
||||||
if [ -n "$GOOGLE_SERVICES_JSON" ]; then
|
if [ -n "$GOOGLE_SERVICES_JSON" ]; then
|
||||||
echo "$GOOGLE_SERVICES_JSON" | base64 --decode > google-services.json
|
# Portable decode: GNU coreutils uses --decode/-d, BSD/macOS base64 uses -D.
|
||||||
|
echo "$GOOGLE_SERVICES_JSON" | { base64 --decode 2>/dev/null || base64 -D; } > google-services.json
|
||||||
echo "google-services.json written — FCM push enabled in this build"
|
echo "google-services.json written — FCM push enabled in this build"
|
||||||
else
|
else
|
||||||
echo "No GOOGLE_SERVICES_JSON set — building WITHOUT FCM push (fine for a shell/UI test build)"
|
echo "No GOOGLE_SERVICES_JSON set — building WITHOUT FCM push (fine for a shell/UI test build)"
|
||||||
|
|||||||
Reference in New Issue
Block a user