1. 程式人生 > >使用apktool反編譯,出現brut.androlib.err.UndefinedResObject

使用apktool反編譯,出現brut.androlib.err.UndefinedResObject

昨天,由於開發需要,反編譯一個apk。出現了

brut.androlib.err.UndefinedResObject: resource spec: 
 02. 0x010300dd 錯誤提示。

百度一下,

 發現一篇文章

是這麼說的:

根據提示描述是找不到資原始檔,應該是要反編譯的APK檔案用到了系統的一些資源。
 
解決辦法:
 
從手機中匯出framework-res.apk檔案,該檔案是/system/framework下面,把這個檔案拷到跟apkTool同一個目錄下,執行以下語句把資原始檔加進來:
 
    apktool if framework-res.apk
 

執行完以後就可以把framework-res.apk導進來。此時再執行apktool d即可以正常反編譯了。

然後,我果斷把手機(華為榮耀6)接上usb線,開啟360手機助手

在系統目錄裡面找到framework-res.apk,拷貝到電腦執行apktool if framework-res.apk

很不幸出現錯誤:

Exception in thread "main" brut.androlib.AndrolibException: Multiple resources:
spec=0x01040308 string/lockscreen_carrier_default, config=[DEFAULT]
        at brut.androlib.res.data.ResType.addResource(ResType.java:66)
        at brut.androlib.res.data.ResType.addResource(ResType.java:55)
        at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:252)

又百度N次,有人說是apktool版本低了,用了apktool2.0.3也不行

百思不得其解,不得已,那了另外一臺聯想手機,拷貝了裡面的

framework-res.apk,執行,這次" apktool if framework-res.apk
" 可以成功執行,但是

反編譯還是失敗。

I: Using Apktool 2.0.3 on 5.0.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\1.
apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec:
0x01010462
        at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:59)

變成了提示:brut.androlib.err.UndefinedResObject

我日的。什麼鬼。

又百度N次。

有人說要刪除C:\Users\Administrator\apktool\framework裡面的檔案

果斷刪除。

居然成功了。