文章目录
前面也使用过几次,但是没有系统地进行记录,这次做一个记录,以及当作一个指引
下面的都是基于Android个人的理解或者记录,有错误或者出入,谢谢指正
放在前面
只要需要制作自定义基座,不管是离线的还是云打包的,第一步一定要把应用在平台的信息填写申请,获取到这些信息,包括appid,包名,签名,dcloud_appkey等等
只要做自定义基座,一定要先获取这些信息
只要做自定义基座,一定要先获取这些信息
只要做自定义基座,一定要先获取这些信息
不然后面做的磕磕绊绊,全是坑
Uniapp,基座
首先,uniapp运行到浏览器不再解释,基本纯uniapp的功能
基座:就是uniapp运行到手机的一个容器,本质是一个apk
标准基座:选择运行到手机基座,选择标准基座的时候,会生成一个没有签名,包名信息的基础可运行的apk容器,这个只是让你的应用可以运行到手机上看到效果
自定义基座:很多时候当需要调用一些原生功能,就需要做自定义基座了
自定义基座
这里先不讲离线基座,先说编译器的制作自定义基座
一般,当我们需要原生功能的时候,需要做一个原生插件,再来制作自定义基座
制作和使用原生插件
文章可以参考这里
我们制作了原生的插件,配置了相关信息,再填写应用相关的信息,直接使用HBuilderX制作自定义基座,这时候制作的基座就包含了原生插件的功能。
为什么?因为我们虽然只是提交了应用的包名等信息,但是制作基座的时候,编译器应该还读取了项目相关的文件和信息,读到了aar文件和配置,打包了进去【以上为我的猜测】
至此,我们可以调用到原生功能,且运行到手机上了
离线自定义基座
这个顾名思义,就是与云打包区分开来
云打包比较耗时,排队,且无法调试原生代码,查看原生日志。
如果需要这些需求,深度进行一下开发,就需要进行离线自定义基座
基座源码与Android Studio
既然是离线的,就要自己编写源码,使用Android Studio进行打包apk,再放入项目中使用
这部分参考官方文档
请仔细查看文档,下载对应的SDK,就获取到了官方的基座模板源码

至于使用Android打包apk,可以继续参考上面的官方文档,这里不赘述
重点,修改源码
这里就用到最前面强调要获取的信息
准备工作
除了前面强调获取的信息,这里还需要uniapp打包出一个www的资源包
打包方法,使用HBuilderX

生成本地app资源
修改模板项目
就以UniPlugin-Hello-AS举例
lib包

一般的,这些就够了,有时需要加一个调试包

放置www资源
这一步要有,否则打包出的基座,不知道打开哪里的页面,可以说基座与这个资源是强绑定,且需要匹配的
即使其他配置正确,这个www资源不匹配,基座运行成功后会停留在启动页面,无法进入项目页面
替换掉模板的www资源就可以,位置如下

修改dcloud_control文件

打开这个位置的dcloud_control文件

保证这里的完全一致:__UNI__xxxxxx

在manifest中添加dcloud_appkey
一定要有,在application标签中,添加


这个value就是你在dcloud平台上获取到的

这个Android后面的,就是所需要的key
build.gradle中配置包名和签名

这个文件中的这两个字段,基本是一致的,都是在平台上申请的包名

这些信息都要与在平台上获取的保持一致,否则基座运行会报错
我自己遇到的问题:
在5.26版本中,还需要在build.gradle中引入一个库,否则会报错
implementation 'net.lingala.zip4j:zip4j:2.11.5'
到这里基本可以了。
打包apk
这个简单说一下


这样我们就有了自定义的apk
将apk用于uniapp项目

将apk放置在这个目录下,没有目录就自己创建 unpackage/debug/android_debug.apk
注意这里apk的名称必须是这个,否则运行到自定义基座的时候,会找不到
最后运行
这里不再说了
基座与uni强绑定,必须各个信息一致,否则就是各种报错和坑
基座运行
此时的基座,运行的是h5的逻辑,lib包中是

如果需要的是打开小程序,那么lib包中的就是

两者不能共存,会冲突
一般情况下,会用第一个,看需求吧