iBotPeaches / Apktool

A tool for reverse engineering Android apk files
https://apktool.org/
Apache License 2.0
20.09k stars 3.57k forks source link

Multiple errors extracting SGS2 apk files #281

Closed iBotPeaches closed 7 years ago

iBotPeaches commented 9 years ago

Original issue 170 created by diesgust on 2011-05-22T21:20:14.000Z:

What steps will reproduce the problem? 1.Download the apk files plus the two firmware-res files: http://www.multiupload.com/SA1DXSGPDZ

  1. Run apktool -v d -t sgs2 File.apk unpacked/File on each file
  2. You're now a sad panda.

What is the expected output? What do you see instead? I expect it to work without any Java exceptions being thrown. I see this:

----install_flash_player.apk----

May 22, 2011 11:01:01 PM brut.androlib.Androlib decodeSourcesSmali INFO: Baksmaling... May 22, 2011 11:01:01 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... May 22, 2011 11:01:01 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loaded. May 22, 2011 11:01:01 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk May 22, 2011 11:01:02 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loaded. May 22, 2011 11:01:02 PM brut.androlib.res.AndrolibResources decode INFO: Decoding file-resources... May 22, 2011 11:01:02 PM brut.androlib.res.decoder.ResFileDecoder decode SEVERE: Could not decode file, replacing by FALSE value: raw/ss_cfg.png brut.androlib.AndrolibException: brut.directory.PathNotExist: ss_cfg.png at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:106) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:60) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57) Caused by: brut.directory.PathNotExist: ss_cfg.png at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:103) at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:100) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:98) ... 6 more May 22, 2011 11:01:02 PM brut.androlib.res.decoder.ResFileDecoder decode SEVERE: Could not decode file, replacing by FALSE value: raw/ss_sgn.png brut.androlib.AndrolibException: brut.directory.PathNotExist: ss_sgn.png at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:106) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:60) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57) Caused by: brut.directory.PathNotExist: sssgn.png at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:103) at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:100) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:98) ... 6 more May 22, 2011 11:01:02 PM brut.androlib.res.AndrolibResources decode INFO: Decoding values/_ XMLs... May 22, 2011 11:01:02 PM brut.androlib.res.AndrolibResources decode INFO: Done. May 22, 2011 11:01:02 PM brut.androlib.Androlib decodeRawFiles INFO: Copying assets and libs...

----Maps.apk----

May 22, 2011 11:01:19 PM brut.androlib.Androlib decodeSourcesSmali INFO: Baksmaling... May 22, 2011 11:01:22 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... May 22, 2011 11:01:23 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loaded. May 22, 2011 11:01:23 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk May 22, 2011 11:01:24 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loaded. May 22, 2011 11:01:24 PM brut.androlib.res.AndrolibResources decode INFO: Decoding file-resources... May 22, 2011 11:01:24 PM brut.androlib.res.decoder.AXmlResourceParser getAttributeValue WARNING: Could not decode attr value, using undecoded value instead: ns=android, name=iconifiedByDefault, value=0x00000000 brut.androlib.err.UndefinedResObject: resource spec: 0x010102fa at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51) at brut.androlib.res.decoder.ResAttrDecoder.decode(ResAttrDecoder.java:35) at brut.androlib.res.decoder.AXmlResourceParser.getAttributeValue(AXmlResourceParser.java:315) at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.getAttributeValue(XmlPullParserDelegate.java:69) at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:267) at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:211) at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:46) at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:34) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:100) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:86) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57) May 22, 2011 11:01:26 PM brut.androlib.res.decoder.AXmlResourceParser getAttributeValue WARNING: Could not decode attr value, using undecoded value instead: ns=android, name=iconifiedByDefault, value=0x00000000 brut.androlib.err.UndefinedResObject: resource spec: 0x010102fa at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51) at brut.androlib.res.decoder.ResAttrDecoder.decode(ResAttrDecoder.java:35) at brut.androlib.res.decoder.AXmlResourceParser.getAttributeValue(AXmlResourceParser.java:315) at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.getAttributeValue(XmlPullParserDelegate.java:69) at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:267) at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:211) at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:46) at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:34) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:100) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:86) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57) May 22, 2011 11:01:26 PM brut.androlib.res.AndrolibResources decode INFO: Decoding values/ XMLs... Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x010102e4 at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51) at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:59) at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(ResStyleValue.java:51) at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:264) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:137) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57)

