Android Apktool源碼編譯 標簽(空格分隔): Android Apktool 源碼編譯 需求 習慣NetBeans調試smali需要用Apktool反編譯apk,需要用 d的參數才能生成.java文件。下載最新的Apktool.jar,運行後提示smalidebugging已經從Apk ...
Android Apktool源碼編譯
標簽(空格分隔): Android Apktool 源碼編譯
需求
習慣NetBeans調試smali需要用Apktool反編譯apk,需要用-d的參數才能生成.java文件。下載最新的Apktool.jar,運行後提示smalidebugging已經從Apktool去掉了。嘗試早期版本,存在bug需要源碼調試修複。
編譯過程遇到的問題
1.從github下載smalidebugging的代碼。(Apktool-issue_901)
2.編譯提示錯誤修複。
1)smaliParser.g,smaliTreeWalker.g,smaliLexer.jflex等文件轉換成java文件。下載ant-antlr-3.jar,jflex-1.6.1.jar進行轉換。註意antlr必須使用合適版本。
2)修複提示的錯誤,如在brut.apktool\apktool-lib\src\main\java\brut\androlib\src\SmaliDecoder.java文件里出現了兩個錯誤,ClassPath沒有dontLoadClassPath靜態變數,baksmaliOptions沒有DIFFPRE靜態變數,我也沒弄明白我下載的都是最新的smali代碼,為什麼smali類里會沒有相關變數。
ClassPath.dontLoadClassPath = mDebug;
options.registerInfo = (mDebug ? baksmaliOptions.DIFFPRE : 0);
我把ClassPath.dontLoadClassPath = mDebug;直接去掉,baksmaliOptions.DIFFPRE改為baksmaliOptions.ALL。
3.添加主工程對各種modul的依賴及jar的設置。
4.運行調試修改返回異常處的代碼。