Rover12421's Blog

The End.

使用Netbean和Apktool调试smali

        一直想测试Netbean能不能调试smali,于是耐着性子测试了一吧。先说下测试结果吧:

  • Netbean必须是6.8版本,可以更新插件。6.8之后的版本都不支持smali下断点,具体原因未知,一直没找相关到文档
  • Apktool1.4.2版本使用-d参数生成的java扩展名的文件可以调试。1.4.3的生成的还是smali扩展的文件,所以没法调试。当然1.4.1版本也是可以的
  • 需在AndroidManifest.xml文件的application节点里添加android:debuggable=“true"属性
  • 需要用-d参数回编译

       下面说说具体过程吧:

java -jar apktool.jar d -d app.apk out

        用-d参数反编译app.apk文件到out文件夹

android:debuggable=“true”>

       在AndroidManifest.xml文件的application节点里添加android:debuggable=“true"属性

java -jar apktool.jar b -d out

       用-d参数回编译。生成的apk文件在out/dist下面。
       打开Netbean6.8

File->New Project->Java->Java Project with Existing Sources->Next->Select out Directory->Next->Existing Source->Select out/smali Directory->Finish

        说明下,Select out Directory:选择刚刚反编译出来的out目录。Select out/smali Directory在选择已存在的源代码目录选择反编译出来的out目录下的smali文件夹。然后就可以点完成了。

sign out/dist/app.apk
adb install out/dist/app.apk

        上面是签名和安装,我简写了,具体怎么操作就不用问我了,网上一大把的。
        运行DDMS,查看app.apk运行的端口号,大多数情况下是8700,当然实际还是看DDMS上显示的。

Netbeans->Debug -> Attach Debugger -> select JPDA ->Port -> 8700 

        最后在Netbean上点Debug,附加调试。断点最好先设置好。这个端口我写的是8700,实际的上一步已经说明了。
        如果附加不上,可以尝试把host主机改成127.0.0.1多连几次
        是不是很简单啊。最后有图有真相
NetBeans IDE 6.8 Debugging Smali

Comments