uniapp打包及更新
首先要说明的是APP更新打的不是apk包,如果是增量更新打的是wgt包
一、打包
1.发行->原生APP云打包->使用自有证书
2.使用自有证书时如何生成证书:这里DCLOUD社区有写,所以直接引用了https://ask.dcloud.net.cn/article/35777
3.然后在打包时填写相应的信息(一定要记住自己的私钥密码)
- 打包时需要特别注意的是:
使用keytool -genkey命令生成证书时:
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
-alias后的名称可以自己更改;-validity后的时间是证书有效时间,可以自行设置;-alias后的别名要和-keystore后的别名.keystore相同
4.如果不上线应用市场的话可以不打渠道包,只生成uniapp的apk包
只要发给每个应用市场的.apk有所不同(常见的是在manifest里添加一个用来表明渠道的字段,不同渠道的字段内容不同),也有变态一点的,直接给不同渠道的用不同的签名证书
5.如果app中使用了一下诸如地图,蓝牙类的功能需要在APP模块配置中打包配置
二、更新:如果确定自己的APP是需要更新的,name在打包之前最好可以加上增量更新功能
1、增量更新过程:
- 前端代码
// #ifdef APP-PLUS
let CheckedModuleArr = [];
// console.log(plus.runtime);
plus.runtime.getProperty(plus.runtime.appid, function(widgetinfo) {
// console.log(widgetinfo,'lop');
uni.request({
url: '后台是否更新接口',
data: {
version: widgetinfo.version,
name: widgetinfo.name
},
success: (result) => {
// console.log(result)
// console.log(result.data.data.url);
var data = result.data.data;
// 如果有更新接口走if
// downloadfile下载文件
if (widgetinfo.version!=data.version) {
//widgetinfo.version<data.version
//widgetinfo.version是本及程序的现有版本,data.version是后台返回的最新版本
uni.showModal({
content:"检测到有最新版本,是否要更新",
success: function (res) {
if (res.confirm) {
// console.log('用户点击确定');
uni.showLoading({
title:"安装包下载中,成功后将自动重启",
mask:true,
})
var downloadtask = uni.downloadFile({
//uni.downloadFile()是下载文件api
url: data.url,
success: (downloadresult) => {
// console.log(downloadresult,'koko')
if (downloadresult.statusCode === 200) {
plus.runtime.install(downloadresult.tempFilePath, {
//plus.runtime.install()是安装文件
force: true
}, function() {
uni.hideLoading()
// console.log('install success...');
plus.runtime.restart();
//plus.runtime.restart()是重启程序
}, function(e) {
// console.log(e,'e');
// 这里的错误很重要,最好能记录的服务器日志中,方便调试或以后维护了解更新错误情况,及时解决
// 如何更新到服务器?
// 调用一个接口,将e返回咯
// console.error('install fail...');
});
}
}
});
downloadtask.onProgressUpdate((res)=>{
//只是为了监听下载进度
// console.log(res,'res')
// console.log('下载进度' + res.progress);
// console.log('已经下载的数据长度' + res.totalbyteswritten);
// console.log('预期需要下载的数据总长度' + res.totalbytesexpectedtowrite);
})
} else if (res.cancel) {
// console.log('用户点击取消');
}
}
})
}
}
});
});
// #endif
- manifest.json配置时每增量更新一次都要将
- 相应的版本号和版本名称增加
2、下载问题:增量包打完之后的
- 正常uniapp打完包是apk包,而增量更新打完包是wgt包,这个包需要给后端人员,然后在增量更新时给返回最新的版本号以方便下载
- 如果打包时不选择制作渠道包:打完的包需要下载刀子的手机上,在文件夹找到后自己安装,微信上不支持直接安装
选择渠道包:打的那个商店的渠道包就去哪儿下载
版权声明:本文为weixin_44221944原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。