----Street.apk----

May 22, 2011 11:03:45 PM brut.androlib.Androlib decodeSourcesSmali INFO: Baksmaling... May 22, 2011 11:03:46 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... May 22, 2011 11:03:46 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loaded. May 22, 2011 11:03:46 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk May 22, 2011 11:03:47 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loaded. May 22, 2011 11:03:47 PM brut.androlib.res.AndrolibResources decode INFO: Decoding file-resources... May 22, 2011 11:03:47 PM brut.androlib.res.AndrolibResources decode INFO: Decoding values/ XMLs... Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x010102e4 at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51) at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:59) at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(ResStyleValue.java:51) at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:264) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:137) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57)

----VideoEditor.apk----

May 22, 2011 11:04:23 PM brut.androlib.Androlib decodeSourcesSmali INFO: Baksmaling... May 22, 2011 11:04:24 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... May 22, 2011 11:04:24 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loaded. May 22, 2011 11:04:24 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk May 22, 2011 11:04:25 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loaded. May 22, 2011 11:04:25 PM brut.androlib.res.AndrolibResources decode INFO: Decoding file-resources... May 22, 2011 11:04:26 PM brut.androlib.res.decoder.ResFileDecoder decode WARNING: Cant find 9patch chunk in file: "drawable-hdpi/list_selector_backgroundfocus.9.PNG". Renaming it to .png. brut.androlib.err.CantFind9PatchChunk: Cant find nine patch chunk at brut.androlib.res.decoder.Res9patchStreamDecoder.find9patchChunk(Res9patchStreamDecoder.java:82) at brut.androlib.res.decoder.Res9patchStreamDecoder.getNinePatch(Res9patchStreamDecoder.java:70) at brut.androlib.res.decoder.Res9patchStreamDecoder.decode(Res9patchStreamDecoder.java:47) at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:34) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:100) at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:68) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57) Caused by: java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at brut.util.DataInputDelegate.readInt(DataInputDelegate.java:61) at brut.androlib.res.decoder.Res9patchStreamDecoder.find9patchChunk(Res9patchStreamDecoder.java:80) ... 10 more May 22, 2011 11:04:26 PM brut.androlib.res.AndrolibResources decode INFO: Decoding values_/* XMLs... May 22, 2011 11:04:26 PM brut.androlib.res.AndrolibResources decode INFO: Done. May 22, 2011 11:04:26 PM brut.androlib.Androlib decodeRawFiles INFO: Copying assets and libs...

----Zinio.apk----

May 22, 2011 11:04:50 PM brut.androlib.Androlib decodeSourcesSmali INFO: Baksmaling... May 22, 2011 11:04:51 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... May 22, 2011 11:04:51 PM brut.androlib.res.AndrolibResources loadMainPkg WARNING: Skipping "android" package group May 22, 2011 11:04:51 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loaded. May 22, 2011 11:04:51 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk May 22, 2011 11:04:52 PM brut.androlib.res.AndrolibResources loadFrameworkPkg INFO: Loaded. May 22, 2011 11:04:52 PM brut.androlib.res.AndrolibResources decode INFO: Decoding file-resources... May 22, 2011 11:04:53 PM brut.androlib.res.AndrolibResources decode INFO: Decoding values/ XMLs... Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x01030118 at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55) at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51) at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:59) at brut.androlib.res.data.value.ResReferenceValue.encodeAsResXml(ResReferenceValue.java:46) at brut.androlib.res.data.value.ResScalarValue.encodeAsResXmlAttr(ResScalarValue.java:43) at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(ResStyleValue.java:48) at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:264) at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:137) at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98) at brut.apktool.Main.cmdDecode(Main.java:120) at brut.apktool.Main.main(Main.java:57)

What version of the product are you using? On what operating system? apktool1.4.2.269870b.jar Linux

Please provide any additional information below.

iBotPeaches commented 9 years ago

Comment #1 originally posted by Brut.alll on 2011-05-23T07:18:29.000Z:

Maps.apk, Street.apk, Zinio.apk: update to apktool v1.4.1 and remove $HOME/apktool/framework/1.apk (it's written in migration instructions).

install_flash_player.apk, VideoEditor.apk: seems they're a little broken or binary-edited by someone already. First one is missing some png file(s), second has invalid 9.png file. Then apktool tries to fix problems, so you'll be able to build apk back. Rebuilt apk won't be perfectly ok, but it should be at least as good as original one.

iBotPeaches commented 9 years ago

Comment #2 originally posted by diesgust on 2011-05-23T09:00:17.000Z:

I'm already using v1.4.2.269870b so can't upgrade to 1.4.1 :). But that was the version I tried before I stumbled upon issue 169 (http://code.google.com/p/android-apktool/issues/detail?id=169&sort=-id&colspec=ID%20Stars%20Type%20Status%20Priority%20Milestone%20Owner%20Summary) where you had a link to this v1.4.2.269870b version. Same error with both 1.4.1 and v1.4.2.269870b.

And deleting 1.apk shouldn't really be needed when you're using -t sgs2 right? But I did anyway, and same errors.

iBotPeaches commented 9 years ago

Comment #3 originally posted by Brut.alll on 2011-05-23T09:55:03.000Z:

"And deleting 1.apk shouldn't really be needed when you're using -t sgs2 right?"

Yes, you're right.

"But I did anyway, and same errors."

But did you add "-t sgs2" this time? If yes then try without it. Let apktool use its own framework, at least Maps.apk and Street.apk should be decoded properly with it.

If 1.apk works with them and 1-sgs2.apk doesn't then question is: are you sure you have installed framework from SGS2? Could you try to remove 1-sgs.apk, repull and reinstall it? It's really weird that you can't decode Maps.apk and Street.apk with framework from SGS2.

iBotPeaches commented 9 years ago

Comment #4 originally posted by diesgust on 2011-05-23T10:28:09.000Z:

Yes I used -t sgs2. Anyway, I tried without -t sgs2 and it worked.

I re-installed everything, and this time I used the latest firmware for my region (I9100XWKE2_I9100XXKDJ_I9100OXXKE2_HOME), unpacked it to my computer, used simg2img (from ext4_tools in the SDK) to convert sparse ext4 image factoryfs.img to an ext4 image. Mounted it, copied it to a temp folder and did this from app/t (temp directory):

$ apktool -v if ../../framework/framework-res.apk sgs2
May 23, 2011 12:20:13 PM brut.androlib.res.AndrolibResources installFramework
INFO: Framework installed to: /home/robert/apktool/framework/1-sgs2.apk

$ apktool -v if ../../framework/twframework-res.apk sgs2
May 23, 2011 12:20:19 PM brut.androlib.res.AndrolibResources installFramework
INFO: Framework installed to: /home/robert/apktool/framework/2-sgs2.apk

$ ll ~/apktool/framework/
total 8304
-rw-rw-r--. 1 robert robert 4423742 May 23 12:19 1.apk
-rw-rw-r--. 1 robert robert 3992518 May 23 12:20 1-sgs2.apk
-rw-rw-r--. 1 robert robert   80298 May 23 12:20 2-sgs2.apk

$ apktool -v d ../Maps.apk out
May 23, 2011 12:20:45 PM brut.androlib.Androlib decodeSourcesSmali
INFO: Baksmaling...
May 23, 2011 12:20:48 PM brut.androlib.res.AndrolibResources loadMainPkg
INFO: Loading resource table...
May 23, 2011 12:20:49 PM brut.androlib.res.AndrolibResources loadMainPkg
INFO: Loaded.
May 23, 2011 12:20:49 PM brut.androlib.res.AndrolibResources loadFrameworkPkg
INFO: Loading resource table from file: /home/robert/apktool/framework/1.apk
May 23, 2011 12:20:49 PM brut.androlib.res.AndrolibResources loadFrameworkPkg
INFO: Loaded.
May 23, 2011 12:20:50 PM brut.androlib.res.AndrolibResources decode
INFO: Decoding file-resources...
May 23, 2011 12:20:52 PM brut.androlib.res.AndrolibResources decode
INFO: Decoding values*/* XMLs...
May 23, 2011 12:20:52 PM brut.androlib.res.AndrolibResources decode
INFO: Done.
May 23, 2011 12:20:52 PM brut.androlib.Androlib decodeRawFiles
INFO: Copying assets and libs...

