Aplicación de actualización Uni-app, incluida la actualización del paquete completo de apk y la actualización de recursos de la aplicación wgt

Aquí solo se mencionan las aplicaciones de Android y el paquete de software se coloca en su propio servidor.

Tres maneras

  • El paquete apk se actualiza para todo el paquete, todos los archivos deben descargarse, incluidas las dependencias del módulo de permisos, etc., el tamaño es 20M +
  • Actualización de recursos de la aplicación del paquete wgt, solo actualice el código escrito por usted mismo, de acuerdo con el tamaño de su código es de aproximadamente 600k
  • La actualización de la diferencia de recursos de la aplicación wgtu, solo actualiza la pequeña parte del código que escribí sobre 100k (la implementación es un poco complicada, no se discute aquí)

Descripción de la escena

Si cambia la configuración del módulo de la aplicación, la configuración de permisos y otras cosas en mainifest.json, entonces necesita actualizar todo el paquete del paquete apk. Si solo cambia un error en un lugar determinado del código, o agrega o elimina módulos, entonces solo Necesita actualizar el paquete de recursos de la aplicación.

empaquetado apk

  • 1. Después de la modificación del código
  • 2. Modifique el nombre de la versión de la aplicación y el número de versión de la aplicación en manifest.json
  • 3. Problema
  • 4. Empaquetado en la nube

embalaje wgt

  • 1. Después de la modificación del código
  • 2. Modifique el nombre de la versión de la aplicación y el número de versión de la aplicación en manifest.json
  • 3. Problema
  • 4.Hacer el paquete wgt de la aplicación

Código

mdLoading es un mensaje escrito por mí

// 获取最新版本信息
		getVersion() {
    
    
			let that = this;
			// #ifdef APP-PLUS
			uni.showLoading({
    
    
				title: '正在获取最新版本信息...'
			});
			//这里用setTimeout模拟请求
			setTimeout(() => {
    
    
				uni.hideLoading();
				let onLineVersion = 105;
				//这里通过请求接口判断版本
				// onLineVersion > plus.runtime.versionCode
				if (true) {
    
    
					uni.showModal({
    
    
						title: '发现新版本是否升级?',
						content: `
							1、新增个人信息模块
							2、新增版本信息模块
						`,
						success(res) {
    
    
							if (res.confirm) {
    
    
								that.content = '下载中...'
								that.$refs.mdLoading.show()
								let downloadTask = uni.downloadFile({
    
    
									// url: 'http://xxxxxx:8081/xxxxxx.wgt',
									//这个地址是请求后台接口返回的
									url:'http://xxxxxxxx:8081/xxxxxx.apk',
									success(downloadResult) {
    
    
										
										if (downloadResult.statusCode === 200) {
    
    
											that.content = '下载完成,安装中...'
											plus.runtime.install(
												downloadResult.tempFilePath,
												{
    
    
													force: true
												},
												function() {
    
    
													that.content = '应用更新完成稍后将重启应用'
													setTimeout(() => {
    
    
														that.$refs.mdLoading.hide()
														plus.runtime.restart();
													}, 1000);
												},
												function(e) {
    
    
													uni.showToast({
    
    
														icon: 'none',
														title: e
													});
												}
											);
										}else{
    
    
											that.content = '应用下载失败'
											that.$refs.mdLoading.hide()
										}
									},
									fail(e){
    
    
										that.content = e
										setTimeout(()=>{
    
    
											that.$refs.mdLoading.hide()
										},1000)
									}
								});
								
								// 监听下载进度
								downloadTask.onProgressUpdate((e)=>{
    
    
									that.content = '下载中...'+ e.progress + ' %';
								})
							}
						}
					});
				} else {
    
    
					uni.showToast({
    
    
						icon: 'none',
						title: '当前已经是最新版本'
					});
				}
			}, 1000);
			// #endif
		}

mdLoading archivo

<template>
	<view>
		<view v-show="visible" class="fy-loading flex justify-center">
			<view class="box flex flex-column align-center">
				<view class="loading">
					<image  src="/static/loading.gif"></image>
				</view>
				<view class="content">{
   
   {content}}</view>
			</view>
		</view>
	</view>
	
</template>

<script>
	export default{
     
     
		name:'fy-loading',
		props:{
     
     
			content:{
     
     
				type:String,
				default:''
			}
		},
		data() {
     
     
			return {
     
     
				visible: false
			}
		},
		methods:{
     
     
			show(){
     
     
				this.visible = true;
			},
			hide(){
     
     
				this.visible = false;
			}
		}
	}
</script>

<style scoped lang="scss">
	.fy-loading{
     
     
		position: fixed;
		left:0;
		top:0;
		right:0;
		bottom:0;
		width:100vw;
		height: 100vh;
		z-index:100;
		background: rgba(0,0,0,0.6);
		overflow: hidden;
	}
	.box{
     
     
		width:100px;
		height: 70px;
		margin-top:30vh;
	}
	.content{
     
     
		color:#fff;
		font-size:14px;
		text-align:center;
		margin-top:10px;
	}
	.loading{
     
     
		width:40px;
		height: 40px;
	}
	.loading image{
     
     
		width:100%;
		height: 100%;
	}
</style>

Supongo que te gusta

Origin blog.csdn.net/weixin_35958891/article/details/108119852
Recomendado
Clasificación