我试图使用apktool(apktool-2.1.1)重建apk。
遇到错误
i)找不到与给定名称匹配的资源'@android:style / Animation.OptionsPanel'
ii)找不到与给定名称匹配的资源'@android:style / Animation.LockScreen'
错误消息:
I: Using Apktool 2.1.1
I: Copying /home/workspace/debug/app-demo-release classes.dex file...
I: Building resources...
W: /home/workspace/debug/app-demo-release/res/values-v24/styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Animation.OptionsPanel'.
W:
W: /home/workspace/debug/app-demo-release/res/values-v24/styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Animation.LockScreen'.
W:
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [/tmp/brut_util_Jar_1478810839657812213.tmp, p, --forced-package-id, 127, --min-sdk-version, 15, --target-sdk-version, 22, --version-code, 6, --version-name, 1.0.5-debug, -F, /tmp/APKTOOL7363633357993529625.tmp, -0, arsc, -0, woff2, -0, assets/io/michaelrocks/libphonenumber/android/data/PhoneNumberAlternateFormatsProto_66, -0, arsc, -I, /home/workspace/debug/apktool/framework/1.apk, -S, /home/workspace/debug/app-demo-release/res, -M, /home/workspace/debug/app-demo-release/AndroidManifest.xml]
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:437)
at brut.androlib.Androlib.buildResources(Androlib.java:371)
at brut.androlib.Androlib.build(Androlib.java:281)
at brut.androlib.Androlib.build(Androlib.java:254)
at brut.apktool.Main.cmdBuild(Main.java:224)
at brut.apktool.Main.main(Main.java:84)
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TextAppearance.AppCompat.Notification.Info.Media" parent="@style/TextAppearance.AppCompat.Notification.Info" />
<style name="TextAppearance.AppCompat.Notification.Media" parent="@style/TextAppearance.AppCompat.Notification" />
<style name="TextAppearance.AppCompat.Notification.Time.Media" parent="@style/TextAppearance.AppCompat.Notification.Time" />
<style name="TextAppearance.AppCompat.Notification.Title.Media" parent="@style/TextAppearance.AppCompat.Notification.Title" />
<style name="Base.TextAppearance.AppCompat.Widget.Button.Borderless.Colored" parent="@android:style/Animation.OptionsPanel" />
<style name="Base.TextAppearance.AppCompat.Widget.Button.Colored" parent="@android:style/Animation.LockScreen" />
</resources>
答案 0 :(得分:2)
删除〜/ Library / apktool /文件夹(Mac OS),重新运行apktool,一切都会好的。
答案 1 :(得分:2)
根据Daniel Wang的回答,apktool
框架的副本可能已过时,删除它会在下次运行时使用较新的SDK版本重新创建。 apktool documentation列出了位置,从版本2.2.1开始,它还为那些提供了一个新命令:
apktool empty-framework-dir
引用下面的relevant documentation:
Apktool不知道那里有什么版本的框架。它将假定它是最新的,因此在Apktool升级期间删除文件
根据相关操作系统,框架存储在不同的位置。
$HOME/.local/share/apktool
%UserProfile%\AppData\Local\apktool
$HOME/Library/apktool
如果这些目录不可用,则默认为java.io.tmpdir
,通常为/tmp
。这是一个易失性目录,因此利用参数--frame-path
为框架文件选择备用文件夹是有意义的。
由于这些位置有时是隐藏目录,因此管理这些框架成为一项挑战。一个简单的辅助函数(在v2.2.1中添加)允许你运行apktool empty-framework-dir
来清空框架。
注意Apktool一旦安装就无法控制框架,但您可以自己管理这些文件。
答案 2 :(得分:0)
你可以删除这一行 它是来自来源的建筑商添加的行
Android Studio专栏中的将"<style name="Base...."
绘图与黄色对齐 - 它是ovverides