Android 隐私政策敏感权限监控。基于 BCU 的 modifier-aspect 实现。
通过在编译时代理敏感调用来监控敏感权限是否被调用,并支持检测通过反射调用敏感权限的行为。
- 如果本项目对你有所帮助,欢迎 start。
- 如果有遗漏的敏感权限欢迎提 issues 给我。
工程结构如下
app
用于演示的 demobuildSrc
用于管理 maven 发布,和一些项目统一配置lib_permission_monitor
本项目核心实现
-
用到的依赖版本
-
在项目的根
build.gradle.kts
中配置如下buildscript { repositories { maven { setUrl("https://jitpack.io") } } dependencies { // BCU 插件依赖 classpath("com.github.Ysj001.BytecodeUtil:plugin:<lastest-version>") // modifier-aspect 依赖 classpath("com.github.Ysj001.bcu-modifier-aspect:modifier-aspect:<lastest-version>") } } subprojects { repositories { maven { url 'https://jitpack.io' } } }
-
在
app
模块的build.gradle.kts
中的配置如下plugins { id("com.android.application") id("org.jetbrains.kotlin.android") // 添加 bcu 插件 id("bcu-plugin") } // 配置 bcu 插件 bcu { config { variant -> loggerLevel = 2 modifiers = arrayOf( // 使用 modifier-aspect 的 Modifier 实现 Class.forName("com.ysj.lib.bcu.modifier.aspect.AspectModifier"), ) } filterNot { variant, entryName -> entryName.startsWith("kotlin") || entryName.startsWith("java") || entryName.startsWith("com/ysj/lib/bcu/modifier") // 请按需配置过滤,可大幅提升编译输速度 } } dependencies { // 只需要在 debug 且运行时下依赖 PermissionMonitor debugRuntimeOnly("com.github.Ysj001:PermissionMonitor:<lastest-version>") }
-
在
logcat
中过滤tag
为PermissionMonitor
,即可观察到是否有敏感权限被调用了。