Android 如何使用apktool构建库项目?
我可以使用apktool解码apk,然后为我的普通android项目重新构建 但是,当我对依赖于库项目(appcompat)的项目尝试相同的方法时,它失败了,出现了以下错误 我是否需要使用库项目进行构建?如果需要,我如何指定Android 如何使用apktool构建库项目?,android,library-project,Android,Library Project,我可以使用apktool解码apk,然后为我的普通android项目重新构建 但是,当我对依赖于库项目(appcompat)的项目尝试相同的方法时,它失败了,出现了以下错误 我是否需要使用库项目进行构建?如果需要,我如何指定 $ apktool build apkdecode repack.apk I: Checking whether sources has changed... I: Smaling... I: Checking whether resources has changed..
$ apktool build apkdecode repack.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
/<currentdir>/apkdecode/res/values/styles.xml:59: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:99: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:146: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:176: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:192: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base.DropDownItem'.
/<currentdir>/apkdecode/res/values/styles.xml:218: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:225: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Light.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:242: error: Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:275: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values-v14/styles.xml:50: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.
/<currentdir>/apkdecode/res/values/styles.xml:467: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Base'.
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 8, --target-sdk-version, 11, -F, /var/folders/6l/q11hqqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp, -0, arsc, -I, /<toolpath>/apktool/framework/1.apk, -S, /<currentdir>/apkdecode/res, -M, /<currentdir>/apkdecode/AndroidManifest.xml]
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)
at brut.androlib.Androlib.buildResources(Androlib.java:283)
at brut.androlib.Androlib.build(Androlib.java:206)
at brut.androlib.Androlib.build(Androlib.java:176)
at brut.apktool.Main.cmdBuild(Main.java:228)
at brut.apktool.Main.main(Main.java:79)
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 8, --target-sdk-version, 11, -F, /var/folders/6l/q11hqqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp, -0, arsc, -I, /<toolpath>/apktool/framework/1.apk, -S, /<currentdir>/apkdecode/res, -M, /<currentdir>/apkdecode/AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)
... 5 more
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 8, --target-sdk-version, 11, -F, /var/folders/6l/q11hqqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp, -0, arsc, -I, /<toolpath>/apktool/framework/1.apk, -S, /<currentdir>/apkdecode/res, -M, /<currentdir>/apkdecode/AndroidManifest.xml]
at brut.util.OS.exec(OS.java:89)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)
... 6 more
$apktool build apkdecode repack.apk
I:检查来源是否已更改。。。
I:斯马林。。。
I:正在检查资源是否已更改。。。
I:建筑资源。。。
//apkdecode/res/values/styles.xml:59:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:99:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:146:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:176:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:192:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base.DropDownItem”匹配的资源。
//apkdecode/res/values/styles.xml:218:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:225:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Light.Base”匹配的资源。
//apkdecode/res/values/styles.xml:242:错误:检索项的父项时出错:未找到与给定名称“TextAppearance.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:275:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values-v14/styles.xml:50:错误:检索项的父项时出错:未找到与给定名称“Widget.AppCompat.Base”匹配的资源。
//apkdecode/res/values/styles.xml:467:错误:检索项的父项时出错:未找到与给定名称“Theme.AppCompat.Base”匹配的资源。
线程“main”中的异常brut.androlib.AndrolibException:brut.androlib.AndrolibException:brut.common.BrutException:无法执行命令:[aapt,p,-min sdk version,8,-target sdk version,11,-F,/var/folders/6l/q11hqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp,-0,arsc,-I,//apktool/framework/1.apk,-S,//apkdecode/res M,//apkdecode/AndroidManifest.xml]
位于brut.androlib.androlib.buildResourcesFull(androlib.java:358)
位于brut.androlib.androlib.buildResources(androlib.java:283)
位于brut.androlib.androlib.build(androlib.java:206)
位于brut.androlib.androlib.build(androlib.java:176)
位于brut.apktool.Main.cmdBuild(Main.java:228)
位于brut.apktool.Main.Main(Main.java:79)
原因:brut.androlib.AndrolibException:brut.common.BrutException:无法执行命令:[aapt,p,-min sdk version,8,-target sdk version,11,-F,/var/folders/6l/q11hqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp,-0,arsc,-I,//apktool/framework/1.apk,-S,//apkdecode/res M,//apkdecode/AndroidManifest.xml]
位于brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)
位于brut.androlib.androlib.buildResourcesFull(androlib.java:336)
…还有5个
原因:brut.common.BrutException:无法执行命令:[aapt,p,-min sdk version,8,-target sdk version,11,-F,/var/folders/6l/q11hqj57rs0lgxcx1njdlxc0000gn/T/APKTOOL2534308390228031373.tmp,-0,arsc,-I,//apktool/framework/1.apk,-S,//apkdecode/res M,//apkdecode/AndroidManifest.xml]
位于brut.util.OS.exec(OS.java:89)
位于brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)
…还有6个
这是apktool v1(1.5.3)的问题。
有几种方法可以解决这个问题
1.编辑styles.xml。
将空的“parent”属性添加到错误行上的标记中。例如:
以前
59: <style name="Widget.AppCompat.Base.ActionBar">
if (!mParent.isNull()) {
serializer.attribute(null, "parent", mParent.encodeAsResXmlAttr());
}
之后
3.只需使用apktool v2:)
if (!mParent.isNull()) {
serializer.attribute(null, "parent", mParent.encodeAsResXmlAttr());
}
if (!mParent.isNull()) {
serializer.attribute(null, "parent", mParent.encodeAsResXmlAttr());
} else if (res.getResSpec().getName().indexOf('.') != -1) {
serializer.attribute(null, "parent", "");
}