Android Rn打包

假设我们已经开发和调试好程序了。但是怎么发布呢?

我们知道现在我们运行程序是要把npm启起来的,所以我们是把js代码部署到服务器上吗?抱着这个疑问我找到了一个博客:http://blog.csdn.net/qq229200/article/details/78134227 里面的步骤是这样的:
1:terminal进入到项目根目录下执行React-native start,然后浏览器http://localhost:8081/index.android.bundle?platform=android 检查rn打包服务器是否正常运行起来了。
2: 检查app/main下是否存在assets文件夹,不存在就创建它。然后执行 curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle 将bundle文件下载并存储到assets文件夹内(window操作系统可能运行不了,就在git bash里执行)
3:打包,以下命令看自己需求(别告诉我你看不懂哈)
配置了签名密钥的可以:gradle aR gradle aD gradle iD
4:到这里就结束了,安装(没资源图片的)apk吧,然后就会发现js里调用的图片出不来。

又引发一丝疑问,难道RN开发所用到的图片都应该是网络上的?

1:带着这个疑问重新找资料找到了这个博客:http://blog.csdn.net/non_attack/article/details/56676246 里面的介绍也是要将index.android.bundle编译出来放到assets下,只不过多了个把资源文件也编译到res下的图片文件夹里,执行这行命令就行了

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

具体什么意思直接去文中的博客链接里看好了。android/app/src/main/assets这个路径别搞错了就行

2:到这里就结束了,安装(有图片的)apk吧。

新版本建的RN项目里面没有"index.android.js"和"index.ios.js"文件,就"index.js"文件,这可如何是好?

开发调试的时候都很顺利。打包的时候检查打包服务器发现

http://localhost:8081/index.bundle?platform=android 也有东西啊,是不是执行 curl -k "http://localhost:8081/index.bundle" > android/app/src/main/assets/index.bundle 或者 curl -k "http://localhost:8081/index.bundle" > android/app/src/main/assets/index.android.bundle这两句话也是可以的呢,答案都是否定的,第一句话会报错找不到index.android.bundle,第二句会报错Parse error.(index.android.bundle:1),证明了index.bundle拷贝到assets时我们把他改成index.android.bundle也是不行的。

解决办法:把项目里的index.js重命名成index.android.js,然后app/build.gradle里面的project.ext.react = [entryFile: "index.js"]也要做相应的修改

感谢这两个博主的分享
参考博客:http://blog.csdn.net/qq229200/article/details/78134227
http://blog.csdn.net/non_attack/article/details/56676246

你可能感兴趣的:(Android Rn打包)