$ apktool -v d -t sgs2 ../Maps.apk out2
May 23, 2011 12:21:00 PM brut.androlib.Androlib decodeSourcesSmali
INFO: Baksmaling...
May 23, 2011 12:21:03 PM brut.androlib.res.AndrolibResources loadMainPkg
INFO: Loading resource table...
May 23, 2011 12:21:04 PM brut.androlib.res.AndrolibResources loadMainPkg
INFO: Loaded.
May 23, 2011 12:21:04 PM brut.androlib.res.AndrolibResources loadFrameworkPkg
INFO: Loading resource table from file: /home/robert/apktool/framework/1-sgs2.apk
May 23, 2011 12:21:05 PM brut.androlib.res.AndrolibResources loadFrameworkPkg
INFO: Loaded.
May 23, 2011 12:21:05 PM brut.androlib.res.AndrolibResources decode
INFO: Decoding file-resources...
May 23, 2011 12:21:06 PM brut.androlib.res.decoder.AXmlResourceParser getAttributeValue
WARNING: Could not decode attr value, using undecoded value instead: ns=android, name=iconifiedByDefault, value=0x00000000
brut.androlib.err.UndefinedResObject: resource spec: 0x010102fa
        at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51)
        at brut.androlib.res.decoder.ResAttrDecoder.decode(ResAttrDecoder.java:35)
        at brut.androlib.res.decoder.AXmlResourceParser.getAttributeValue(AXmlResourceParser.java:315)
        at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.getAttributeValue(XmlPullParserDelegate.java:69)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:267)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:211)
        at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:46)
        at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:34)
        at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:100)
        at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:86)
        at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132)
        at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98)
        at brut.apktool.Main.cmdDecode(Main.java:120)
        at brut.apktool.Main.main(Main.java:57)
