uniapp离线打包是在安卓端或者iOS端会遇到:未配置appkey或配置错误,针对这一问题来出解决方式。官网:Android原生工程配置里面对于Appkey配置及参数也并不是很详细,特此梳理一下。我的电脑是mac,Android Studio也是最新的Android Studio Jellyfish | 2023.3.1
一、新建一个uniapp项目用来测试
二、按照官方文档去下载App离线SDK
App离线SDK下载:最新android平台SDK下载
|-- HBuilder-Hello App离线打包演示应用
|-- HBuilder-Integrate-AS 集成uni-app的最简示例
|-- SDK SDK库文件目录
|-- Feature-Android.xls Android平台各扩展Feature API对应的详细配置
|-- Readme.txt 版本说明文件及注意事项
|-- UniPlugin-Hello-AS uni原生插件开发示例
2.0、导入工程
2.7.0之后提供HBuilder-Integrate-AS工程,可以直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可。
Android Studio打开项目会报如下错误
点击链接下载即可
2.1、去HBuilderX离线打包
2.3、将HBuilderX导出的资源复制到assets->apps目录下
2.4、修改dcloud_control.xml文件
修改dcloud_control.xml中的appid为拷贝过来的uni-app的id,确保dcloud_control.xml中的appid与manifest.json中的id与文件夹名一致,如下图所示:
设置App名字
2.5、配置Appkey
3.1.10版本起需要申请 Appkey,申请请参考
三、配置Android应用签名SHA1值和SHA256值(Android Studio配置)
1、Android Studio打开点击Build->Generate Signed App Bundle/APK进入
2、选择apk,点击Next
创建了
ceshi.keystore证书存放在simpleDemo目录下
这个样子,点击ok。
选择OK即可
选择release, 点击Create即可大功告成!
项目报错了:
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @5a6382ef
解决方案:在你的
gradle.properties 文件中,添加以下 JVM 参数:
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
3、在build.gradle文件添加刚刚创建的证书
将生成的证书放
ceshi.keystore拷贝一份存在桌面用于uniapp打包apk。
4、uniapp打包apk,通过apk查看应用签名SHA1值和SHA256值
uniapp打包apk,对应证书和证书私钥密码即可
打包完的apk包
5、命令行中查看apk包签名
终端中运行java -version命令来检查是否已安装。
java -version
桌面新建一个
myapk文件夹,将APK文件移动到桌面myapk文件夹中
打开终端,首先cd到
myapk文件夹
运行以下命令:
keytool -printcert -jarfile app.apk//替换成你app的名字家后缀
这样就查看到了应用签名SHA1值和SHA256值,然后将值复制到应用信息Androis配置项即可
点击提交即可
这样我们就生成了Appkey
四、配置Appkey(此处按文走即可)
打开Androidmanifest.xml, 导航到Application节点,创建meta-data节点,name为dcloud_appkey,value为申请的AppKey如下:
填写完成运行一下看能否成功?
还是出错了,搜了一下解决方案:
找到
AndroidMainifest.xml文件
在
activity第一行添加android:exported="true"即可解决
android:exported="true"
继续运行看看是否成功
运行成功,没有未配置appkey或配置错误提示,证明方法是对的。从打包的apk查看应用签名相对来说是比较精确的,个人观点哈😂
这里如果填写的不对会导致如下图错误,此文也是为了解决这一问题的。
如有不同见解请私信或评论区发布,我也是摸索出来的,互相进步吧!