Andoid app三方库权限位置查找和处理
Posted 一叶飘舟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Andoid app三方库权限位置查找和处理相关的知识,希望对你有一定的参考价值。
查找方案:
第一种方法:使用AS Find in Path(Eclipse模式快捷键Crtl+H)全局搜索功能,选择搜索范围为scope,就能看到所搜权限在三方库中的位置,速度最快。
第二种方法:打包过程中,会在build\\outputs\\logs文件夹中生成log文件,在log文件中搜索权限,可以对应到具体三方库,比第一种方案精确度更好。
可以通过AS项目中的External Libraries找到权限所在的三方库,然后右键选择项目Properties来查看库下载到本机的位置,
找到aar文件,解压缩就可以看到menifest文件,这一步是做一下二次确认。
处理方案:
(1)如果权限是敏感权限,就要考虑是否使用该库,或者替换库的版本来规避。
(2)如果无法规避,又一定不能有该权限,可以通过manifest 文件权限声明tools:node="remove"来强制排除该权限的申请。
一定要保证sdk无此权限也能正常运行且不影响功能,否则的话,还需在应用中申请此权限。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xxx">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/>
</manifest>
(3)也有一种情况是使用的三方库未限制最低支持得anroid版本,这种情况下会自动申请READ_PHONE_STATE这一敏感权限。
以上是关于Andoid app三方库权限位置查找和处理的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android 应用配置第三方 so 动态库 ( /data/app/comxxx==/base.apk/lib/arm64-v8a]couldn‘t find “libx.so“ )(代码片
查找 std::vector.at() 抛出 std::out_of_range 的位置
Andoid之硬件访问服务1(让Andoid应用程序访问c库)