在终端中进入taro项目的根目录下,执行npm install react-native-device-info,然后执行react-native link react-native-device-info,同样,在终端中进入taro壳子(taro-native-shell)的根目录下执行npm install react-native-device-info和react-native link react-native-device-info。再通过相同的步骤添加react-native-imei包。
然后在项目终端下执行npm run dev:rn,等执行完成,再打开一个新的终端,进入到taro壳子(taro-native-shell)的根目录下执行react-native run-android,发现终端报错
这个问题,终端中已经给出了解决方法,在taro壳子taro-native-shell/android/app/src/main/AndroidManifest.xml文件中的application标签下添加以下代码
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
tools:replace="android:appComponentFactory"
继续在壳子中执行react-native run-android,终端继续报错
通过终端的报错可以得知又是AndroidX适配的问题,也就是引入的react-native-imei和react-native-device-info两个包中有做了AndroidX适配的。找到壳子中的node-modules文件下的react-native-device-info包,找到CHANGELOG.md文件
搜索androidx
为了保险起见,需要更改版本到2.1.1,然后在终端中执行npm install react-native-device-info@2.1.1;react-native link react-native-device-info。再执行运行的命令,终端报错
依然是Android x适配问题,找到taro-native-shell/react-native-device-info包下的build.gradle文件,引用的第三方包如下:
这几个依赖包中,应该是com.google.android.gms:play-services-gcm的问题(为啥这么认为呢,底下的三个依赖包懂Android的应该都知道是没有适配Android X的,而第一个依赖包,其他的包或者taro下的Android 中也引用了,没有报过Android x适配的问题)。
把引用的版本号修改成15.0.1
implementation"com.google.android.gms:play-services-gcm:15.0.1"
重新运行,不再报错,可在taro中使用DeviceInfo类的方法了
通过测试验证,ios手机可以通过该插件获取到deviceinfo。
网友评论