【问题标题】:Why HMS PushKit needs android.permission.REQUEST_INSTALL_PACKAGES为什么 HMS PushKit 需要 android.permission.REQUEST_INSTALL_PACKAGES
【发布时间】:2021-01-31 09:10:35
【问题描述】:

最近我用这个 gradle 代码添加了 HMS PushKit SDK:

implementation "com.huawei.hms:push:5.0.4.302"

在那之后,我注意到我的应用程序已添加到有权安装来自未知来源的应用程序的应用程序列表中(特殊权限)。我检查了这个库的依赖项之一(com.huawei.hms.base.availableupdate)的AndroidManifest.xml 文件,发现它有这个特殊权限:

<!-- If it is Android 8.0, the targetSdkVersion of the application compilation configuration>=26, please be sure to add the following permissions --> 
<uses-permission  android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

那么为什么 PushKit 需要这个权限呢?我不希望我的应用使用此权限。如果我用这段代码删除它会有问题(崩溃):

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

【问题讨论】:

  • 请告诉您抛出了哪个异常,而您没有捕捉到哪些异常会导致您的应用崩溃。
  • @blackapps 我不知道这是否会导致崩溃,我只是在猜测。即使它导致崩溃我也无法捕捉到它,因为它发生在它的一个依赖项中

标签: android push-notification android-permissions huawei-mobile-services huawei-push-notification


【解决方案1】:

更新

移除此权限,华为手机不受影响,但非华为手机可能无法安装HMS Core APK。

会不会因为升级失败而导致我们的应用程序崩溃?--不会,只会使应用程序无法自动升级,必须卸载并下载新版本。


&lt;uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /&gt;

此权限用于更新 HMS Core 和推送套件 APK。 Push kit 强烈依赖于 HMS Core 和 push kit APK。如果不授予该权限,可能会导致应用安装失败,导致HMS和push kit的APK升级失败。

因此,此权限是强制性的。

【讨论】:

  • 然后按照我的建议。不要使用这个框架,否则谷歌不会高兴
【解决方案2】:

android.permission.REQUEST_INSTALL_PACKAGES 是一种权限,允许 Android 上的框架或组件引用外部(最常见的 maven)存储库,以便通过安装源代码来最小化最终用户的最终安装 apk 大小远程,而不是将其全部打包在同一个 apk 中(用于初始下载)。

小心这个权限,因为如果启用它,不是在您的应用程序上,而是在一个依赖项上,它将被拒绝。这是因为如果您的依赖项存在任何安全问题,当您将应用程序包上传到商店时,谷歌将无法获取。这是因为源代码是远程下载的,而不是打包在谷歌可以剥离的同一个 apk 中。

结果 google 不会接受这个 apk,它会被拒绝(只是因为 google 不知道,也无法知道最终最终用户包中是否包含任何恶意代码)。

你可以尝试 fork 这个库,并从清单中删除权限,但是你会遇到缺少方法的异常。

在这种情况下,您最好的选择是找到另一个不从远程 maven 存储库安装额外源代码的库,以避免 google play store 拒绝。

看看这个包,它看起来像是一个构建在 Android SDK 之上的 SDK。如果有办法让您解决这个问题,直接在 google android sdk 上工作,同时让客户不会注意到,那应该没问题。归根结底,客户并不关心你是怎么做的,只要它有效。

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 2020-12-20
    • 2019-06-09
    • 2020-05-03
    • 2020-03-22
    • 2011-08-11
    • 2019-06-09
    • 2012-05-21
    • 2020-02-26
    相关资源
    最近更新 更多