这种方法更便捷: 便捷地方在于
不用在 入口类的 oncreate函数下 加等待 debug代码
1:
反编译
这里有差别 跟之前方法 之前用的是 apktool.jar 这里用的是 ShakaApktool.jar 用这个 待会用 as调试时 有颜色显示 之前的 全是一片白 这种更便于观察
java -jar ShakaApktool.jar d -df 111.apk -o 123
2:
开启调试功能
在 AndroidManifest.xml 里 的 <application android:debuggable=“true”
加上代码 android:debuggable=“true”
3:
回编译
java -jar ShakaApktool.jar b -d 123 -o 222.apk
4:
签名
用Apktoolbox 签名
5:
开启DDMS (monitor)
cmd 里 输入 monitor
6:
打开AS(androidstudio)并进行配置
文件->open 选择 之前反编译修改后的 文件夹
AS左边 project 点击 右边一点有下拉标志那点击 选择 projectFiles
菜单栏 运行 编辑结构 + 远程 设置 端口号
在相应代码处 下断点
注意:如果没安装plugin smalidea-0.05.zip的话 就要安装下
此时AS无法识别Smali代码,我们需要导入识别Smali代码的插件(smalidea-0.05.zip),步骤如下:
File-Settings-Plugins-install plugin from disk,选择插件,确定,选择重启AS,重新打开后,即可正常识别Smali代码,并且可以设置断点.
7:
安装apk到手机上
adb install D:\tools\android\222.apk
注意 这里安装的 必须是 添加了 android:debuggable=“true” 的 apk
不然的话 monitor是 捕捉不到程序的
8:
用adb指令以调试模式打开手机上的apk程序
adb shell am start -D -n packageName/ActivityName(这两个参数在AndroidMainfest.xml里都可以找到)
// //这里是packageName
//
android:name=“com.pujiahh.Main1” //这里是ActivityName;
即adb shell am start -D -n com.loli.loli/com.pujiahh.Main1
意思是 以调试模式 打开这个 apk
程序开启,会有debug提示窗口,DDMS将8700端口给与apk,回到AS点击debug调试运行,即可开始调试.