带有 Android 的 ProGuard:java.lang.NoSuchMethodError:android.util.Xml.asAttributeSet

     2023-04-15     249

关键词:

【中文标题】带有 Android 的 ProGuard:java.lang.NoSuchMethodError:android.util.Xml.asAttributeSet【英文标题】:ProGuard with Android: java.lang.NoSuchMethodError: android.util.Xml.asAttributeSet 【发布时间】:2013-05-04 16:53:38 【问题描述】:

当 ProGuard 被禁用时,我的应用程序可以正常运行。

启用ProGuard后,应用导出为apk并安装到模拟器中。

然后当我在模拟器中运行它时,强制关闭...

05-10 11:14:10.582: E/AndroidRuntime(759): FATAL EXCEPTION: main
05-10 11:14:10.582: E/AndroidRuntime(759): java.lang.NoSuchMethodError: android.util.Xml.asAttributeSet
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.view.MenuInflater.inflate(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.g.myapp.e.onCreateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.Watson.onCreatePanelMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:393)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:747)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchInvalidateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.Fragment.setHasOptionsMenu(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.g.myapp.e.onCreate(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.BackStackRecord.run(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.g.myapp.n.onTabChanged(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:391)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.widget.TabHost.setCurrentTab(TabHost.java:376)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.widget.TabHost.addTab(TabHost.java:236)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.g.myapp.n.a(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.g.myapp.MainActivity.onCreate(Unknown Source)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.Activity.performCreate(Activity.java:5008)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.os.Looper.loop(Looper.java:137)
05-10 11:14:10.582: E/AndroidRuntime(759):  at android.app.ActivityThread.main(ActivityThread.java:4745)
05-10 11:14:10.582: E/AndroidRuntime(759):  at java.lang.reflect.Method.invokeNative(Native Method)
05-10 11:14:10.582: E/AndroidRuntime(759):  at java.lang.reflect.Method.invoke(Method.java:511)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-10 11:14:10.582: E/AndroidRuntime(759):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-10 11:14:10.582: E/AndroidRuntime(759):  at dalvik.system.NativeStart.main(Native Method)

proguard-project.txt:

-keep class android.support.v4.app.**  *; 
-keep interface android.support.v4.app.**  *; 
-keep class com.actionbarsherlock.**  *; 
-keep interface com.actionbarsherlock.**  *; 

-keepattributes *Annotation*

-dontwarn org.w3c.dom.bootstrap.**
-dontwarn org.joda.time.**
-dontwarn org.xmlpull.v1.**

我该如何解决这个错误?

非常感谢!


更新:

在proguard-project.txt中添加一行后,应用程序可以在模拟器中运行:

-keep class *  *; 

虽然app可以运行,但我觉得这个方案可能不太好……

有更好的解决方案吗?

请帮忙。

非常感谢。

【问题讨论】:

-保持类 * *; 是徒劳的,因为它使所有类保持不变。 【参考方案1】:

在 proguard-project.txt 中添加一行:

-keep class org.xmlpull.v1.**  *; 

【讨论】:

非常感谢。一直在为 proguard 提供错误的异常而苦苦挣扎。 为什么必须这样做?多么神秘。几个小时的调试才能找到这个神秘的解决方案,多么可悲。 :(

带有 Android 的 ProGuard:java.lang.NoSuchMethodError:android.util.Xml.asAttributeSet

】带有Android的ProGuard:java.lang.NoSuchMethodError:android.util.Xml.asAttributeSet【英文标题】:ProGuardwithAndroid:java.lang.NoSuchMethodError:android.util.Xml.asAttributeSet【发布时间】:2013-05-0416:53:38【问题描述】:当ProGuard被禁用时,我的应用程序可... 查看详情

带有proguard的Android应用程序在发布时崩溃

】带有proguard的Android应用程序在发布时崩溃【英文标题】:AndroidAppcrashesonreleasewithproguard【发布时间】:2019-09-2519:31:54【问题描述】:当我创建发布版本时,我的应用程序崩溃。该应用程序正常运行,突然之间发生了这种情况。... 查看详情

将带有 proguard 的 Android 项目迁移到 R8,缺少 rt.java 文件,Android Studio 4.2

】将带有proguard的Android项目迁移到R8,缺少rt.java文件,AndroidStudio4.2【英文标题】:MigratingAndroidprojectwithproguardtoR8,missingrt.javafile,AndroidStudio4.2【发布时间】:2021-08-0623:43:34【问题描述】:我将我的AndroidStudio版本从4.1更新到4.2并且... 查看详情

带有 proguard 的 Android ant build.xml 未在发行版中构建

】带有proguard的Androidantbuild.xml未在发行版中构建【英文标题】:Androidantbuild.xmlwithproguarddoesnotbuildinrelease【发布时间】:2012-08-1708:11:13【问题描述】:我有以下项目设置:两个库“commoncomponents”和“libs”都定义了一些活动,例如... 查看详情

带有外部 jar 的 Proguard 错误 - 返回错误代码 1

】带有外部jar的Proguard错误-返回错误代码1【英文标题】:Proguarderrorswithexternaljar-returnserrorcode1【发布时间】:2013-01-0805:36:19【问题描述】:在导出我的Android应用程序时,Proguard返回错误代码1。我在我的应用程序中使用twitter4j外... 查看详情

使用带有 proguard 关闭力的 jsoup 关闭

】使用带有proguard关闭力的jsoup关闭【英文标题】:usingjsoupwithproguardclosingforceclose【发布时间】:2012-12-2921:19:53【问题描述】:编辑:我的PROGUARD版本是4.7今天我尝试在我的android应用程序中包含jsoup(version1.7.1),但这给我带来了很... 查看详情

dagger android支持proguard规则

】daggerandroid支持proguard规则【英文标题】:daggerandroidsupportproguardrules【发布时间】:2018-02-0502:08:13【问题描述】:我正在使用带有Proguard的Dagger2android-support库,但由于此错误,我无法编译我的项目:Warning:dagger.android.AndroidInjector:... 查看详情

Android Proguard 跳过外部 jar

】AndroidProguard跳过外部jar【英文标题】:AndroidProguardskipexternaljar【发布时间】:2011-06-2202:52:46【问题描述】:我尝试在我的Android项目中使用Proguard,我使用命令行“androidupdateproject/path/to/project”设置Proguard,并在项目的根目录中... 查看详情

带有 proguard 的 Kotlin AAR 库:如何只保留类和方法名?

】带有proguard的KotlinAAR库:如何只保留类和方法名?【英文标题】:KotlinAARlibraryw/proguard:HowtokeepONLYclassandmethodnames?【发布时间】:2020-04-2323:34:59【问题描述】:我正在使用Kotlin构建一个android库(aar文件)。我需要以第3方用户将... 查看详情

带有 ProGuard 的 Firebase

】带有ProGuard的Firebase【英文标题】:FirebasewithProGuard【发布时间】:2019-02-1318:18:30【问题描述】:我正在使用firebase制作一个应用程序,它运行良好。直到我打开ProGuard甚至R8。我基本上尝试了我在互联网上找到的所有ProGuard规则... 查看详情

带有 Java 7 的 ProGuard + Maven

】带有Java7的ProGuard+Maven【英文标题】:ProGuard+MavenwithJava7【发布时间】:2012-06-1108:31:51【问题描述】:我正在尝试让ProGuard成为我们Maven构建过程的一部分。问题是官方的Maven插件使用的是ProGuard4.3,不支持Java7。有什么简单的方... 查看详情

带有 Proguard 的 Kotlin 反射失败

】带有Proguard的Kotlin反射失败【英文标题】:KotlinReflectionwithProguardfails【发布时间】:2019-06-2421:40:17【问题描述】:假设我有这门课dataclassPerson(valname:String?)当我proguard并运行应用程序时,我收到以下异常kotlin.reflect.jvm.internal.Kotli... 查看详情

同时使用 ProGuard 和 R8

】同时使用ProGuard和R8【英文标题】:UsingbothProGuardandR8【发布时间】:2019-09-2919:05:40【问题描述】:我希望ProGuard和R8都执行代码压缩和优化:我敢肯定,经过一年的开发,R8不会像经过15年的ProGuard一样酷。android.enableR8标志启用R8... 查看详情

使用 Ant 和 Proguard 编译 Android 应用程序的问题

】使用Ant和Proguard编译Android应用程序的问题【英文标题】:ProblemscompilinganAndroidAppwithAntandProguard【发布时间】:2012-02-1300:56:05【问题描述】:我有一个包含不同模块的Android应用程序。Main模块使用了一些库,例如Google的GSON或v4.supp... 查看详情

带有重复 Zip 输入错误的 Proguard

】带有重复Zip输入错误的Proguard【英文标题】:ProguardwithDuplicateZipentryerror【发布时间】:2015-08-2504:45:58【问题描述】:当我应用proguard,然后在控制台,得到以下错误。请解决我的问题。解决应用progaurd时重复zip输入错误。控制... 查看详情

带有 proguard 问题的发布版本 - GSON

】带有proguard问题的发布版本-GSON【英文标题】:Releaseversionwithproguardissues-GSON【发布时间】:2014-11-1317:22:45【问题描述】:如果我在调试中构建我的应用程序,它可以完美运行。但是,当我使用proguard构建发布时,我遇到了几个... 查看详情

带有混淆和优化的 Guava 的 ProGuard 配置

】带有混淆和优化的Guava的ProGuard配置【英文标题】:ProGuardconfigurationforGuavawithobfuscationandoptimization【发布时间】:2012-02-2513:55:32【问题描述】:为Guava寻找可以混淆和优化的ProGuard配置,因为网站上提供的默认配置没有。我不仅... 查看详情

带有自定义控件和自定义 StringProperty 的 Proguard

】带有自定义控件和自定义StringProperty的Proguard【英文标题】:ProguardwithcustomcontrolandcustomStringProperty【发布时间】:2021-12-2706:56:59【问题描述】:我想将proguard与带有一些自定义控件的javafx应用程序一起使用。我有一个包含属性的... 查看详情