有時(shí)候使用apktool反編譯apk修改Smali文件之后再進(jìn)行build會(huì)出現(xiàn)錯(cuò)誤,這種情況下可以換一個(gè)更高版本的apktool試試。一個(gè)強(qiáng)大的apk文件編輯工具。執(zhí)行成功后你會(huì)發(fā)現(xiàn)tools目錄下多了一個(gè)classout文件夾,里面就是ali類型的文件,里面是反編譯出的代碼,但是不是java代碼,還是能看出變量和方法的。
首先把bakali-1.3.2.jar和ali-1.3.2.jar文件放到android sdk安裝路徑下的tools里面,把a(bǔ)pk文件改成rar文件,解壓后取出classes.dex文件,也放入tools里面,然后用命令行,cd tools目錄下,java -jar bakali-1.3.2.jar -o classout/ classes.dex???下免就可以使用java命令,tools目錄下多了一個(gè)classout文件夾,里面就是ali類型的文件,里面是反編譯出的代碼,但是不是java代碼,還是能看出變量和方法的,用jd_gui來看反編譯出的Java代碼,這樣便于尋找自己想要改的東西,找到后可以到bakali classout下去修改相應(yīng)的地方。然后是利用ali編譯回去:命令如下:java -jar ali-1.3.2.jar classout/ -o classes.dex把classout下編譯成classes.dex然后把classes.dex放回apk下覆蓋原來的classes.dex文件。
遇到比較高級(jí)的apk文件可以選擇使用bakali+ali來進(jìn)行apk的修改及重新打包。
1.首先解壓apk文件,獲得classes.dex文件
2.使用bakali反編譯classes.dex?命令為:?java -jar bakali.jar -o classout/ classes.dex
3.反編譯的ali文件存在./classout之中。&
4.此時(shí)對(duì)classout目錄下的ali文件就可以進(jìn)行修改了?修改過之后需要使用ali.jar將ali目錄重新編譯為classes.dex
5.使用壓縮工具將新生成的classes.dex塞入apk包替換原有的classes.dex
這里需要說明的就是使用bakali.jar反編譯的生成的ali文件使用的是bakali語法,和apktool反編譯生成的ali語法有些許的區(qū)別。
6.替換apk包中的classes.dex文件之后,需要對(duì)apk重新簽名才能安裝
大發(fā)體育娛樂城