1. 下载、安装smalidea插件
smalidea插件下载地址:https://bitbucket.org/JesusFreke/smali/downloads/
打开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
6. 使用apktool在把刚才修改完成的文件夹编译成apk文件,编译完成之后再签名一下,编译命令如下
java -jar apktool.jar b MyApp -o newMyApp.apk
7. 在AndroidStudio里面配置远程调试的选项,选择Run -> Edit Configurations
8. 远端调试选项设置端口为8700
9. AndroidStudio的File -> Project Structure, 配置JDK。
10. 安装之前编译好的APK,以调试状态启动APP
adb shell am start -D -n PACKAGE_NAME/ACTIVITY_NAME
11. 下好断点之后, AndroidStudio点击Run -> Debug就可以调试了