APK 디컴파일 과정에서 AndroidManifest.xml중 특정 부분의 value name이 비정상 처리, 디컴파일이 실패하는 현상?
SuperSU 1.86버전의 디컴파일시 발생하는 오류에 대해 질문드립니다.
디컴파일 환경은 다음과 같습니다.
- APK Manager와 apktool 모두 사용, apktool 버전은 2.0.0 beta 7 (최신)
- framework 리소스는 SDK의 최신 킷캣 이미지에서 가져온 순정 리소스 사용
- aapt, smali/baksmali 등 모두 최신 버전
디컴파일 시도시 다음과 같은 에러가 납니다.
[Fatal Error] AndroidManifest.xml:2:37: Element type "manifest" must be followed by either attribute specifications, ">" or "/>".
W: Could not decode attr value, using undecoded value instead: ns=, name=class, value=0x00000003
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at brut.androlib.res.util.ExtMXSerializer.writeAttributeValue(ExtMXSerializer.java:38)
at org.xmlpull.mxp1_serializer.MXSerializer.attribute(MXSerializer.java:673)
at org.xmlpull.v1.wrapper.classic.XmlSerializerDelegate.attribute(XmlSerializerDelegate.java:106)
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$1.event(XmlPullStreamDecoder.java:87)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:147)
at brut.androlib.res.decoder.ResStreamDecoderContainer.decode(ResStreamDecoderContainer.java:33)
at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:107)
at brut.androlib.res.decoder.ResFileDecoder.decode(ResFileDecoder.java:91)
at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:314)
at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:116)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:106)
at brut.apktool.Main.cmdDecode(Main.java:166)
at brut.apktool.Main.main(Main.java:85)
이 에러에 적힌 대로 그나마 디컴파일이 이루어진 AndroidManifest.xml의 제2행 37열을 보면,
<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="186" ="1.86" package="eu.chainfire.supersu"
xmlns:android="http://schemas.android.com/apk/res/android">
이와 같이 붉은 색으로 강조표시된 ="1.86" 부분 앞에 value name이 전혀 없습니다.
원래는 android:versionName이 들어가야 할 건데, 잘 모르겠지만
어쨌든 문제는 apktool이 이 값의 이름을 제대로 적어넣지를 못하고 있다는 것 같습니다.
이 오류를 해결하고 정상적으로 디컴파일 하려면 무엇이 필요한지요?
●?Who's Celes

스마트폰 관련 질문과 답
질문은 상세하게, 답은 자상하게 ^^
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5