From ef4224a52db04bc9a7e2c587694875f92d492479 Mon Sep 17 00:00:00 2001 From: Gustavo Cortez Date: Tue, 9 Jun 2026 18:00:23 -0300 Subject: [PATCH] Fix: Check ABI filters before build for old Android devices --- scripts/check-abi-filters.js | 52 ++++++++++++++++++++++++++++++++++++ scripts/postinstall.sh | 1 + 2 files changed, 53 insertions(+) create mode 100644 scripts/check-abi-filters.js diff --git a/scripts/check-abi-filters.js b/scripts/check-abi-filters.js new file mode 100644 index 0000000000..a7245afc8b --- /dev/null +++ b/scripts/check-abi-filters.js @@ -0,0 +1,52 @@ +// scripts/check-abi-filters.js +const fs = require('fs'); +const path = require('path'); + +const gradlePath = path.join(process.cwd(), 'android', 'app', 'build.gradle'); +const gradleLines = fs.readFileSync(gradlePath, 'utf8').split('\n'); + +const propsPath = path.join(process.cwd(), 'android', 'gradle.properties'); +const propsLines = fs.readFileSync(propsPath, 'utf8').split('\n'); + +const checks = [ + { + file: 'android/app/build.gradle', + description: 'reactNativeArchitectures() default return', + lines: gradleLines, + match: line => + line.includes('return value ? value.split') && + line.includes('armeabi-v7a'), + }, + { + file: 'android/app/build.gradle', + description: 'ndk { abiFilters }', + lines: gradleLines, + match: line => line.includes('abiFilters') && line.includes('armeabi-v7a'), + }, + { + file: 'android/app/build.gradle', + description: 'versionCodes map', + lines: gradleLines, + match: line => + line.includes('def versionCodes') && line.includes('armeabi-v7a'), + }, + { + file: 'android/gradle.properties', + description: 'reactNativeArchitectures property', + lines: propsLines, + match: line => + line.replace(/\s/g, '').startsWith('reactNativeArchitectures=') && + line.includes('armeabi-v7a'), + }, +]; + +const failed = checks.filter(check => !check.lines.some(check.match)); + +if (failed.length > 0) { + console.error('\narmeabi-v7a is missing in:'); + failed.forEach(c => console.error(` - ${c.file} → ${c.description}`)); + console.error('\n See PR #2078 for reference\n'); + process.exit(1); +} + +console.log(`ABI filters check passed (${checks.length}/${checks.length})`); diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh index 68d873062d..06f9436b54 100755 --- a/scripts/postinstall.sh +++ b/scripts/postinstall.sh @@ -5,3 +5,4 @@ node ./scripts/mute-require-cycle-warnings.js node ./scripts/multi-modal-patch.js node ./scripts/git-commit-hash.js node ./scripts/generate-dkls-vendor.js +node ./scripts/check-abi-filters.js