uniapp打包及更新

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版权协议,转载请附上原文出处链接和本声明。