Android-构建清单中显示神秘权限

时间:2018-07-24 08:19:19

标签: java android android-permissions

最近将我的应用程序上载到Google Play时,警告已添加新权限:

Google Play Permissions Warning

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

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?

1 个答案:

答案 0 :(得分:1)

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

我们使用一个名为ShareSDK的SDK进行共享。它是通过build.gradle中的这一行添加的:

apply plugin: 'com.mob.sdk'

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