Skip to content

Commit fbc08a6

Browse files
sethkfmantommasini
andauthored
fix: disable fingerprint, repack, cache restore for Android E2E & revert Expo Updates cp-7.59.0 (#22349)
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** - Disables fingerprinting and caching - Cache builds are hiding numerous errors in the system. This needs to be audited and reconfigured with both the @metamask-mobile-platform and DevOps team - Minor update to make sure test apks are generated for release builds - Caused due to a pipeline update failure masked by cache builds - Revert of Expo Updates #17431 - Causing Android build failure (Platform team will investigate) <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: ## **Related issues** Fixes: ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Disables Android E2E fingerprint/cache/repack, adds reliable test APK handling, and removes Expo Updates/OTA across app, iOS, and dependencies. > > - **CI/Build (Android E2E)** > - Disable fingerprint generation, APK cache restore, and repack steps in `.github/workflows/build-android-e2e.yml`. > - Ensure test APKs are built and uploaded; add AAB upload (non-blocking). > - New E2E build path in `scripts/build.sh` with GitHub-optimized Gradle props, retry, and output verification; wired for `main`/`flask` and legacy `releaseE2E`. > - Add default `testBinaryPath` fallbacks in `.detoxrc.js` for all Android variants. > - Tune CI Gradle settings in `android/gradle.properties.github` (lower heap/workers, disable VFS watch, x86_64 arch). > - **Remove Expo Updates/OTA** > - Delete OTA/updates files: `ota.config.js`, `app/constants/ota.ts`, `app/__mocks__/expo-updates.ts`, `ios/Expo.plist`, `scripts/update-expo-channel.js`. > - Strip OTA/updates UI and logic from `app/components/Views/Settings/AppInformation/index.js` and `index.js` (remove `expo-asset`). > - Remove mocks mapping from `jest.config.js`. > - Simplify `app.config.js` (remove updates/runtime config; keep core plugins only). > - Clean `ios/Podfile`/`Podfile.lock` to drop `expo-updates`/related pods; remove `Expo.plist` references in Xcode project. > - Drop `expo-asset` and `expo-updates` from `package.json`; update to `7.60.0`; lockfile pruned accordingly. > - **Misc** > - Update `CODEOWNERS` (remove `scripts/update-expo-channel.js`; add card slice path). > - Remove unused env var from `.js.env.example`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 0adea28. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: tommasini <tommasini15@gmail.com>
1 parent dd20380 commit fbc08a6

File tree

21 files changed

+158
-684
lines changed

21 files changed

+158
-684
lines changed

.detoxrc.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,25 +132,25 @@ module.exports = {
132132
'android.debug': {
133133
type: 'android.apk',
134134
binaryPath: process.env.PREBUILT_ANDROID_APK_PATH || 'android/app/build/outputs/apk/prod/debug/app-prod-debug.apk',
135-
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH,
135+
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH || 'android/app/build/outputs/apk/androidTest/prod/debug/app-prod-debug-androidTest.apk',
136136
build: 'export CONFIGURATION="Debug" && yarn build:android:main:e2e',
137137
},
138138
'android.release': {
139139
type: 'android.apk',
140140
binaryPath: process.env.PREBUILT_ANDROID_APK_PATH || 'android/app/build/outputs/apk/prod/release/app-prod-release.apk',
141-
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH,
141+
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH || 'android/app/build/outputs/apk/androidTest/prod/release/app-prod-release-androidTest.apk',
142142
build: `export CONFIGURATION="Release" && yarn build:android:main:e2e`,
143143
},
144144
'android.flask.debug': {
145145
type: 'android.apk',
146146
binaryPath: process.env.PREBUILT_ANDROID_APK_PATH || 'android/app/build/outputs/apk/flask/debug/app-flask-debug.apk',
147-
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH,
147+
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH || 'android/app/build/outputs/apk/androidTest/flask/debug/app-flask-debug-androidTest.apk',
148148
build: 'export CONFIGURATION="Debug" && yarn build:android:flask:e2e',
149149
},
150150
'android.flask.release': {
151151
type: 'android.apk',
152152
binaryPath: process.env.PREBUILT_ANDROID_APK_PATH || 'android/app/build/outputs/apk/flask/release/app-flask-release.apk',
153-
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH,
153+
testBinaryPath: process.env.PREBUILT_ANDROID_TEST_APK_PATH || 'android/app/build/outputs/apk/androidTest/flask/release/app-flask-release-androidTest.apk',
154154
build: `export CONFIGURATION="Release" && yarn build:android:flask:e2e`,
155155
},
156156
},

.github/CODEOWNERS

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ app/core/Engine/types.ts @MetaMask/mobile-pla
4242
app/core/Engine/controllers/remote-feature-flag-controller/ @MetaMask/mobile-platform
4343
app/core/DeeplinkManager @MetaMask/mobile-platform
4444
scripts/build.sh @MetaMask/mobile-platform
45-
scripts/update-expo-channel.js @MetaMask/mobile-admins
4645

4746
# Platform & Snaps Code Fencing File
4847
metro.transform.js @MetaMask/mobile-platform @MetaMask/core-platform

.github/workflows/build-android-e2e.yml

Lines changed: 83 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ jobs:
7272
echo "🚀 Setting up project..."
7373
yarn setup:github-ci --no-build-ios
7474
75-
# Generate fingerprint AFTER setup but BEFORE any build modifications (the fingerprint now is fake we do not want the cached apk)
76-
- name: Generate current fingerprint
77-
id: generate-fingerprint
78-
run: |
79-
FINGERPRINT=$(yarn fingerprint:generate)
80-
echo "fingerprint=$FINGERPRINT" >> "$GITHUB_OUTPUT"
81-
echo "Current fingerprint: ${FINGERPRINT}"
75+
# # Generate fingerprint AFTER setup but BEFORE any build modifications (the fingerprint now is fake we do not want the cached apk)
76+
# - name: Generate current fingerprint
77+
# id: generate-fingerprint
78+
# run: |
79+
# FINGERPRINT=$(yarn fingerprint:generate)
80+
# echo "fingerprint=$FINGERPRINT" >> "$GITHUB_OUTPUT"
81+
# echo "Current fingerprint: ${FINGERPRINT}"
8282

8383
- name: Determine target paths and Artifact Names
8484
id: determine-target-paths
@@ -102,26 +102,25 @@ jobs:
102102
exit 1
103103
fi
104104
105-
- name: Check and restore cached APKs if Fingerprint is found
106-
id: apk-cache-restore
107-
uses: cirruslabs/cache@v4
108-
with:
109-
path: |
110-
${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
111-
${{ steps.determine-target-paths.outputs.test-apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}-androidTest.apk
112-
${{ steps.determine-target-paths.outputs.aab-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.aab
113-
# Include Gradle properties in key to force rebuild when properties change
114-
# Keep the `hashFiles` call for Gradle config in-sync with these steps:
115-
# - "Cache Gradle dependencies"
116-
# - "Cache build artifacts"
117-
key: android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-${{ steps.generate-fingerprint.outputs.fingerprint }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
118-
restore-keys: |
119-
android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-
120-
android-apk-
105+
# - name: Check and restore cached APKs if Fingerprint is found
106+
# id: apk-cache-restore
107+
# uses: cirruslabs/cache@v4
108+
# with:
109+
# path: |
110+
# ${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
111+
# ${{ steps.determine-target-paths.outputs.test-apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}-androidTest.apk
112+
# ${{ steps.determine-target-paths.outputs.aab-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.aab
113+
# # Include Gradle properties in key to force rebuild when properties change
114+
# # Keep the `hashFiles` call for Gradle config in-sync with these steps:
115+
# # - "Cache Gradle dependencies"
116+
# # - "Cache build artifacts"
117+
# key: android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-${{ steps.generate-fingerprint.outputs.fingerprint }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
118+
# restore-keys: |
119+
# android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-
120+
# android-apk-
121121

122122
- name: Cache Gradle dependencies
123123
uses: cirruslabs/cache@v4
124-
if: ${{ steps.apk-cache-restore.outputs.cache-hit != 'true' }}
125124
env:
126125
GRADLE_CACHE_VERSION: 1
127126
with:
@@ -134,7 +133,6 @@ jobs:
134133
key: gradle-${{ env.GRADLE_CACHE_VERSION }}-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
135134

136135
- name: Build Android E2E APKs
137-
if: ${{ steps.apk-cache-restore.outputs.cache-hit != 'true' }}
138136
run: |
139137
echo "🏗 Building Android E2E APKs..."
140138
export NODE_OPTIONS="--max-old-space-size=8192"
@@ -183,68 +181,68 @@ jobs:
183181
GOOGLE_SERVICES_B64_ANDROID: ${{ secrets.GOOGLE_SERVICES_B64_ANDROID }}
184182
MM_INFURA_PROJECT_ID: ${{ secrets.MM_INFURA_PROJECT_ID }}
185183

186-
- name: Repack APK with JS updates using @expo/repack-app
187-
if: ${{ steps.apk-cache-restore.outputs.cache-hit == 'true' }}
188-
run: |
189-
echo "📦 Repacking APK with updated JavaScript bundle using @expo/repack-app..."
190-
# Use the optimized repack script which uses @expo/repack-app
191-
yarn build:repack:android
192-
echo "📦 Final APK size: $(du -h "${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk" | cut -f1)"
193-
env:
194-
PLATFORM: android
195-
METAMASK_ENVIRONMENT: ${{ inputs.metamask_environment }}
196-
METAMASK_BUILD_TYPE: ${{ inputs.build_type }}
197-
IS_TEST: true
198-
E2E: 'true'
199-
IGNORE_BOXLOGS_DEVELOPMENT: true
200-
GITHUB_CI: 'true'
201-
CI: 'true'
202-
NODE_OPTIONS: '--max-old-space-size=8192'
203-
BRIDGE_USE_DEV_APIS: 'true'
204-
RAMP_INTERNAL_BUILD: 'true'
205-
SEEDLESS_ONBOARDING_ENABLED: 'true'
206-
MM_NOTIFICATIONS_UI_ENABLED: 'true'
207-
MM_SECURITY_ALERTS_API_ENABLED: 'true'
208-
MM_REMOVE_GLOBAL_NETWORK_SELECTOR: 'true'
209-
FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN: ${{ secrets.FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN }}
210-
FEATURES_ANNOUNCEMENTS_SPACE_ID: ${{ secrets.FEATURES_ANNOUNCEMENTS_SPACE_ID }}
211-
SEGMENT_WRITE_KEY_QA: ${{ secrets.SEGMENT_WRITE_KEY_QA }}
212-
SEGMENT_WRITE_KEY_FLASK: ${{ secrets.SEGMENT_WRITE_KEY_FLASK }}
213-
SEGMENT_PROXY_URL_QA: ${{ secrets.SEGMENT_PROXY_URL_QA }}
214-
SEGMENT_PROXY_URL_FLASK: ${{ secrets.SEGMENT_PROXY_URL_FLASK }}
215-
SEGMENT_DELETE_API_SOURCE_ID_QA: ${{ secrets.SEGMENT_DELETE_API_SOURCE_ID_QA }}
216-
SEGMENT_DELETE_API_SOURCE_ID_FLASK: ${{ secrets.SEGMENT_DELETE_API_SOURCE_ID_FLASK }}
217-
SEGMENT_REGULATIONS_ENDPOINT_QA: ${{ secrets.SEGMENT_REGULATIONS_ENDPOINT_QA }}
218-
SEGMENT_REGULATIONS_ENDPOINT_FLASK: ${{ secrets.SEGMENT_REGULATIONS_ENDPOINT_FLASK }}
219-
MM_SENTRY_DSN_TEST: ${{ secrets.MM_SENTRY_DSN_TEST }}
220-
MM_SENTRY_AUTH_TOKEN: ${{ secrets.MM_SENTRY_AUTH_TOKEN }}
221-
MAIN_IOS_GOOGLE_CLIENT_ID_UAT: ${{ secrets.MAIN_IOS_GOOGLE_CLIENT_ID_UAT }}
222-
FLASK_IOS_GOOGLE_CLIENT_ID_PROD: ${{ secrets.FLASK_IOS_GOOGLE_CLIENT_ID_PROD }}
223-
MAIN_IOS_GOOGLE_REDIRECT_URI_UAT: ${{ secrets.MAIN_IOS_GOOGLE_REDIRECT_URI_UAT }}
224-
FLASK_IOS_GOOGLE_REDIRECT_URI_PROD: ${{ secrets.FLASK_IOS_GOOGLE_REDIRECT_URI_PROD }}
225-
MAIN_ANDROID_APPLE_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_APPLE_CLIENT_ID_UAT }}
226-
FLASK_ANDROID_APPLE_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_APPLE_CLIENT_ID_PROD }}
227-
MAIN_ANDROID_GOOGLE_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_GOOGLE_CLIENT_ID_UAT }}
228-
FLASK_ANDROID_GOOGLE_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_GOOGLE_CLIENT_ID_PROD }}
229-
MAIN_ANDROID_GOOGLE_SERVER_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_GOOGLE_SERVER_CLIENT_ID_UAT }}
230-
FLASK_ANDROID_GOOGLE_SERVER_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_GOOGLE_SERVER_CLIENT_ID_PROD }}
231-
GOOGLE_SERVICES_B64_IOS: ${{ secrets.GOOGLE_SERVICES_B64_IOS }}
232-
GOOGLE_SERVICES_B64_ANDROID: ${{ secrets.GOOGLE_SERVICES_B64_ANDROID }}
233-
MM_INFURA_PROJECT_ID: ${{ secrets.MM_INFURA_PROJECT_ID }}
184+
# - name: Repack APK with JS updates using @expo/repack-app
185+
# if: ${{ steps.apk-cache-restore.outputs.cache-hit == 'true' }}
186+
# run: |
187+
# echo "📦 Repacking APK with updated JavaScript bundle using @expo/repack-app..."
188+
# # Use the optimized repack script which uses @expo/repack-app
189+
# yarn build:repack:android
190+
# echo "📦 Final APK size: $(du -h "${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk" | cut -f1)"
191+
# env:
192+
# PLATFORM: android
193+
# METAMASK_ENVIRONMENT: ${{ inputs.metamask_environment }}
194+
# METAMASK_BUILD_TYPE: ${{ inputs.build_type }}
195+
# IS_TEST: true
196+
# E2E: 'true'
197+
# IGNORE_BOXLOGS_DEVELOPMENT: true
198+
# GITHUB_CI: 'true'
199+
# CI: 'true'
200+
# NODE_OPTIONS: '--max-old-space-size=8192'
201+
# BRIDGE_USE_DEV_APIS: 'true'
202+
# RAMP_INTERNAL_BUILD: 'true'
203+
# SEEDLESS_ONBOARDING_ENABLED: 'true'
204+
# MM_NOTIFICATIONS_UI_ENABLED: 'true'
205+
# MM_SECURITY_ALERTS_API_ENABLED: 'true'
206+
# MM_REMOVE_GLOBAL_NETWORK_SELECTOR: 'true'
207+
# FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN: ${{ secrets.FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN }}
208+
# FEATURES_ANNOUNCEMENTS_SPACE_ID: ${{ secrets.FEATURES_ANNOUNCEMENTS_SPACE_ID }}
209+
# SEGMENT_WRITE_KEY_QA: ${{ secrets.SEGMENT_WRITE_KEY_QA }}
210+
# SEGMENT_WRITE_KEY_FLASK: ${{ secrets.SEGMENT_WRITE_KEY_FLASK }}
211+
# SEGMENT_PROXY_URL_QA: ${{ secrets.SEGMENT_PROXY_URL_QA }}
212+
# SEGMENT_PROXY_URL_FLASK: ${{ secrets.SEGMENT_PROXY_URL_FLASK }}
213+
# SEGMENT_DELETE_API_SOURCE_ID_QA: ${{ secrets.SEGMENT_DELETE_API_SOURCE_ID_QA }}
214+
# SEGMENT_DELETE_API_SOURCE_ID_FLASK: ${{ secrets.SEGMENT_DELETE_API_SOURCE_ID_FLASK }}
215+
# SEGMENT_REGULATIONS_ENDPOINT_QA: ${{ secrets.SEGMENT_REGULATIONS_ENDPOINT_QA }}
216+
# SEGMENT_REGULATIONS_ENDPOINT_FLASK: ${{ secrets.SEGMENT_REGULATIONS_ENDPOINT_FLASK }}
217+
# MM_SENTRY_DSN_TEST: ${{ secrets.MM_SENTRY_DSN_TEST }}
218+
# MM_SENTRY_AUTH_TOKEN: ${{ secrets.MM_SENTRY_AUTH_TOKEN }}
219+
# MAIN_IOS_GOOGLE_CLIENT_ID_UAT: ${{ secrets.MAIN_IOS_GOOGLE_CLIENT_ID_UAT }}
220+
# FLASK_IOS_GOOGLE_CLIENT_ID_PROD: ${{ secrets.FLASK_IOS_GOOGLE_CLIENT_ID_PROD }}
221+
# MAIN_IOS_GOOGLE_REDIRECT_URI_UAT: ${{ secrets.MAIN_IOS_GOOGLE_REDIRECT_URI_UAT }}
222+
# FLASK_IOS_GOOGLE_REDIRECT_URI_PROD: ${{ secrets.FLASK_IOS_GOOGLE_REDIRECT_URI_PROD }}
223+
# MAIN_ANDROID_APPLE_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_APPLE_CLIENT_ID_UAT }}
224+
# FLASK_ANDROID_APPLE_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_APPLE_CLIENT_ID_PROD }}
225+
# MAIN_ANDROID_GOOGLE_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_GOOGLE_CLIENT_ID_UAT }}
226+
# FLASK_ANDROID_GOOGLE_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_GOOGLE_CLIENT_ID_PROD }}
227+
# MAIN_ANDROID_GOOGLE_SERVER_CLIENT_ID_UAT: ${{ secrets.MAIN_ANDROID_GOOGLE_SERVER_CLIENT_ID_UAT }}
228+
# FLASK_ANDROID_GOOGLE_SERVER_CLIENT_ID_PROD: ${{ secrets.FLASK_ANDROID_GOOGLE_SERVER_CLIENT_ID_PROD }}
229+
# GOOGLE_SERVICES_B64_IOS: ${{ secrets.GOOGLE_SERVICES_B64_IOS }}
230+
# GOOGLE_SERVICES_B64_ANDROID: ${{ secrets.GOOGLE_SERVICES_B64_ANDROID }}
231+
# MM_INFURA_PROJECT_ID: ${{ secrets.MM_INFURA_PROJECT_ID }}
234232

