uni-app本地打包安卓安装包
准备工作
下载Android Studio(以下简称AS)
官网:https://developer.android.google.cn/studio/index.html
中文社区:http://www.android-studio.org/
HBuilderX(以下简称HB)
HB本地调试好,并且执行打包的文件
App离线SDK下载
本地安装java-se,并生成keystore
下载安装java-se:https://www.oracle.com/technetwork/java/javase/downloads/index.html
生成签名证书:https://ask.dcloud.net.cn/article/35777
关于证书的生成,请关注我的另一篇文章:
《uni-app在Windows环境下(云端)打包成安卓安装包》
要牢记生成证书的alias(比如本例unilearns、证书的密码learns-uni,和sha1,同时要将生成.keystore文件放在与案例中jdk文件在同一目录下。
牢记此步骤需要的3个属性:
alias:unilearns
store(证书)密码:learns-uni
sha1加密指纹:xxxxx
注册Dcloud帐号,申请APPkey
AppKey申请教程:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey
(着重看一下常见问题1:项目配置都正确怎么还是提示"未配置AppKey或配置错误"? 在我使用时遇到过)
同时其他常见问题也要仔细看,这很重要。
后台申请地址:https://dev.dcloud.net.cn/app/build-config?appid=__UNI__009B93E&type=0
执行安卓本地打包
官方参考:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android
本文主要采用参考中的方式二进行打包:
2.7.0之后提供HBuilder-Integrate-AS工程,可以直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可。
导入项目
新建文件夹anzhuo,将下载好的SDK解压,在Android-SDK@3.4.7.81308_20220424\HBuilder-Integrate-AS中,将HBuilder-Integrate-AS复制到anzhuo文件夹下。
在AS中,执行“file->new->import”,选择HBuilder-Integrate-AS目录。使用Android Studio 导入Hbuider 提供的 HBuilder-Integrate-AS 工程
替换应用包
uni-learn\unpackage\resources\__UNI__009B93E
在AS中,删除掉HBuilder-Integrate-AS \ simpleDemo \ src \ main \ assets \ apps 下的__UNI__A文件,然后更换成uni-app项目生成的APP资源(本例为:__UNI__009B93E)
配置APPid
将data下的dcloud_control.xml内的appid清空,更换成自己uni-app的应用标识AppID
更换APPkey
在simpleDemo / src / main / Androidmanifest.xml 文件中,找到:
<meta-data
android:name="dcloud_appkey"
android:value="替换为自己申请的Appkey" />
替换应用名称(安装到手机后显示的名称)
APPlogo 推送logo APP启动页
加载并配置证书
defaultConfig {
applicationId "unilearn.app"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0.2"
multiDexEnabled true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
signingConfigs {
config {
keyAlias 'unilearns'
keyPassword 'learns-uni'
storeFile file('unilearns.keystore')
storePassword 'learns-uni'
v1SigningEnabled true
v2SigningEnabled true
}
}
更改包名称(非必须)
在AndroidManifest.xml中更改包的名称:
manifest是AndroidManifest.xml的根节点。它必须包括一个<application>节点, 并且设定xmlns:android和包属性。
package指定本应用内java主程序包的包名,它也是一个应用进程的默认名称。它也是生成的应用程序资源文件的索引类(R)的包名。
执行打包
在顶部菜单栏,找到“build”->Generate Singed Builde / APK 对打包项目进行配置,如果不需要更改,那么直接执行Build->Build Bundel /APk即可。
注意使用AS运行项目的话,需要手机开启调试模式,然后使用USB链接到手机!
遇到过的错误
Cannot recover key
可能是build.gradle->signingConfigs出现错误,这里我曾经因为使用keystore文件,而keyPassword与storePassword的密码不一致,导致出现这个错误。这里一定要注意,要将keystore文件与原包带有的test.jks文件放在同级目录下,然后再引用。