lhyh
lhyh
  • 发布:2016-07-16 02:48
  • 更新:2018-09-06 14:20
  • 阅读:12205

【交流分享】从小白的角度谈谈Android集成5+SDK的几种方式的应用场景

分类:5+ SDK

背景

前一段时间因为项目需求,需要从Hbuilder中转移到原生层做开发,无奈只是熟悉一些java概念,但几乎没接触过Android开发,所以折腾了好久的离线打包。在你决定看这片文章之前,应该也要做好使劲折腾的心理准备。同时,最好看这篇文章之前对集成5 +sdk要有一些基本的概念,所以最好先看看下面这几篇文章,可能就不用继续看我的这点东西了。

1. 官方文档

相关集成概念

结合所有的官方文档以及官方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,也是相当于把集成的工作给你做好了而已。

  • runtime集成方式,就是离线打包,就是集成方式a1,就是集成方式a2

  • 独立应用集成方式,就是Widget集成方式,就是官方SDK中的Hello-Integrate项目里的webApp集成方式,就是 集成方式b1,就是 集成方式b2

  • WebView集成方式,就是集成方式c,也可以理解为集成方式d,此处参考官方SDK中的Hello-Integrate项目里的WebView集成方式

  • Android平台第三方插件开发指导,就是集成方式d

最后的话

作为HB的用户已经三个月了,感谢DC提供一款如此好用的工具,衷心希望DC越走越好。同时,该文章参考了论坛中很多其他开发者的总结,在此一并感谢。第一次写,文章格式看起来有点乱,审美比较差导致……最后如果我的总结没有太严重的错误的话,那我觉得官方文档中关于5 +SDK的部分概念说明,是时候改改了,也希望大家指出我的错误

11 关注 分享
BirdZhang 赵梦欢 Trust wenju f***@gmail.com r***@outlook.com 1***@qq.com c***@gmail.com w***@yeah.net 4***@qq.com 7***@qq.com

要回复文章请先登录注册

上扬

上扬

大神,你好,我们现在正在做PDA扫描这块,能否发个相关的源码给参考下?
2018-09-06 14:20
唐自然

唐自然

mark
2018-06-19 13:16
1***@qq.com

1***@qq.com

有人吗,问下vue-cli开发过程中可以集成5+sdk吗?
2018-05-10 10:16
f***@gmail.com

f***@gmail.com

mark下这两天正好要用到 等设备到了就测试
2017-10-11 22:19
lhyh

lhyh (作者)

回复 阿盏 :
widget比较合适,才看到不好意思,都过了很久了
2017-03-10 15:16
lhyh

lhyh (作者)

回复 墨痕八舞 :
握爪<( ̄ˇ ̄)/
2017-03-10 15:15
墨痕八舞

墨痕八舞

经过android ios 双端集成方式实测.....楼主所总结的非常正确
2017-03-10 14:47
阿盏

阿盏

求助,最开始是直接h5的项目,然后打开一个activity,然后activity再打开一个h5,要用那种集成方式啊
2016-12-01 11:06
EricBeckham

EricBeckham

写的太好了,正在学习。
要用到信鸽推送,只能自学安卓开发了。
2016-10-28 17:12
lhyh

lhyh (作者)

回复 wenju :
:-D 谢谢大神谬赞
2016-08-17 10:24