1. 下载、安装smalidea插件
打开AndroidStudio,点击Preferences... | Plugins, 选择Install plugin from disk
安装插件
2. 下载apktool,反编译要调试的apk文件
通过以下命令反编译APK文件java -jar apktool.jar d MyApp.apk
3. 将反编译的文件夹导入AndroidStudio
选择Import Project
导入工程
选择Create preject from existing sources
创建工程
一直选择“Next”,直至导入工程完成
4. 修改代码
代码需要修改两个地方:
AndroidManifest.xml文件中在application中加上:android:debuggable="true"
找到主Activity或者Application,在其中加上Debug.waitForDebugger的smali代码invoke-static{}, Landroid/os/Debug;->waitForDebugger()V
修改代码
5. 在AndroidStudio工程中右键点击smali文件夹,设定Mark Directory as -> Sources Root
设置Source Root
6. 使用apktool在把刚才修改完成的文件夹编译成apk文件,编译完成之后再签名一下,编译命令如下java -jar apktool.jar b MyApp -o newMyApp.apk
7. 在AndroidStudio里面配置远程调试的选项,选择Run -> Edit Configurations
配置远程调试的选项1
配置远程调试的选项2
8. 远端调试选项设置端口为8700
远端调试选项设置端口为8700
9. AndroidStudio的File -> Project Structure, 配置JDK。
配置JDK
配置JDK
10. 安装之前编译好的APK,以调试状态启动APPadb shell am start -D -n PACKAGE_NAME/ACTIVITY_NAME
11. 下好断点之后, AndroidStudio点击Run -> Debug就可以调试了