一 代码
代码下载
git clone https://github.com/didi/VirtualAPK
代码结构:
- VirtualAPk
- AndroidStub 插桩文件,配合编译
- app 示例demo主工程
- CoreLibrary 核心库
- PluginDemo 示例demo插件
- virtualapk-gradle-plugin gradle插件
二 编译
- 目前版本的代码只支持2.14.1版本的gradle,并且插件工程PluginDemo无法通过as来编译,因此选择使用gradlew命令来编译最方便。
- clone代码以后,有两个分支:master和dev。最好切换到dev分支,亲测master分支在编译过程中会有一些莫名其妙的问题,官方qq讨论群目前也说明使用dev分支来调试。
下面通过gradlew命令来编译插件工程吧:
cd VirtualApk
./gradlew clean
./gradlew build
如果结果返回BUILD SUCCESSFUL则说明宿主工程构建成功,此时app AndroidStub CoreLibrary三个目录下的build子目录会生成对应的apk或者aar文件
接着编译插件工程:
cd PluginDemo
./make.sh
如果结果返回BUILD SUCCESSFUL则说明插件工程构建成功
//make.sh脚本
./gradlew clean assemblePlugin
adb push app/build/outputs/apk/app-beijing-release-unsigned.apk /sdcard/Test.apk
adb shell am force-stop com.didi.virtualapk
adb shell am start -n com.didi.virtualapk/com.didi.virtualapk.MainActivity
make.sh文件包括gradlew编译命令,将插件工程重新命名然后推送到设备sdcard目录下,然后重新启动宿主工程。
三 问题记录
- clone代码后checkout到dev分支
- 插件工程无法通过as编译。目前VirtualApk只支持2.14.1,所以使用gradle命令也会存在版本冲突问题。因此通过graldew命令可以解决这两个问题。
- 其他问题可以看官网issue讨论