例如App有这样的网络请求代码,通常如果需要收集网络请求的信息,需要在源代码层面进行打点:
URL url = new URL("<http://www.example.com/comment>");
// 打点,建连前
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 打点,建连后
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
// 打点,返回数据读完后
DEX插桩是基于一定规则,自动在DEX汇编代码层进行代码打点(自动插入汇编)。上述例子中DEX插桩会寻找 openConnection()
函数调用,然后自动插入DEX代码达到和源代码打点相同的效果。DEX插桩是Appetizer自主研发的核心技术,具有以下优点:
python -m pip install -r requirements.txt
python insights.py login <username> <password>
python insights.py process <apk> <processed_apk>
在Jenkins服务器上安装Python客户端并登录:https://github.com/appetizerio/insights.py
在Jenkins gradle
编译步骤增加如下命令,Windows的用 Execute Windows batch command
, Linux和MacOS上用 Execute Shell
注意,insights.py请自行替换成之前配置的insights.py工程路径(比如 /Users/haha/insights.py/insights.py
,注意一个是目录名,里面的才是实际Python脚本文件)
命令的参数中apk是gradle编译的apk文件的路径,和具体Jenkins配置的working directory有关,一般是build/outputs/apk/app-release.apk
命令的参数中processed_apk是存放插桩后的apk文件的路径,同样,一般是 build/outputs/apk/app-release-appetizer.apk
全部配置完成后尝试构建,输出大致应该是这样的