初次编译后apk有1.1M,还算可以接受。 默认依赖的lib如下图所示:
1.app/build.gradle里添加如下代码:
compile ‘com.facebook.react:react-native:0.20.+‘
再次编译后apk竟然有10.3M,太夸张了,我们来看看倒底都是什么占用了这么大的空间,仔细看一下其中包含:
我们一起来认识一下这个库是起什么作用的:
如果原Android项目应用了这些插件,那恭喜你,可以复用了,反之就要算办法精减(我也还在研究)。
2.在MainActivity里添加跳转至ReactNativeActivity的代码(模拟业务场景)
3.添加ReactNativeActivity页面,向里面添加代码(官网那些代码太老了,这个版本是最曼妙的)
4.向AndroidManifest.xml里添加 .ReactNativeActivity 和 com.facebook.react.devsupport.DevSettingsActivity
5.拷贝如下文件夹及文件到Android项目根目录
node_modules(文件夹。从之前 init React Native 项目里拷一份过来。因为 npm install 成功率很低,就算是用taobao的源,也很慢)
.flowconfig (JavaScript 静态类型检查工具配置文件)
.watchmanconfig(Facebook 开发的用来监视文件并且记录文件的改动情况,当文件变更就触发一些操作, 如:Enable Live Reload的功能)
index.android.js(文件。操作方式同上,注意 class 名称与下面 register 时名称要一致)
package.json(文件。操作方式同上,注意文件内容里的 name 和 react-native 版本号)
6.修改如下文件
.gitignore(在该文件里添加排除项,node_modules/ 和 npm-debug.log)
app/build.gradle (将 ‘com.android.support:appcompat-v7:23.2.1‘ 改为 ‘com.android.support:appcompat-v7:23.0.1‘)
gradle.properties (在文件末尾添加,android.useDeprecatedNdk=true)
注意:小坑一个,如果遇到。请按第6项修改,并且要保证 react-native 版本是0.21.0以上
歪果朋友也深受其害,https://github.com/facebook/react-native/issues/6152#issuecomment-200759453
java.lang.IllegalAccessError: Method ‘void android.support.v4.net.ConnectivityManagerCompat.()‘ is inaccessible to class ‘com.facebook.react.modules.netinfo.NetInfoModule‘ (declaration of ‘com.facebook.react.modules.netinfo.NetInfoModule‘ appears in /data/app/package.name-2/base.apk)
at com.facebook.react.modules.netinfo.NetInfoModule.(NetInfoModule.java:55)
at com.facebook.react.shell.MainReactPackage.createNativeModules(MainReactPackage.java:62)
at com.facebook.react.ReactInstanceManagerImpl.processPackage(ReactInstanceManagerImpl.java:751)
at com.facebook.react.ReactInstanceManagerImpl.createReactContext(ReactInstanceManagerImpl.java:688)
at com.facebook.react.ReactInstanceManagerImpl.access$600(ReactInstanceManagerImpl.java:84)
代码地址:https://github.com/Kennytian/embedded,欢迎star
原文:http://www.cnblogs.com/Kennytian/p/5325424.html