天天看點

apktool的使用

1,有什麼用

apktool可以解開apk,得到smail代碼和資源檔案;反過來,也可以将smail代碼和資源檔案打包成為apk

2,環境配置

1,安裝java并且設定java環境變量

2,下載下傳apktool.jar

3,解開APK

G:\XXHD\lyq\apktool>java -jar apktool.jar d AdvDemo.apk -f
           

指令解釋

1,apktool.jar檔案和AdvDemo.apk檔案都放在G:\XXHD\lyq\apktool檔案夾下面;

2,java -jar apktool.jar就是調用apktool.jar來工作(它會自己找到main函數執行);

3, 參數d表示解壓(比如-d AdvDemo.apk就表示要解壓AdvDemo.apk;也可以解壓XX.jar包)

4,預設解壓到AdvDemo檔案夾下面;

5,-f的意思是說如果檔案夾存在(G:\XXHD\lyq\apktool\AdvDemo),那就會覆寫掉;

4,報錯

1,Exception in thread “main” java.lang.NullPointerException怎麼辦

G:\XXHD\lyq\apktool>java -jar apktool.jar d G:\XXHD\lyq\apktool\AdvDemo.apk
I: Using Apktool -RC4 on AdvDemo.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=versionCode, value=
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=versionName, value=
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=versionCode, value=
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=versionName, value=
Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.write(Unknown Source)
        at brut.androlib.res.util.ExtMXSerializer.writeAttributeValue(ExtMXSerializer.java:)
        at org.xmlpull.mxp1_serializer.MXSerializer.attribute(MXSerializer.java:)
        at org.xmlpull.v1.wrapper.classic.XmlSerializerDelegate.attribute(XmlSerializerDelegate.java:)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:)
        at brut.androlib.res.decoder.XmlPullStreamDecoder$1.event(XmlPullStreamDecoder.java:)
        at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:)
        at brut.androlib.res.decoder.XmlPullStreamDecoder.decodeManifest(XmlPullStreamDecoder.java:)
        at brut.androlib.res.decoder.ResFileDecoder.decodeManifest(ResFileDecoder.java:)
        at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:)
        at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:)
        at brut.apktool.Main.cmdDecode(Main.java:)
        at brut.apktool.Main.main(Main.java:)
           

看這句

C:\Users\Administrator\apktool\framework\1.apk

删除C:\Users\Administrator\apktool\framework\1.apk檔案

5,打包