May 23, 2011 12:21:07 PM brut.androlib.res.decoder.AXmlResourceParser getAttributeValue
WARNING: Could not decode attr value, using undecoded value instead: ns=android, name=iconifiedByDefault, value=0x00000000
brut.androlib.err.UndefinedResObject: resource spec: 0x010102fa
        at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51)
        at brut.androlib.res.decoder.ResAttrDecoder.decode(ResAttrDecoder.java:35)
        at brut.androlib.res.decoder.AXmlResourceParser.getAttributeValue(AXmlResourceParser.java:315)
        at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.getAttributeValue(XmlPullParserDelegate.java:69)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:267)
        at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:211)
        at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:46)
        at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:34)
        at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:100)
        at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:86)
        at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:132)
        at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98)
        at brut.apktool.Main.cmdDecode(Main.java:120)
        at brut.apktool.Main.main(Main.java:57)
May 23, 2011 12:21:07 PM brut.androlib.res.AndrolibResources decode
INFO: Decoding values*/* XMLs...
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x010102e4
        at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:55)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:51)
        at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:59)
        at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(ResStyleValue.java:51)
        at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:264)
        at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:137)
        at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:93)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98)
        at brut.apktool.Main.cmdDecode(Main.java:120)
        at brut.apktool.Main.main(Main.java:57)

$ ll ../Maps.apk -rw-r--r--. 1 robert robert 6143559 May 23 12:07 ../Maps.apk

$ sha1sum ../Maps.apk 8f62cbe941a6353f2b32840bb68ad3ba977eaf80 ../Maps.apk

iBotPeaches commented 9 years ago

Comment #5 originally posted by Brut.alll on 2011-05-23T11:02:20.000Z:

Ok, I understand now. This resource (0x010102fa, iconifiedByDefault) was added in Honeycomb (API 11), so it's missing in Gingerbread framework. You will have to use framework from SDK which is built into apktool.

But that issue uncovered a problem in apktool's design. Apk file using resources from API11 still can run on a device with API4 - seems Android ignores all unknown resources, but apktool throws errors. Apktool should ignore unknown resources, remove them from XML and show warnings to let user know that rebuilt apk won't be identical to original one. I'll create an issue for that.

Thanks!

iBotPeaches commented 7 years ago

I am closing this 4 year old ticket. I looked into ignoring unknown resources and in Apktool's current design we need the framework resource in order to construct a proper resource id. If the resource is unknown to us, we don't have the information.

We could remove those resources, but then we've modified the application. The easier fix is to require the framework update.