235233
# Cache build artifacts with the pre-build fingerprint
236-
- name: Cache build artifacts
237-
if: ${{ steps.apk-cache-restore.outputs.cache-hit != 'true' }}
238-
uses: cirruslabs/cache@v4
239-
with:
240-
path: |
241-
${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
242-
${{ steps.determine-target-paths.outputs.test-apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}-androidTest.apk
243-
${{ steps.determine-target-paths.outputs.aab-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.aab
244-
# Keep the `hashFiles` call for Gradle config in-sync with these steps:
245-
# - "Check and restore cached APKs if Fingerprint is found"
246-
# - "Cache Gradle dependencies"
247-
key: android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-${{ steps.generate-fingerprint.outputs.fingerprint }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
234+
# - name: Cache build artifacts
235+
# if: ${{ steps.apk-cache-restore.outputs.cache-hit != 'true' }}
236+
# uses: cirruslabs/cache@v4
237+
# with:
238+
# path: |
239+
# ${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
240+
# ${{ steps.determine-target-paths.outputs.test-apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}-androidTest.apk
241+
# ${{ steps.determine-target-paths.outputs.aab-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.aab
242+
# # Keep the `hashFiles` call for Gradle config in-sync with these steps:
243+
# # - "Check and restore cached APKs if Fingerprint is found"
244+
# # - "Cache Gradle dependencies"
245+
# key: android-apk-${{ inputs.build_type }}-${{ env.CACHE_GENERATION }}-${{ steps.generate-fingerprint.outputs.fingerprint }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
248246

249247
- name: Upload Android APK
250248
id: upload-apk

.js.env.example

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ export WALLET_CONNECT_PROJECT_ID=""
4444
# Default PORT for metro
4545
export WATCHER_PORT=8081
4646

47-
# Expo Project ID for OTA updates
48-
export EXPO_PROJECT_ID=""
49-
5047
# Environment: "production", "pre-release" or "dev"
5148
export METAMASK_ENVIRONMENT="dev"
5249

android/gradle.properties.github

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# GitHub Actions-specific Gradle settings
2-
# High-performance settings for 64GB/16CPU runners
2+
# Optimized for E2E builds on GitHub Actions runners
33

4-
# JVM configuration - high-performance for GitHub Actions
5-
org.gradle.jvmargs=-Xmx32g -XX:MaxMetaspaceSize=2g -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:+UseStringDeduplication -XX:+OptimizeStringConcat
4+
# JVM configuration - balanced settings to avoid OOM while maintaining performance
5+
# Using 16GB heap to leave room for parallel workers and native memory
6+
org.gradle.jvmargs=-Xmx16g -XX:MaxMetaspaceSize=1g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:+UseStringDeduplication -XX:+OptimizeStringConcat
67

7-
# Enable all performance optimizations for GitHub Actions
8+
# Enable performance optimizations but limit parallelism to prevent OOM
89
org.gradle.parallel=true
910
org.gradle.configureondemand=true
1011
org.gradle.caching=true
1112
org.gradle.daemon=true
12-
org.gradle.workers.max=12
13-
org.gradle.vfs.watch=true
13+
org.gradle.workers.max=6
14+
org.gradle.vfs.watch=false
1415

1516
# CI-specific optimizations - enabled for GitHub Actions
1617
kotlin.incremental=true

app.config.js

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
const { RUNTIME_VERSION, PROJECT_ID, UPDATE_URL } = require('./ota.config.js');
2-
31
module.exports = {
42
name: 'MetaMask',
53
displayName: 'MetaMask',
@@ -17,9 +15,7 @@ module.exports = {
1715
'../../node_modules/@notifee/react-native/android/libs',
1816
],
1917
},
20-
ios: {
21-
jsEngine: 'hermes',
22-
},
18+
ios: {},
2319
},
2420
],
2521
[
@@ -40,28 +36,5 @@ module.exports = {
4036
ios: {
4137
bundleIdentifier: 'io.metamask.MetaMask',
4238
usesAppleSignIn: true,
43-
jsEngine: 'hermes',
44-
},
45-
expo: {
46-
owner: 'metamask-test',
47-
runtimeVersion: RUNTIME_VERSION,
48-
updates: {
49-
url: UPDATE_URL,
50-
// Channel is set by requestHeaders, will be overridden with build script
51-
requestHeaders: {
52-
'expo-channel-name': 'preview',
53-
},
54-
},
55-
extra: {
56-
eas: {
57-
projectId: PROJECT_ID,
58-
},
59-
},
60-
android: {
61-
package: 'io.metamask',
62-
},
63-
ios: {
64-
bundleIdentifier: 'io.metamask.MetaMask',
65-
},
6639
},
6740
};

app/__mocks__/expo-updates.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)