前言:
本人之前所在的公司没做过ios的热更新功能,都是直接打了ipa包给客户用,然后换了家公司后,有热更新功能,在开发模式一切正常,后面有版本更新需求,就打了个比当前更高版本的包提交,后面app store审核通过就发布版本了,当我以为一切正常后,老板跟我说下载的app里面图标、甚至是改动的东西都是以前的。和没有更新过一样,后面查了查,是因为需要重新生成jsbundle,我也照做了,可是打出来的看着是自己最新代码了,但是一些离线的图标icon图片也还是不能显示。看来自己的经验还是非常非常需要提升,后面查了很久,一路摸坑过来,对热更新有了更进一步的了解。
后来自己跑正式包,在Xcode控制台出现了以下的问题:
图片.png这是因为从热更新服务器上拿不到资源文件,而本地又没有造成的。
后来找了几篇文章参考解决了问题,参考链接:
http://www.javashuo.com/article/p-zpcjhzti-bv.html
https://www.jianshu.com/p/88b54e003027
我也将自己的步骤记录下,避免以后又遇到同样的问题忘记了.
1、重新生成资源文件jsbundle
在 ' xxx项目目录/ios/ ' 下新建 bundles 文件夹,这是等下用来执行指令生成jsbundle文件以及其他静态资源文件的
在当前项目目录终端执行以下指令,就会自动的jsbundle和其他资源打包到 “xxx项目目录/ios/bundles" 了,这是重新生成资源文件,若是不重新生成,就会永远都是以前的链接文件
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundles/main.jsbundle --assets-dest ./ios/bundles/
执行完后会看到如下图的
图片.png
2、选择本地资源文件,而不是选择从热更服务器上获取
在AppDelegate.m文件中,找到如下图的
图片.png
return [[NSBundle mainBundle] URLForResource:@"bundles/main" withExtension:@"jsbundle"]; //本地资源文件
注意:看注释,需要热更新的就把使用本地资源文件的注释掉,需要打离线包的就用本地资源文件
3、打开Xcode,添加我们指令生成的文件到项目中
图片.png 图片.png添加完后出现这个就可以了
图片.png
然后就可以正常打离线包了,注意要选择release再打包。
网友评论