1.出现undefined is not an object evaluating ReactInternals.ReactCurrentOwner问题
出现此问题,首先查看使用的 React Native 是否为0.45以上版本,如果是请把react更新到16.0.0-alpha.12,执行命令:
yarn add react@16.0.0-alpha.12或者npm add react@16.0.0-alpha.12(根据自己的管理器来定使用yarn还是npm)
2.Could not get BatchedBridge
出现此问题原因为node 服务没有开启或者tcp端口被占用,采用以下命令解决:
react-native start 或者 npm start
adb reverse tcp:8081 tcp:8081
3.Error:Conflict with dependency ‘com.google.code.findbugs:jsr305’ in project ‘:app’. Resolved versions for app (3.0.0) and test app (2.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
在app的gradle中添加如下代码:
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
4.java.lang.UnsatisfiedLinkError: could find DSO to load:
第一,在项目根目录下的gradle.properties文件最后加上这样一句:
android.useDeprecatedNdk=true
第二、在app module下的build.gradle文件中添加如下内容:
android {
...
defaultConfig {
...
ndk{
abiFilters "armeabi-v7a", "x86"
}
...
}
...
}
第三、找出不兼容的64位so文件并禁止它们
在目录…\ReactNativeWithNativeApp\app\build\outputs\apk下找到app-debug.apk,并把它解压,查看一下,解压后的文件的lib目录下有没有这个目录:
arm64-v8a
如果有这个目录,看看里面的so文件,都是我们要禁止的,禁止的方法如下:假设里面有一个 1.so文件,我们要在app module下的build.gradle文件中做如下修改:
android {
...
defaultConfig {
...
ndk{
abiFilters "armeabi-v7a", "x86"
}
packagingOptions {
exclude "lib/arm64-v8a/1.so"
}
...
}
...
}