背景
前一段时间因为项目需求,需要从Hbuilder中转移到原生层做开发,无奈只是熟悉一些java概念,但几乎没接触过Android开发,所以折腾了好久的离线打包。在你决定看这片文章之前,应该也要做好使劲折腾的心理准备。同时,最好看这篇文章之前对集成5 +sdk要有一些基本的概念,所以最好先看看下面这几篇文章,可能就不用继续看我的这点东西了。
1. 官方文档
- 最新SDK下载地址
- 独立应用方式集成
- Android平台以Widget方式集成HTML5 SDK方法
- Android平台以WebView方式集成HTML5 SDK方法
- Android平台使用AndroidStudio离线打包说明
- Android平台第三方插件开发指导
2.开发者分享文章 - 【交流分享】Android独立应用方式集成HTML5 SDK,Widget方式离线打包,空项目讲解
- 【交流分享】Android集成HTML5 SDK,Runtime方式离线打包,空项目讲解
- Android以Widget方式集成自己的hbuilder项目-----Anroid Studio版
相关集成概念
结合所有的官方文档以及官方SDK中的Hello-Integrate项目。我认为,官方对于离线打包有下面的这几种概念(叫法):
1.WebView集成方式 2. Widget集成方式 3. 独立应用集成方式 4. runtime集成方式 5. webApp集成方式
(截图取自官方文档及运行后的Hello-Integrate项目)
相信我,对于我这种首次接触集成SDK的小白来说,看到这一大堆名词及概念的时候,我是这样的
我猜想这么多的概念(叫法)也许是HB的开发者在开发的过程中遗留的问题,可能是项目组成员变动啊,文档整理人员变动啊巴拉巴拉导致的最终概念没有统一,纯属瞎猜。but……项目需求摆在那里,任务摆在那里,你总要解决对吧,懵逼也得硬着头皮上啊。我们开始折腾吧,先不管上面提到的五种叫法或者概念,直接开搞。
开搞
参照上面的那些文档中的方式,每一种集成弄他至少一遍,折腾的过程中可以查查资料,了解一下安卓原生开发的一些基本概念,比如Activity(关于Activity此处可以参考@AronWOng 分享的文章,简洁的介绍了Activity的意思 Android开机自启应用)。或者熟悉下项目的包结构,哪些文件是干啥的,比如Androidmanifest.xml是个什么鬼。折腾了好长一段时间之后,得出了以下的几个结论,注意此结论中并未指定集成方式的叫法(概念),暂时先直接讲要怎么做:
-
如果你只需要离线打包,比如在无法使用HB的云端打包情况下,那么就使用该篇文章中的方式 集成方式a1, 或者集成方式a2,该模式下,不涉及到自己写原生代码,只要按照官方介绍,将自己HB中的项目集成到eclipse或者Android Studio中打包。换种说法就是,如果你没有任何涉及原生开发的需求,并且需要在eclipse或者Android Studio中打包,就采用该模式。
-
如果你有需求会涉及到原生开发,同时又要集成5 + app。以我的项目需求为例,我需要在PDA上开发5 + app,这款PDA就是个基于Android的手机,但是多了一个硬件:扫描器。我需要在App中监听到PDA上的扫描器相关事件,初始化扫描头,开始扫描,获取扫描结果等,并将扫描结果传入5 + App。由于NJS无法实现(或者可以说我不知道怎么使用NJS实现),这个时候我就要采用下面的文章中的做法 集成方式b1或者 集成方式b2。具体实现思路是,我在5 + App对应的Activity中,用java实现对扫描头的监听,并将扫描结果传入5 + app指定的webView,触发js事件,实现5 +app的监听(关于如何在集成SDK后,从java层获取指定webView并传入参数、触发js方法,参考android webApp集成方式 原生主动调用JS方法,此处感谢@DCloud_SDK_骁骑 和 @杰世 的无私帮助与解答)
-
如果你已经在原生层开发好了了App,但是可能在原生层的某些需求中,比如单个页面需要使用5 + 的能力,这种时候采用下面文章中的做法集成方式c。
-
如果你需要在5 +App或者说5 +App的某个特定的webView中,通过js调用原生层的方法,并将原生层方法的执行结果返回至js。还是以我的项目为例,还是说PDA,我需要在5 App中主动调用扫描头,并将扫描头扫描的结果传回5 +App,触发相关js方法。那么采用下面文章中的的方式集成方式d。
总结
讲到这里,相信大家会对目前官方的提供的几种操作方式有一定的了解,那么,现在用我的理解来套用官方的概念(叫法)
-
离线打包:只要不是在HB中进行云端打包,其他方式我们都可以理解为离线打包,因为你都要涉及到将5 +SDK集成到原生层。即便是最傻瓜式的该方法 集成方式a1,也是相当于把集成的工作给你做好了而已。
-
独立应用集成方式,就是Widget集成方式,就是官方SDK中的Hello-Integrate项目里的webApp集成方式,就是 集成方式b1,就是 集成方式b2
-
WebView集成方式,就是集成方式c,也可以理解为集成方式d,此处参考官方SDK中的Hello-Integrate项目里的WebView集成方式
-
Android平台第三方插件开发指导,就是集成方式d。
最后的话
作为HB的用户已经三个月了,感谢DC提供一款如此好用的工具,衷心希望DC越走越好。同时,该文章参考了论坛中很多其他开发者的总结,在此一并感谢。第一次写,文章格式看起来有点乱,审美比较差导致……最后如果我的总结没有太严重的错误的话,那我觉得官方文档中关于5 +SDK的部分概念说明,是时候改改了,也希望大家指出我的错误