一 代碼
代碼下載
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討論