Android Studio E/dalvikvm: 无法找到类...在方法中被引用

6
我遇到了一个问题,似乎与 Android Studio 中的库有关。
我遇到了编译错误,如下所示:

找不到类 'android.os.PersistableBundle',该类在 com.example.jack.test1.MainActivity.access$super 方法中被引用。找不到类 'android.app.SharedElementCallback',该类在 com.example.jack.test1.MainActivity.access$super 方法中被引用。找不到类 'android.app.ActivityManager$TaskDescription'。

应用程序仍然可以正常运行,但当涉及到运行某个按钮事件时,它会停止工作。我的朋友和我拥有完全相同的代码,但在我的情况下它不起作用。我已经尝试升级到最新的 API 级别,并尝试了不同的 Gradle 插件版本,但问题仍然存在。谢谢。
运行 Android Studio 2.0
Gradle 版本为 2.10
最低 SDK 为 4.0
4个回答

2

在使用(v7-appcompat) Support Library的AppCompatActivity的空子类进行构建时,我在Android Studio v2.0中遇到了这个错误。看起来问题发生在支持库升级(v23.3.0)之后,Build Tools(Gradle v2.1.0,Android插件v2.10)被升级。

我的解决方案:

  • 从我的模块级build.gradle文件中删除support-library依赖引用
  • 清除项目
  • 重新启动Android Studio(可能是可选的)
  • 通过Project Structure > Dependencies将support-library添加回去

目前似乎可以正常工作,但未来最好能够指定升级顺序,或者为依赖于Build Tools的库/设置设置一些先后顺序。


嘿@MandisaW,你能帮我删除和更新库吗? - Jatin Khattar
尝试进入“文件”>“项目结构...”窗口。左侧应该有一个列表,其中包含您的应用程序模块在列表底部。例如,我的主模块是“app”。单击您的主模块,然后窗口中应该有几个选项卡 - 您需要“依赖项”。从那里开始,它是一个标准的+(添加)/ - (删除)列表。Android支持库被添加为“库依赖项”,任何用户创建的库都被添加为“模块依赖项”。希望这可以帮助到您。 - MandisaW

0

我曾经遇到过同样的问题。这个问题是由于Android构建工具版本和Android支持库(appcompat)版本之间的差异引起的。

您可以通过以下方式解决此问题:要么更新您的构建工具版本和支持库版本到最新版本,要么使用低于构建工具版本的appcompat库并在gradle文件中进行更改。

您可以从这里获取所有支持库的修订版本。

要获取和更新您的构建版本和支持库版本,请检查您的应用程序模块中的build.gradle文件。


谢谢你的建议,虽然我已经粘贴了和我的朋友完全一样的 build.gradle 文件(应用程序),并同步了它,但由于某种原因问题仍然存在:/ - Jack Smith

0
启用Multidex对我来说解决了这个问题。更详细的解释可以在我在类似问题上的回答中找到,链接在这里

0

我认为解决了我的问题(在尝试以上建议后)的是缩小代码并使用官方解释的progaurd规则这里

由于我是Android Studio的新手,我觉得我的项目虽然是一个非常小的应用程序,但可能因为包含多个实验性库和许多注释(以及内部不活动的代码),导致64K?(我猜不是),非法引用(可能!);这只是我根据@PKuijpers的答案(谢谢!)的直觉猜测。老实说,我不想包括multiDex,因为在阅读官方文档后,我确定我的应用程序不是PokemonGo或NFS或足够大以符合multidex的要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接