- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我实现了 https://code.google.com/p/android/issues/detail?id=78377 上列出的众多解决方案之一对于 4.2.2 手机的这个问题,但现在我已经更新到支持工具 23,这个问题又回来了。如果您查看该问题报告,您会发现自更新以来有很多人遇到同样的问题。 NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder上的解决方案也不起作用,因为它们来自 https://code.google.com/p/android/issues/detail?id=78377
这是我遇到的异常:
java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.i
at android.support.v7.widget.ActionMenuView.getMenu(ActionMenuView.java:643)
at android.support.v7.widget.Toolbar.ensureMenu(Toolbar.java:876)
at android.support.v7.widget.Toolbar.getMenu(Toolbar.java:847)
at android.support.v7.internal.widget.ToolbarWidgetWrapper.getMenu(ToolbarWidgetWrapper.java:702)
at android.support.v7.internal.app.ToolbarActionBar.getMenu(ToolbarActionBar.java:583)
at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:441)
at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:65)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
at android.view.Choreographer.doCallbacks(Choreographer.java:579)
at android.view.Choreographer.doFrame(Choreographer.java:547)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5391)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(NativeStart.java)
我的混淆器有这个:
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
有什么解决办法吗?收到大量用户投诉。
最佳答案
您的 ProGuard“保持类”规则需要更新,因为目标类不再被混淆。在支持工具的第 23 版中,Google 将与菜单相关的类移出了内部包。我可以确认以下 ProGuard 规则消除了在某些运行 Android 4.2.2 的三星设备上出现的 NoClassDefFoundError。
# Workaround for conflict with certain OEM-modified versions of the Android appcompat
# support libs, especially Samsung + Android 4.2.2
# See this thread for more info:
# https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=78377
-keepattributes **
# Keep all classes except the ones indicated by the patterns preceded by an exclamation mark
-keep class !android.support.v7.view.menu.**,!android.support.design.internal.NavigationMenu,!android.support.design.internal.NavigationMenuPresenter,!android.support.design.internal.NavigationSubMenu,** {*;}
# Skip preverification
-dontpreverify
# Specifies not to optimize the input class files
-dontoptimize
# Specifies not to shrink the input class files
-dontshrink
# Specifies not to warn about unresolved references and other important problems at all
-dontwarn **
# Specifies not to print notes about potential mistakes or omissions in the configuration, such as
# typos in class names or missing options that might be useful
-dontnote **
我强烈建议您使用 dex2jar 和 jd 来确认所需的混淆已经发生(此处描述:https://stackoverflow.com/a/10191338/315702)。不幸的是,每次升级支持工具时都应该这样做,以防包被再次移动或重命名。
Google 将类从“内部”包中移出,希望这样可以避免导致 NoClassDefFoundError 的类路径冲突。然而,正如 Chris Banes 在该错误 ( https://code.google.com/p/android/issues/detail?id=78377 ) 的线程中所述,他们没有测试以验证修复——许多人已经报告了与您看到的相同的崩溃:
Right, we've decided to do a one-time rename of the internal classes which should fix this. I have done no testing on those devices though, and don't plan on doing any either.
关于android - 更新到支持工具 23 后再次出现 java.lang.NoClassDefFoundError : android. support.v7.internal.view.menu.i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155729/
之前有人问过这个问题,但是当移动到具有相反字节序的平台(在这种情况下从大到小)时,我仍然对如何处理位域结构感到有些困惑。所以如果我有这个: typedef struct { unsigned
我之前问过这个问题here , 但它被标记为重复并已关闭。不幸的是,我被指出的答案不起作用.... 所以,再次: 我可以生成一个像这样的 eCharts4r 仪表 library(echarts4r)
关于 .NET 中对不可为空引用类型的支持存在很多问题。最大的希望是代码契约,但它仅限于对预算有限的人进行运行时检查。 对于代码契约以外的方法,Jon Skeet 写了一篇 blog post几年前,
当我通过将终止标志设置为true来停止线程'srch_slave_thread'时,(srch_slave_thread.terminate)释放线程的线程停止在析构函数的'inherited'行中,
We know that Windows 使用 CR + LF 对作为换行符,Unix(包括 Linux 和 OS X)使用单个 LF,而 MacOS 使用单个 CR。 这是否意味着 C 和 C++
This other SO question询问 WPF 中的自动完成文本框。有几个人已经构建了这些,其中给出的答案之一表明 this codeproject article . 但我还没有找到任何与
这个问题对我来说就像是噩梦的重演。该项目是使用 gpt3 训练聊天机器人,我正在试验嵌入。 我有文档,我正在尝试为不同的部分创建嵌入。根据我的测试,getEmbeddings() 似乎返回了一个值。但
我收到数据读取器初始化错误。我知道这个问题以前已经回答过很多次了,但这些案例似乎不适合我的情况。错误消息开头为“执行读取器:连接属性尚未初始化。” 程序: using System; using Sy
我知道这个问题已被多次询问和回答,但我正在抓狂,因为所提出的解决方案似乎都不起作用。 尽管有一个有效的配置文件,据我所知,它与 bundle 标识符匹配,但我收到了上述错误: 我已按照本网站上各种建议
所以我有一个小问题 这是我的文字 AFTER_2011/03/01 GREATER_2004_NOT 我想要 AFTER 和 GREATER,所以我有以下正则表达式: [A-Z]{2,}\\B 一开始
这个问题对我来说就像是噩梦的重演。该项目是使用 gpt3 训练聊天机器人,我正在试验嵌入。 我有文档,我正在尝试为不同的部分创建嵌入。根据我的测试,getEmbeddings() 似乎返回了一个值。但
我目前正在做具有图形功能的计算器应用程序。然后,我在我的计算器中有这个按钮,并将它连接到我的 Calculator2ViewController 上。此外,我将此按钮连接到另一个名为 GraphVie
昨天,我尝试以一种方式执行此操作...今天我尝试另一种方式,但仍然卡住了。我必须找到一种使用整数除法和取模来做到这一点的方法。这是我的代码,后面是错误消息。 public int evaluateFr
我大致正在处理以下内容: var i; var k = 5; $('document').ready(function () { $('#someElement').click(functio
又是realloc的问题。看来我在之前的很多realloc语句中都没有发现类似的问题。我将不胜感激您的兴趣。 我正在尝试读取格式的文本输入: g:;0,1,0,1,0 。我在源文本文件中有一组这种格式
我不知道为什么下面会给我:*“error LNK2001: unresolved external symbol 'struct Win32Vars_t win32' (?win32@@3UWin32
又是我。在我所有的问题中,我认为这是所有问题中最愚蠢的,但由于疲劳或愚蠢,我也需要一些帮助。然而,最重要的是,我这样做是为了我的一项任务,并且有一个严格的规则 - 我必须使用一个函数调用 char*
在 Ubuntu 14.04.5 上运行 MySql 5.5.53。当从文本文件导入数据时(加载数据 infil $FIL INTO TABLE &c),我收到可怕的提示,因为 secure_file
我在 Stackoverflow 中找到了大量关于如何选择组中第一行和最后一行的示例,但我无法根据需要调整它们。唉,我对 MySQL 的有限了解无济于事。 一些数据(date_time、val1 和
我遇到错误“连接必须有效并再次打开,当我更改我的 sql 查询代码时。任何人都可以帮忙吗??(编辑)在 form1 中我已经连接到数据库,在 form2 中我试图添加查询。 //IN Class1.c
我是一名优秀的程序员,十分优秀!