From 22694b720d9c432bd236e0dda05866d0be7cd05e Mon Sep 17 00:00:00 2001 From: Daniel Tamas Date: Wed, 12 Aug 2026 12:27:59 +0200 Subject: [PATCH] ci: unbreak the iOS and Android test-app builds [FEPLAT-5048] Both jobs fail on master today, so every pull request opens with red checks and a real regression would not stand out. - **iOS**: the build step resolved the simulator UDID for a hardcoded `iPhone 16` and exited 1 when the grep found nothing, which is what happens now that the runner image dropped that device. The job only builds and never boots the app, so it takes `-destination 'generic/platform=iOS Simulator'` and stops depending on the image's simulator list. - **Android**: `JetifyTransform` ran out of heap on `hermes-android-0.73.5-debug.aar`. Jetifier rewrites every class of every AAR, and React Native 0.73 and its dependencies are AndroidX already, so the conversion is off. Heap also goes 2g to 4g, since the same job passed on 16 GB runners until recently and one OOM cancels the whole matrix. --- .github/workflows/ios-ci.yml | 10 +++++----- example/android/gradle.properties | 10 +++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ios-ci.yml b/.github/workflows/ios-ci.yml index 46ae130e79..f0410af32f 100644 --- a/.github/workflows/ios-ci.yml +++ b/.github/workflows/ios-ci.yml @@ -23,12 +23,12 @@ jobs: - name: Install Pods run: ${{matrix.extraEnv}} pod install working-directory: example/ios + # The job builds and never boots the app, so it takes the generic + # simulator destination. Naming one device tied this job to whichever + # simulators the runner image happened to ship, and it broke when + # `iPhone 16` left the image. - name: Build iOS test app run: | - device_name='iPhone 16' - device=$(xcrun simctl list devices "${device_name}" available | grep "${device_name} (") - re='\(([-0-9A-Fa-f]+)\)' - [[ $device =~ $re ]] || exit 1 - xcodebuild -workspace WebviewExample.xcworkspace -scheme ReactTestApp -destination "platform=iOS Simulator,id=${BASH_REMATCH[1]}" CODE_SIGNING_ALLOWED=NO COMPILER_INDEX_STORE_ENABLE=NO build + xcodebuild -workspace WebviewExample.xcworkspace -scheme ReactTestApp -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO COMPILER_INDEX_STORE_ENABLE=NO build working-directory: example/ios timeout-minutes: 60 diff --git a/example/android/gradle.properties b/example/android/gradle.properties index ac1b10a723..fcdf4893af 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -11,7 +11,7 @@ # particularly useful for configuring JVM memory settings for build performance. # This does not affect the JVM settings for the Gradle client VM. # The default is `-Xmx512m -XX:MaxMetaspaceSize=256m`. -org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will fork up to org.gradle.workers.max JVMs to execute # projects in parallel. To learn more about parallel task execution, see the @@ -24,8 +24,12 @@ org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryEr # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true +# Automatically convert third-party libraries to use AndroidX. React Native 0.73 +# and its dependencies are AndroidX already, and the conversion rewrites every +# class of every AAR, which is what ran the build out of heap. Run +# `./gradlew checkJetifier` if a future dependency looks like it needs the +# conversion back. +android.enableJetifier=false # Version of Flipper to use with React Native. Default value is whatever React # Native defaults to. To disable Flipper, set it to `false`.