集成React Native到Android问题总结

官方文档

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.()' 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

你可能感兴趣的:(集成React Native到Android问题总结)