一般使用RN开发的童鞋,估计很大一部分的代码或者全部代码都是在Android和iOS上公用的,因此在开发和调试的时候可能同时会需要Android和iOS两个开发环境。但是,但是,但是这里我只说iOS的,因为我对Android的了解程度有限😀!
当然了,这里我并不是不想说Android这块,因为RN的代码对于两个的平台的兼容性还是相当高的,只是在屏幕适配和一些自由的控件展示上稍有区别,这个的话在写RN代码的时候稍加判断,单独处理即可。另外我需要说的一点就是:只写reactnative代码,是不能满足移动应用开发的,因为也有一些东西需要native(原生)的开发经验来完成。比如如何通过xCode调试、配置一些第三方插件、封装一些native模块等,Android同样也是,所以说在学习RN之前,还是需要移动端开发经验的。好了,废话不多说了,我们进入正题。
==============分==========割===============线=============
模拟器运行
在前面搭建RN开发环境的时候,我已经说过如何创建一个RN项目了。在创建好的项目根目录就分别会有一个Android和iOS文件目录,我们需要做的就是打开iOS目录,并且打开里面的xCode工程(使用xCode😏)。打开之后,可以试着用模拟器运行一下,操作方法完全和原生操作一样。
这里可能会遇到如下的错误:
这种情况修改一下AppDelegate.m中的方法,如下图:
注释掉第一行的代码,换成第二行的,IP地址是本机的IP地址
这里需要说明一下、出现这个错误是因为你的工程中少一个文件main.jsbundle
这个文件在打包的时候是必不可少的,我们上面这种修改方法,是在debug模式下运行的,这样的话便于调试。
在debug模式下,我们可以通过模拟器的模拟摇一摇调出调试菜单,如下图:
其中Reload是点击刷新,Debug JS Remotely 是在网页中打开JS调试(这里可以打印,也可进行单步调试打断点),Enable Hot Reloading 打开这个选项之后,每次编辑完页面布局的时候,进行保存操作之后,界面就会自动刷新,这样的话,就省去了不少原生应用不停手动开关编译的时间。
真机运行
以上都是在模拟器上操作,那么在真机上呢?
使用iPhone真机运行的话,一个最基本的条件就是遵循苹果公司的开发者协议,这个不多说,在这些条件满足的基础上,你只需要满足一个条件即可,那就是保证手机和你的电脑在同一个局域网下,这样才能根据之前Appdelegate.m文件中的IP地址获取到相应的js代码。
在真机上运行起来之后,所有的调试操作都和模拟器是相同的,唯一不同的是,模拟器调出调试菜单需要点击或者使用快捷键,而手机你就可劲儿晃动就行了。(一不小心说多了😏)
打包发布
打包当然还是需要使用xCode来完成的,那么在这之前需要几个操作必须完成
1、生成main.jsbundle文件,就是上面说到的标红的文件,这个可以直接使用如下命令,在终端中执行即可:
运行命令打包react-native bundle --platform平台--entry-file启动文件--bundle-output打包js输出文件--assets-dest资源输出目录--dev是否调试
eg: react-native bundle --platform ios --entry-file=./index.ios.js --bundle-output ./ios/main.jsbundle--assets-dest ./ios/bundle --dev false
这段命令执行成功之后,再去xCode工程中查看,之前标红的文件已经不再标红了,说明已经创建成功了。
2、确定Scheme中build选项是Release模式,如下图:
以上两部操作执行结束之后,你就可以根据iOS的打包经验开开心的打包发布了!