[TOC]
# 整体方案
## 背景
* 用户同意隐私协议之前,不能有收集用户隐私信息的行为
* 频繁申请权限、超范围申请权限
## 发现问题
### 隐私API
Mac地址、AndroidID、IMEI、IMSI等
写到配置里
### 基于JVMTI 运行时hook框架
本质是 JVMTI 本质上是在JVM内部的许多事件进行了埋点,包括内存申请、线程创建、类加载、GC信息、方法执行等,也可以控制JVM的某些行为
C/C++实现一个JVMTI Agent,在Agent里面注册一些JVM事件的回调。当事件发生时JVMTI调用这些回调方法。Agent可以在回调方法里面实现自己的逻辑。
## 修改问题
### 隐私SDK
* 接口保持与系统的一致
* 内部做了缓存,只会获取一次隐私信息
### 基于AMS 编译时hook框架
* 由于jvmti影响性能,开启特殊的指令,编译特殊的包
* 隐私的调用会被存储堆栈到本地文件里面
* UI自动化测试用例编写
## 长效监控
### UI自动化流水线检查
* 由于jvmti影响性能,开启特殊的指令,编译特殊的包
* 隐私的调用会被存储堆栈到本地文件里面
* UI自动化测试用例编写
### 代码静态检查Lint开发
敏感API调用
# 参考资料
[ASM hook隐私方法调用,防止App被下架](https://juejin.cn/post/7043399520486424612)
[我为Dexposed续一秒——论ART上运行时 Method AOP实现](https://weishu.me/2017/11/23/dexposed-on-art/)
[Android JVMTI实现应用内存动态检测](https://www.jianshu.com/p/ab7bbc319dd9)
[ 美团外卖Android Lint代码检查实践](https://zhuanlan.zhihu.com/p/35608859)
[Android Lint](https://www.jianshu.com/p/b4c44e62d652)
[Android Native Hook技术你知道多少?](https://zhuanlan.zhihu.com/p/132699875)
- Android
- 四大组件
- Activity
- Fragment
- Service
- 序列化
- Handler
- Hander介绍
- MessageQueue详细
- 启动流程
- 系统启动流程
- 应用启动流程
- Activity启动流程
- View
- view绘制
- view事件传递
- choreographer
- LayoutInflater
- UI渲染概念
- Binder
- Binder原理
- Binder最大数据
- Binder小结
- Android组件
- ListView原理
- RecyclerView原理
- SharePreferences
- AsyncTask
- Sqlite
- SQLCipher加密
- 迁移与修复
- Sqlite内核
- Sqlite优化v2
- sqlite索引
- sqlite之wal
- sqlite之锁机制
- 网络
- 基础
- TCP
- HTTP
- HTTP1.1
- HTTP2.0
- HTTPS
- HTTP3.0
- HTTP进化图
- HTTP小结
- 实践
- 网络优化
- Json
- ProtoBuffer
- 断点续传
- 性能
- 卡顿
- 卡顿监控
- ANR
- ANR监控
- 内存
- 内存问题与优化
- 图片内存优化
- 线下内存监控
- 线上内存监控
- 启动优化
- 死锁监控
- 崩溃监控
- 包体积优化
- UI渲染优化
- UI常规优化
- I/O监控
- 电量监控
- 第三方框架
- 网络框架
- Volley
- Okhttp
- 网络框架n问
- OkHttp原理N问
- 设计模式
- EventBus
- Rxjava
- 图片
- ImageWoker
- Gilde的优化
- APT
- 依赖注入
- APT
- ARouter
- ButterKnife
- MMKV
- Jetpack
- 协程
- MVI
- Startup
- DataBinder
- 黑科技
- hook
- 运行期Java-hook技术
- 编译期hook
- ASM
- Transform增量编译
- 运行期Native-hook技术
- 热修复
- 插件化
- AAB
- Shadow
- 虚拟机
- 其他
- UI自动化
- JavaParser
- Android Line
- 编译
- 疑难杂症
- Android11滑动异常
- 方案
- 工业化
- 模块化
- 隐私合规
- 动态化
- 项目管理
- 业务启动优化
- 业务架构设计
- 性能优化case
- 性能优化-排查思路
- 性能优化-现有方案
- 登录
- 搜索
- C++
- NDK入门
- 跨平台
- H5
- Flutter
- Flutter 性能优化
- 数据跨平台