DCloud_Android_ST
DCloud_Android_ST
  • 发布:2019-03-16 19:42
  • 更新:2024-09-05 17:33
  • 阅读:35765

针对plus.runtime.install在安卓9.0+上无法执行的解决方案

分类:HTML5+

先确保你的IDE使用的是HBuilderX, 老HBuilder用户请升级HBuilderX

云打包配置

云打包时配置manifest.json将targetSdkVersion改为26或更高 最高建议28。
5+应用:
http://ask.dcloud.net.cn/article/94


uniapp:
https://uniapp.dcloud.io/collocation/manifest

如果提交云端打包后调用plus.runtime.install无法安装apk文件,请添加以下权限

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

如何添加权限?可参考

TIPS

云打包配置修改完毕后。请重新提交云端打包。生成你的APK,该APK才有调用plus.runtime.install安装APK的能力。

离线打包配置

  1. 将build.gradle中的targetSdkVersion调到26或者更高。

  2. 在Androidmanifest.xml添加provider节点,将里面的io.dcloud.HBuilder改成自己应用的包名。

        <provider  
            android:name="io.dcloud.common.util.DCloud_FileProvider"  
            android:authorities="XXXX.XXX.XX(当前的应用包名).dc.fileprovider"  
            android:exported="false"  
            android:grantUriPermissions="true">  
            <meta-data  
                android:name="android.support.FILE_PROVIDER_PATHS"  
                android:resource="@xml/dcloud_file_provider" />  
        </provider>  
  3. 在Androidmanifest.xml中添加权限。
    注:最新版SDK已经将权限加入基础库里面使用时请下载最新版SDK

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

配置完权限请重新编译生成APK。该APK才有调用plus.runtime.install安装APK的能力。

13 关注 分享
choin 罪途 i***@qq.com 花鸟风月 r***@163.com 我要了明天 天空微算 l***@126.com 小花瓶 l***@qq.com 2***@qq.com 1***@test.com 8***@qq.com

要回复文章请先登录注册

kkdream

kkdream

回复 DCloud_Android_ST :
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="XXXX.XXX.XX(当前的应用包名).fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider" />
</provider>
这里按照你的文档修改为自己包名,然后就问题出现了。
我打包里没有java代码没有包,仍然用io.dcloud.Hbuilder,甚至没有加<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 权限,现在都install成功了
2019-05-28 13:07
kkdream

kkdream

回复 DCloud_Android_ST :
我用最新版HBuilder-Hello的,基本什么都没删除,只是替换了我的uniapp编译包,可以了。看来时因为使用到了某个包的方法或者我的AndroidManifest.xml修改的有问题,我正在一点点删除定位。我原来打包为了缩减apk大小,只用了lib.5plus.base-release.aar, 所有java代码也删除了,权限只保留了几个,不知道是否时权限不够还是需要的包删掉了。能给问题定位提些建议吗?
2019-05-28 11:48
DCloud_Android_ST

DCloud_Android_ST (作者)

回复 kkdream :
targetSdkVersion改了吗
2019-05-28 11:11
kkdream

kkdream

回复 DCloud_Android_ST :
这个问题看来很多人都遇到了,但是感觉很难定位解决,apk的升级安装成了大问题,目前只能重新下载升级的apk,手动安装,急盼解决
2019-05-28 10:29
kkdream

kkdream

离线打包apk,libs里只有lib.5plus.base-release.aar, REQUEST_INSTALL_PACKAGES也设置了,在手机上安装apk,自动升级下载升级apk成功,就是plus.runtime.install安装apk不起作用,但是安装更新wgt正常,在android 8的P9上,android 9的荣耀V9,P20都存在此问题。使用真机调试则不存在此问题
2019-05-28 10:26
DCloud_Android_ST

DCloud_Android_ST (作者)

回复 zhangdaren :
不能删除fileprovider 导致安装无法正常运行
2019-05-27 15:54
zhangdaren

zhangdaren

大佬,离线打包配置,第二段添加的provider节点,

在新版本uni离线打包,会报错: Can't install because provider name io.dcloud.HBuilder.fileprovider (in package com.xxxx.xxx) is already used by io.dcloud.HBuilder

经过测试,屏蔽这段配置就能正常安装app。
2019-05-27 10:58
zhangdaren

zhangdaren

回复 zhangdaren :
已经解决,见上贴
2019-05-27 10:56
zhangdaren

zhangdaren

Failed to commit install session 39648787 with command cmd package install-commit 39648787. Error: INSTALL_FAILED_CONFLICTING_PROVIDER: Package couldn't be installed in /data/app/com.gogo.Goplay--PSc-82VvtmaQioZAgaaYQ==: Can't install because provider name io.dcloud.HBuilder.fileprovider (in package com.xxxx.xxx) is already used by io.dcloud.HBuilder

大佬,这个是啥问题?没法安装到手机了
2019-05-26 17:58
8***@qq.com

8***@qq.com

回复 8***@qq.com :
在打包之前提示我升级HBuilderX,现在已经升级到了1.9.3.20190422
2019-04-23 15:33