欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS离线打包项目升级5+SDK

程序员文章站 2024-03-22 22:57:22
...

随着iPhone X发布及公司项目需求,目前采用的5+SDK必须面对升级的问题。自从接手该项目来貌似SDK只升级过一次。昨天已经将一个项目升级成2017年11月30日发布的最新SDK,期间遇到了很多问题,最终一一克服,现总结整理下,方便后续再次升级使用。


项目结构

iOS离线打包项目升级5+SDK
为了升级安全,先将项目备份。

下面开始升级:

(1)替换SDK
用最新SDK文件替换项目中SDK

(2) 将PandoraApi.bundle引入项目,引入时候勾选项如下图:
iOS离线打包项目升级5+SDK

(3) 将PandoraApi.bundle中feature.plist文件用原来项目中替换,当然如果没有写过插件,应该不需要。

(4)导入inc文件到项目中,打开SDK所在目录,拖动到项目中相应位置,此处,因我原生不会改动,所以设置如下:
iOS离线打包项目升级5+SDK

(5)修改control.xml中对应的appid等,修改时要注意和www文件中manifest.json文件中对应字段要完全一致,如下图:
iOS离线打包项目升级5+SDK

(6)导入相应的依赖库,及项目中相关设置,此处注意,下图中红框标注libcoreSupport.a文件一定要导入,否则会报错,当然还有其他库依赖的问题,可以根据提示解决。
iOS离线打包项目升级5+SDK

(7)根据SDK最新demo,修改本项目中的主控制器中启动5+SDK的相关代码,我的启动位置在ViewController.m中,故更新为最新即可,由于适配了iPhone X有改动,需留意!

(8)到此处,文件配置基本没问题了,现在是不是可以启动应用了呢?哈哈哈,启动下试试吧,~~beng~,呃呃呃,程序是可以启动了,但是卡顿在index页面了,www文件我没有更改,不可能出错啊。用Safari调试后发现,是调用插件地方报错,怎么会这样?升级前是好好的,郁闷中~~~~

(9)最新SDK中注册插件有变动
最新SDK中注册插件不在document.addEventListener(‘plusready’)方法中了,直接注册即可。好程序可以启动了,恭喜��

(10)等等等,啊啊啊啊,报错,搜索了下,个推静态库在模拟机上报错,这个,这个,我只有模拟机,穷的买不起真机测试啊,啊啊啊啊,老板,我要真机,我要iPhone X。。。还是算了,升级个推SDK吧。升级这块在本文中不赘述,后期补充一篇文章,因为需要将本项目中.a静态库替换成个推最新的.frameworks框架了。

(11)血的教训!!!
最新的SDK注册插件不需要document.addEventListener(“plusready”, function(){},true);中注册插件,直接放外面注册就可以了
方法调用最好还是放在plusready事件之后, 是document.addEventListener(‘plusready’) ,不要用mui.plusready,或者直接加一个timeout也可以

(12)原生调用webview方式有变动
原来原生调用webview中需要根据id遍历查找,如下代码:

NSArray *frames = [[[[PDRCore Instance] appManager] activeApp] appWindow].allFrames;
for (PDRCoreAppFrame *frame in frames) 
  if ([frame.frameName isEqualToString:@"rmsNews"]){                 
   [frame stringByEvaluatingJavaScriptFromString:@"initChat()"];    
   }
 }

改成如下方式即可:

PDRCoreAppWindow *appWindow = [[[[PDRCore Instance] appManager] activeApp] appWindow];
PDRCoreAppFrame *frame = [appWindow getFrameByName:@"rmsNews"];
//同步
[frame stringByEvaluatingJavaScriptFromString:@"initChat()"]; 
//或者可以用异步
[frame evaluateJavaScript:@"initChat()" completionHandler:^(id result, NSError *error) {
}];

总结

升级之后,页面自动适配了iPhone X,同时运行流畅度和页面反应速度都有很大提升,感觉5+做的越来越好,虽然苹果在封杀类似这种混合式开发,但是不可否认,存在即合理,希望5+做的越来越好。