你可以使用react-native CLI创建项目,而不是使用expo。
使用以下命令创建新项目:
react-native init Myproject
cd Myproject
使用以下命令运行项目:
react-native run-android
那么您可以使用 react-native-device-info 包。
我尝试了以下版本,对我来说可行。
"react": "16.0.0",
"react-native": "0.50.4",
"react-native-device-info": "^0.12.1",
我用命令安装了它:
npm install --save react-native-device-info
然后我使用命令将其链接:
react-native link react-native-device-info
如果在链接软件包时遇到任何问题,您可以手动进行链接,或者可以交叉检查软件包是否已成功链接。
- 在android/app/build.gradle文件中:
dependencies {
...
compile "com.facebook.react:react-native:+"
+ compile project(':react-native-device-info')
}
- 在android/settings.gradle中:
...
包含 ':app'
包含 ':react-native-device-info'
project(':react-native-device-info').projectDir = new File(rootProject.projectDir,
'../node_modules/react-native-device-info/android')
- 在MainApplication.java中:
+ import com.learnium.RNDeviceInfo.RNDeviceInfo;
public class MainApplication extends Application implements ReactApplication {
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
+ new RNDeviceInfo(),
new MainReactPackage()
);
}
......
}
权限
在AndroidManifest.xml中添加适当的可选权限:
...
<uses-permission android:name="android.permission.BLUETOOTH"/> <!-- for Device Name -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- for Phone Number -->
示例
var DeviceInfo = require('react-native-device-info');
var deviceId = DeviceInfo.getUniqueID();
您可以使用以上设备ID。
link
命令吗? - LYureact-native run-ios
,它会解决问题,因为你正在使用Yarn,也许也可以尝试这样做。 - LYu