expo-duooomi-app/scripts/patch-ble-plx.js

29 lines
1.3 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '..', 'node_modules', 'react-native-ble-plx', 'android', 'src', 'main', 'java', 'com', 'bleplx', 'BlePlxModule.java');
console.log('正在修复 react-native-ble-plx 的 Android 崩溃问题...');
try {
let content = fs.readFileSync(filePath, 'utf8');
// 替换所有的 safePromise.reject(null, errorConverter.toJs(error))
const originalPattern = 'safePromise.reject(null, errorConverter.toJs(error));';
const fixedPattern = 'safePromise.reject(error.errorCode.name(), errorConverter.toJs(error));';
const beforeCount = (content.match(/safePromise\.reject\(null, errorConverter\.toJs\(error\)\);/g) || []).length;
content = content.replace(/safePromise\.reject\(null, errorConverter\.toJs\(error\)\);/g, fixedPattern);
const afterCount = (content.match(/safePromise\.reject\(error\.errorCode\.name\(\), errorConverter\.toJs\(error\)\);/g) || []).length;
fs.writeFileSync(filePath, content, 'utf8');
console.log(`✅ 成功修复 ${beforeCount} 个实例`);
console.log(`✅ 验证:发现 ${afterCount} 个修复后的实例`);
console.log('现在请运行: bunx patch-package react-native-ble-plx');
} catch (error) {
console.error('❌ 修复失败:', error.message);
process.exit(1);
}