React Native Android USB串口开发构建失败问题求助
React Native Android USB串口编译错误解决方法
1. 解决编译SDK版本问题
错误提示明确要求将compileSdkVersion设置为30或更高,操作步骤:
- 打开项目根目录下的
android/build.gradle文件 - 在
buildscript.ext块中修改compileSdkVersion为30及以上版本(推荐使用33,适配最新Android版本),同时可同步调整targetSdkVersion:buildscript { ext { compileSdkVersion = 33 minSdkVersion = 21 targetSdkVersion = 33 // 其他原有配置保持不变 } } - 检查
android/app/build.gradle中的compileSdkVersion是否与根目录配置一致,确保同步。
2. 更换维护活跃的串口库
若原react-native-serialport库存在兼容性问题,推荐使用react-native-usb-serial(社区维护更活跃):
- 安装依赖:
npm install react-native-usb-serial --save - 在
AndroidManifest.xml中添加USB权限:<uses-feature android:name="android.hardware.usb.host" /> <uses-permission android:name="android.permission.USB_PERMISSION" />
3. 修正串口操作逻辑
串口操作需先获取权限、打开设备,再进行数据监听,示例代码:
import React, { useEffect } from 'react'; import { View, Text, PermissionsAndroid } from 'react-native'; import UsbSerial from 'react-native-usb-serial'; const App = () => { useEffect(() => { const setupSerialConnection = async () => { // 请求USB权限 const permissionGranted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.USB_PERMISSION ); if (permissionGranted !== PermissionsAndroid.RESULTS.GRANTED) return; // 获取已连接的USB串口设备 const connectedDevices = await UsbSerial.listDevices(); if (connectedDevices.length === 0) return; // 打开第一个设备,配置波特率(根据实际设备调整) await UsbSerial.openDevice(connectedDevices[0], { baudRate: 9600 }); // 监听串口数据 UsbSerial.addListener('data', (receivedData) => { console.log('Received data:', receivedData); }); }; setupSerialConnection(); // 组件卸载时关闭设备 return () => { UsbSerial.closeDevice(); }; }, []); return ( <View> <Text>Serial Reader</Text> </View> ); }; export default App;
4. 清理缓存重新构建
修改配置后执行以下命令清理缓存并重新编译:
cd android ./gradlew clean cd .. npx react-native run-android
内容的提问来源于stack exchange,提问作者adys 541
相关产品推荐
相关产品推荐

