原生混合技术选型记
需求是将一个现有的H5站点封装成APP,接入广告联盟,然后一步一步地改造成原生混合应用。
总结:APICloud的 superwebview 无法使用;DCloud的5+APP,必须使用它捆绑的广告联盟,并且有一大堆审核手续;最后使用 RN,缺点是生成的 realease 空包体大到22M。
先考虑使用 APICloud ,因为之前见过APICloud的 混合应用代码,感觉它的IDE要好看点, 肯定靠谱。
有一点让人感到很不舒服,每次启动IDE必须强制登录,虽然注册了账号,也绑定了微信,登录时使用微信扫码,扫了码还要让手动输入手机号和密码,真让人无语。
输就输吧,这年头,手机号码还叫隐私?要就拿去吧。
选了 SuperWebView ,然后发现其实不必使用它的Cloud Studio,下载离线SDK就可以了。加入SDK后,死活无法运行我自己的HelloWorld,连官方离线打包的Demo也跑不通。
其官方文档语焉不详,gradle 用的居然是4.8的,可见是疏于维护,大概只是腾讯的面子工程吧,放弃。
然后使用DCloud,它的IDE是 HBuildX,朴素的外表下隐藏着一颗不凡的内心,文档也更新到 gradle 6.2,比我的开发环境还要新,感觉比较靠谱。
使用的是 5+ app, 离线打包,demo很容易就跑通了,满意。
它给的官方Demo编译后包体有10几M,所以就自己编译,加入它的SDK,按照操作修改,主要是修改 AndroidManifest.xml,以及设置 config.json 和 dcloud_control.xml两个文件中的appid,然后再设置一个www路径为 appid的下级,最后编译大小为5M,完美。
虽然它也让注册,注册就注册吧,但是我离线开发为什么要用在线的appid呢?还要登录?excuse me? 你只是个工具,我写个app关你屁事,还要给你上报一下?于是就自己编了个 appid。结果还能跑通。
然后想加个广告,就去穿山甲申请了账号(巨讨厌广告,但是有需求,要提前准备),然后下载穿山甲的SDK,再然后,启动时,提示 “uni-AD业务状态异常”。
我猜测,是DCloud的SDK检测到了我使用了广告穿山甲的SDK,要我开通广告,就得登录账号。完了,这得上报了,不就是用一下你的 webview 嘛,这就要控制我了?
折腾半天,乖乖开通广告吧,实名认证,上传身份证吧。我感觉自己就是一条被他宰割的鱼,让干什么就干什么。
实名认证以后,开通广告,要填一大堆资料,恨不能把祖宗十八代都审查一遍。填就填吧,我只是用穿山甲的,但是必须要勾选360广告,才能开通穿山甲广告。
忍吧。
提交的时候弹出这个,刚搭起的工程,正在开发中怎么会有下载地址呢?看来是申请不了了。
哎喂,我想用哪家SDK就用哪家的,又不是从你网站下载的SDK,跟你有什么关系,还不让用了不成?
综上,APICloud很流氓, DCloud更流氓。
然后果断选择 react native ,纯净,纯原生,可能要比那些js伪原生好点,但不用注册。虽然每次新建工程都要下载一大堆东西。