时间:2016-11-20 09:18:37
ReactNative如何打包离线的IOS应用。
对于刚入手ReactNative的同学来说,从环境的安装,到开发调试,再到打包发布到各大应用平台,都需要 一个一个去尝试。
如果有原生App的开发经验,这个打包相对而言会比较简单,但是对于一个搞前端的人来说。苦逼啊。 不说了,开始教程吧。
记录下今天学习的过程。
时间:2016-12-06 23:20:12
今天尝试了构建离线IOS应用,这里记录下构建过程。
一、构建离线版本
1. 构建 index.bundle.js
在工程根目录下执行打包命令,比如
// entry-file IOS应用的入口文件
//bundle-output 输出在什么目录下
react-native bundle --entry-file index.ios.js --bundle-output ./ios/index.ios.jsbundle --platform ios --assets-dest ./ios --dev=false
请参考上面命令说明,根据自己的情况进行修改再执行
构建完成效果图:
2. 把构建好的文件添加到XCode项目中
默认就是 create folder references
在xcode中添加assets【必须用Create folder references的方式,添加完是蓝色文件夹图标】和index.ios.jsbundle,如图
3. 修改 AppDelegate.m
//修改IOS应用的入口文件,开发时是使用 IP地址的JS文件
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"index.ios" withExtension:@"jsbundle"];
替换后效果
4. 设置build的项目为 release 版本
Product=>Scheme=>Edit Scheme
5. 在Xcode 运行
点击运行,然后关掉命令行,模拟器里面还是可以运行,并不依赖 8081端口的js文件, 这时已经构建离线版本IOS了。
此时,命令行已经关掉了,模拟器运行还是完好的。
二、ios打包遇到的问题
离线包如果开启了chrome调试,会访问调试服务器,而且会一直loading出不来。
如果bundle的名字是main.jsbundle,app会一直读取旧的,改名就好了。。。非常奇葩的问题,我重新删了app,clean工程都没用,就是不能用main.jsbundle这个名字。
必须用Create folder references【蓝色文件夹图标】的方式引入图片的assets,否则引用不到图片
执行bundle命令之前,要保证相关的文件夹都存在
三、如何让iphone真机安装【没有iphone,未测试过】
- Xcode7.3可以无需IOS证书安装到iPhone Device;
- 手机应用中设置信任,正常下就可以打开了,这样子就不用链接服务器调试了;
附:http://makeappicon.com/ 快速生成IOS图标(准备一张1024X024 png的图片),弹窗Donwload 右下角有个Later,关闭后就可以使用了