java - Android - 神秘权限出现在构建清单中
问题描述
最近在将我的应用上传到 Google Play 时,出现了一个警告,提示已添加了新权限:
我不需要这些权限。我发现它们可能来自我正在使用的库,所以我<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_LOCATION
,ACCESS_FINE_LOCATION
和CHANGE_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 文档建议的合并清单视图,除了在merger-debug-report.txt
我尝试从其他库中搜索清单文件,但没有找到它们。我还尝试了使无效并重新启动,重新启动计算机并删除所有构建文件。神秘的权限仍然出现在合并的 AndroidManifest.xml 中。
我怎样才能找到这些权限的来源?
我怎样才能删除它们?
相关问题:
解决方案
我在清理一些代码时偶然发现了答案——权限是由插件而不是库添加的,这就是为什么它没有出现在上述报告中的原因。
我们使用名为ShareSDK的 sdk 进行共享。它被这一行添加到build.gradle
:
apply plugin: 'com.mob.sdk'
当我删除这一行和相关代码时,合并的清单不再包含额外的权限。对于任何偶然发现这个问题的未来用户,我会说要提防为中国市场制作的任何库或插件!
推荐阅读
- javascript - 使用 Javascript 清除复选框和单选按钮后需要单击两次
- python - 来自文本文件的两个字典,其中值是列和关键行数
- vue.js - 基于(可变)变量加载 Vue 组件
- windows - 无法使用 PostrgreSQL 将表导出到 CSV:Windows 上的权限被拒绝
- python - 如何在python中打印不带括号、逗号或引号的字符列表?
- python - 新手:打印一个没有做出的选择
- c++ - Bag ADT C++的链接数据结构实现问题,程序中止
- r - R中的时间序列减法
- php - 动态 PHP URLS(不使用变量)
- java - 发布具有基本身份验证的用户