ios原生项目集成HBuilder项目

我们原生开发的应用需要集成另一个公司的一个项目进来,集成的过程中遇到不少问题,在此记录总结一下:

官方的集成方法

在官方文档上有一个SDK包,下载之后用里面的demo来学习和使用它的集成方法,采用的webapp的集成方式,

这个文档需要好好看一下,用的是HBuiler-Integrate这个demo,

问题1:manifest.JSON文件中有注释

别人把项目给我们的时候,这个文件里是有注释的,还有很多字段是我们不需要的,对这个文件需要做一些删减,直接运行控制台会报错输出:manifest.JSON解析失败请确保格式正确并不能包含注释

这个文件错误首页仍然可以加载出来,但是会有显示错误,内容加载不出来等等。所以首先要确保这个文件正确,

问题2:热更新问题

hbuilder可以热更新,原生集成的时候需要自己处理一些问题,App资源在线升级更新这里面有个测试升级的demo,可以拿来用

第一次运行报错:安装wgt文件失败:html5+RUntime缺少升级包manifest.json中配置的模块:******

这个缺少了所有的模块,而不是缺少某几个模块,就是路径不对的原因,我再看了文档之后发现就是项目里的目录必须和manifest.json中的id字段一致



改完这个之后不报错了,但是更新不了,更新完显示的还是1.0版本,没变成2.0版本,我们导出手机的沙盒,就会发现更新文件存放的路径,sdk的头文件中有描述,hbuilder所有的文件都有默认的存放路径,这个demo中资源的查找路径和更新的资源存放路径不同,所以更新一直失败,这个时候需要把路径给调一致了才行。

插入以下代码(具体路径按需要调整):

NSString* pWWWPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Pandora/apps/H5EF3C469/www"];

NSString* pWWWPath1 = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Pandora/apps/H5EF3C469/www"];

NSString *s11 = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Pandora/apps/H5EF3C469/www/index.html"];

if ([[NSFileManager defaultManager] fileExistsAtPath:s11])

{

NSString *s1 = @"account=00005566&token=asfgabfdbf";

//        NSDictionary *d = @{@"accont":@"00005566",@"token":@"asfgabfdbf"};

// 启动该应用

pAppHandle = [[[PDRCore Instance] appManager] openAppAtLocation:pWWWPath withIndexPath:@"index.html" withArgs:s1 withDelegate:nil];

[[[PDRCore Instance] appManager] restart:pAppHandle];

}

else

{

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[[NSFileManager defaultManager] createDirectoryAtPath:pWWWPath withIntermediateDirectories:YES attributes:nil error:nil];

[self copyFileFromPath:pWWWPath1 toPath:pWWWPath];

dispatch_async(dispatch_get_main_queue(), ^{

//回调或者说是通知主线程刷新,

NSString *s1 = @"account=00005566&token=asfgabfdbf";

//                NSDictionary *d = @{@"accont":@"00005566",@"token":@"asfgabfdbf"};

// 启动该应用

pAppHandle = [[[PDRCore Instance] appManager] openAppAtLocation:pWWWPath withIndexPath:@"index.html" withArgs:s1 withDelegate:nil];

[[[PDRCore Instance] appManager] restart:pAppHandle];

});

});

}

这个代码把项目里的文件复制到沙盒中(如果hbuilder的初始代码要修改的话,需要卸载掉重装,要不效果不会更新的,因为沙盒里复制过,直接执行沙盒中的文件了),文档的存放路径可以自己指定,我就采用的SDK里默认的路径,这个我们的集成还没完全完成,有问题再记录。

https://github.com/lllkkkggg/HBuilderDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,210评论 30 471
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,039评论 0 12
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,364评论 0 6
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,439评论 0 6
  • 27、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是...
    烟雨平生花飞舞阅读 617评论 0 1