当前位置: 首页 > article >正文

android studio本地打包后,无法热更,无法执行换包操作,plus.runtime.install没有弹窗

要解决这个问题我们首先要按顺序排查

1.检查安装代码是否正常,下面是一个热更安装进度页面的demo,可以参照一下

<template>
	<view>
		 <view class="progress-box">
		                <progress :percent="progress" show-info stroke-width="8" activeColor="#10B96F" />
		            </view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				progress:''
			}
		},
		onBackPress(event){
			console.log(event)
			if(event.from=='backbutton'){
				return true
			}
		},
		onLoad(options) {//在这里传入你热更的资源全路径
			console.log(options)
			const down = uni.downloadFile({
				url: options.upurl,
				success: (downloadResult) => {
					console.log(downloadResult)
					if (downloadResult.statusCode === 200) {
						plus.runtime.install(downloadResult.tempFilePath, {
							force: false
						}, function() {
							console.log('安装成功');
							plus.runtime.restart();
						}, function() {
							console.error('安装失败');
						});
					}
				}
			})
			down.onProgressUpdate((res) => {
				this.progress = res.progress +'%'
				// console.log('已下载' + res.progress +'%');
				console.log(this.progress)
			});
		},
		methods: {
			
		}
	}
</script>

<style>
.progress-box progress{
	width: 70%;   
	height: 50%;    
	/* background: #000; */
	overflow: auto;   
	margin: auto;   
	position: absolute;   
	top: 0; 
	left: 0;
	bottom: 0; 
	right: 0;
}
</style>

这里是换包代码区域

updata() {
				let that = this
				console.log(this.apkValue);
				// #ifdef APP-PLUS
				if (this.apkValue) {
					uni.showLoading({
						title: '正在下载安装包,请耐心等待',
						mask: true,
					})
					const downloadTask = uni.downloadFile({
						url: this.apkValue, //资源包网络路径
						success: (result) => {
							if (result.statusCode == 200) {
								uni.hideLoading();
								uni.showToast({
									title: '安装包下载成功,即将安装',
									icon: 'none',
									mask: true,
									duration: 1000,
								})
								plus.runtime.install(result.tempFilePath, {
									force: true
								}, function(success) {
									console.log("success");
									that.install = success
									plus.runtime.restart();
								}, function(e) {
									that.install = e.message
									console.log("failed: " + e.message);
								})
							} else {
								uni.showToast({
									title: '安装包下载失败,请联系管理员',
									icon: 'none',
									mask: true,
									duration: 1000,
								})
							}
						}
					})
				} else {
					uni.showToast({
						title: '无法获取安装包',
						icon: 'error',
						mask: true,
						duration: 1000,
					})
				}
				// #endif
			},

2.检查manifest.json中的权限是否添加完整

 

<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.INSTALL_SHORTCUT"/>

3.检查android studio打包配置权限代码是否完整

看AndroidManifest.xml的manifest下面是否有install相关的权限

 

 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>

 再看build.gradle下是否将targetSdkVersion提升到26

再看simpleDemo中是否含有 install-apk-release.aar 文件

 


http://www.kler.cn/a/515274.html

相关文章:

  • 【玩转全栈】---基于YOLO8的图片、视频目标检测
  • 计算机网络——网络层
  • 第11篇:vue3 中 props 的使用
  • C++17 新特性深入解析:constexpr 扩展、if constexpr 和 constexpr lambda
  • CentOS 7乱码问题如何解决?
  • Bigemap pro批量设置属性/填充字段
  • 提升 Go 开发效率的利器:calc_util 工具库
  • 数学规划问题2 .有代码(非线性规划模型,最大最小化模型,多目标规划模型)
  • 项目-03-封装echarts组件并使用component动态加载组件
  • 基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型
  • 网络安全 | 入侵检测系统(IDS)与入侵防御系统(IPS):如何识别并阻止威胁
  • Prolog语言的数据可视化
  • Jpom 安装教程
  • 自动化实现的思路变化
  • 深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化
  • [Spring] OpenFeign的使用
  • wx035基于springboot+vue+uniapp的校园二手交易小程序
  • 缓存商品、购物车(day07)
  • JavaScript系列(39)-- Web Workers技术详解
  • 三天急速通关JAVA基础知识:Day3 基础加强
  • Python FastAPI 实战应用指南
  • WordPress Hunk Companion插件节点逻辑缺陷导致Rce漏洞复现(CVE-2024-9707)(附脚本)
  • Nginx:通过upstream进行代理转发
  • vue request 发送formdata
  • 【Python运维】Python与网络监控:如何编写网络探测与流量分析工具
  • vue3中使用render函数以及组合式写法实现一个配置化生成的表单组件