官方文档
http://reactnative.cn/docs/0.41/integration-with-existing-apps.html#content
引用的react native版本
这是一个巨坑:
根据官方文档的做法可以添加本地的引用
allprojects {
repositories {
...
maven {
url "$rootDir/../node_modules/react-native/android"
}
}
...
}
但是当时不知怎么了,把本地的引用加到了这里面
buildscript {
repositories {
jcenter()
maven {
url "$rootDir/../node_modules/react-native/android"
}
}
}
导致后面的流程根本没有办法跑通
这是因为在jcenter和本地maven都存在的时候,发现默认引用的是0.2x的版本,导致很多类都对应不上,其实可以通过查看源码的方式去查看使用的react-native的版本号,还有一种就是直接指定react-native的版本号,如何查看使用的版本号呢?
当执行完一些的npm命令后,在文件夹中有一个文件 package.json
仔细找找会看到
"dependencies": {
"react": "^15.4.2",
"react-native": "^0.41.2"
}
找到版本号了吧,直接写死就可以了
compile "com.facebook.react:react-native:0.41.2"
编译版本问题
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.net.ConnectivityManagerCompat.<init>()' is inaccessible to class 'com.facebook.react.modules.netinfo.NetInfoModule'
应该是React Native源码中使用的 v4 包的版本号和工程中使用的版本号不一致导致的,这个也很好解决,找到对应的版本号,改成一致就可以,或者修改 reactNative当中的版本号,或者修改项目中的自己使用的版本号信息,'com.android.support:appcompat-v7:23.0.1'
ip和port设置
如果根据官方文档运行的话,有可能是网络问题,这里我直接写死了
SharedPreferences mPreferneces= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = mPreferneces.edit();
editor.putString("debug_http_host","192.168.1.1:8081"); // 服务器所在的ip地址
editor.commit();
一种修改端口号的方法 react-native start --port 8083