uni-app与原生插件混合开发调试系列文章分为3篇,分别详细讲了《环境准备》、《搭建uni-app本地开发调试环境》和《安卓原生插件开发调试和打包》,3篇文章完整详细地介绍了“从环境安装配置到本地开发调试到原生插件打包”整个流程。
相关名词和概念解释
安卓AndroidManifest.xml配置详解:AndroidManifest.xml详解 - 简书
uniapp简称uni,是dcloud旗下的产品,基于H5和vue,可用于开发各平台小程序,并且可以将开发的小程序跨平台打包,支持Android和iOS。
HBuilderX,H是HTML的首字母,Builder是构造者,X是HBuilder的下一代版本。我们也简称HX。
HX是轻如编辑器、强如IDE的合体版本。
App离线SDK:
是dcloud提供的用于在本地打包的SDK,其本质就是一个Android工程,下载之后导入到Android studio,再将uni-app打包的本地资源包复制到离线SDK工程,依托离线SDK运行。离线SDK实际上就是uni-app的套壳。
此外,离线SDK的作用是为了扩充uni-app的短板,很多uni-app无法直接调用的原生接口,可以用App离线SDK来开发原生插件,以此扩展原生能力。
本文参考文档:开发者须知 | uni小程序SDK
关于Android studio本地调试
uni-app开发的应用也可以用Android studio本地调试,步骤是先用hbuilderx把uni-app源码本地打包,这个包不是apk包,而是安卓的资源包,再将安卓的资源包整个目录copy到Android studio中的安卓工程的app模块内,再运行app模块。
原理:hbuilderx把uni-app源码打本地包后,html和js等前端代码会生成能够在jsvm环境运行的js源码。
环境准备
- JAVA环境 jdk1.8
说明:uni-app离线SDK基于Java8,所以JDK1.8是整个环境的基础。
- Android Studio 下载地址:Android Studio官网 Android Studio中文社区
说明:开发Android应用的IDE。
- App离线SDK下载:请下载2.9.8+版本的android平台SDK
说明:App离线SDK指的是开发uni-app应用的SDK,不是Android compileSdk,本质是一个Android工程,用于用于套壳运行uni-app的Android工程。
- HBuilderX 下载地址:官方下载地址
说明:HBuilderX即可以用于uni-app打本地Android资源包、APK云打包,也可以当作uni-app的编辑器。
条件准备
申请离线appkey
申请离线appkey包括两部分:生成签名证书 和 申请离线appkey
1、生成签名证书
dcloud官方文档:https://ask.dcloud.net.cn/article/35777
签名证书用jdk自带的工具keytool生成:
keytool -genkey -alias androidPluginKey -keyalg RSA -keysize 2048 -validity 36500 -keystore androidPluginKey.keystore
- androidPluginKey是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
- androidPluginKey.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
- 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
回车后提示:
Enter keystore password: //输入证书文件密码,输入完成回车
Re-enter new password: //再次输入证书文件密码,输入完成回车
What is your first and last name?
[Unknown]: //输入名字和姓氏,输入完成回车
What is the name of your organizational unit?
[Unknown]: //输入组织单位名称,输入完成回车
What is the name of your organization?
[Unknown]: //输入组织名称,输入完成回车
What is the name of your City or Locality?
[Unknown]: //输入城市或区域名称,输入完成回车
What is the name of your State or Province?
[Unknown]: //输入省/市/自治区名称,输入完成回车
What is the two-letter country code for this unit?
[Unknown]: //输入国家/地区代号(两个字母),中国为CN,输入完成回车
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: //确认上面输入的内容是否正确,输入y,回车
Enter key password for <testalias>
(RETURN if same as keystore password): //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
以上命令运行完成后就会生成证书,路径为“C:\Users\\androidPluginKey.keystore”。
查看证书信息
可以使用以下命令查看:
keytool -list -v -keystore androidPluginKey.keystore Enter keystore password: //输入密码,回车
会输出以下格式信息:
复制代码Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: test
Creation date: 2019-10-28
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN
Issuer: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN
Serial number: 7dd12840
Valid from: Fri Jul 26 20:52:56 CST 2019 until: Sun Jul 02 20:52:56 CST 2119
Certificate fingerprints:
MD5: F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5
SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7
SHA256: 24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
其中证书指纹信息(Certificate fingerprints):
- MD5
- SHA1
- SHA256
注意:keytool工具生成的androidPluginKey.keystore 文件就是所谓的“证书”。
申请appkey
申请appkey在dcloud官网申请,需要注册账号并实名认证,然后登录到开发者中心:
点击【我的应用】列表中的【应用名称】=》各平台管理=》新增:
填写包名、SHA1、MD5等:
包名(根据自己需要配置):com.xxx.xxx
填写完后【提交】,dcloud会在线生成appkey,回到【各平台信息】列表,点击查看:
如何获取已安装安卓app的签名
参考:Android平台签名证书(.keystore)生成指南 - DCloud问答