【问题标题】:Android - Mystery Permissions Appear in Build ManifestAndroid - 神秘权限出现在构建清单中
【发布时间】:2018-12-31 18:59:12
【问题描述】:

最近在将我的应用上传到 Google Play 时,出现了一条警告说已添加新权限:

我不需要这些权限。我发现它们可能来自我正在使用的库,所以我从我的AndroidManifest.xml 中删除了所有<uses-permission> 来测试它。

1.合并清单报告

我检查了/app/build/outputs/logs/manifest-merger-debug-report.txt 中的合并清单报告,它显示以下权限正在被各种库添加:

uses-permission#android.permission.INTERNET
uses-permission#android.permission.ACCESS_NETWORK_STATE
uses-permission#android.permission.WAKE_LOCK
uses-permission#com.google.android.c2dm.permission.RECEIVE
permission#com.pressbible.view.permission.C2D_MESSAGE
uses-permission#com.pressbible.view.permission.C2D_MESSAGE

这些看起来不错,但它没有解释 ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATIONCHANGE_WIFI_STATE 的来源。

2。最终清单

一大堆权限出现在/app/build/intermediates/manifests/full/debug/AndroidManifest.xml中合并的构建清单的底部

  <uses-permission android:name="android.permission.GET_TASKS"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
  <uses-permission android:name="android.permission.BLUETOOTH"/>
  <uses-permission android:name="android.permission.RECEIVE_SMS"/>

我的清单中没有这些,它们也不在清单报告中。

3.删除尝试

尝试添加行

<uses-permission android:name=”android.permission.[permision-name]” tools:node=”remove” />

对于每个权限都没有删除它们。

4.合并清单视图

我还按照 Android 文档的建议使用了Merged Manifest View,除了merger-debug-report.txt 中报告的权限之外,没有发现任何额外的权限

我尝试从其他库中搜索清单文件,但没有找到。我还尝试了使无效并重新启动,重新启动计算机并删除所有构建文件。神秘的权限仍然出现在合并的 AndroidManifest.xml 中。

我如何才能找到这些权限的来源?

如何删除它们?

相关问题:

Disable Dependency Library permission

How to remove specific permission when build Android app with gradle?

Why does removing permission from AndroidManifest.xml not work?

【问题讨论】:

    标签: java android android-permissions


    【解决方案1】:

    我在清理一些代码时偶然发现了答案——权限是由插件而不是库添加的,这就是它没有出现在上述报告中的原因。

    我们使用名为ShareSDK 的sdk 进行共享。它被build.gradle中的这一行添加:

    apply plugin: 'com.mob.sdk'
    

    当我删除这一行和相关代码时,合并的清单不再包含额外的权限。对于任何偶然发现这个问题的未来用户,我会说要提防任何为中国市场制作的库或插件!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多