16

编辑:此问题尚未在其他建议的 SO 问题中得到解决

一年多来,我在市场上有一个完全可以运行的应用程序,几乎没有崩溃报告。然后最近我将我的应用程序更改为一个库,以便它可以包含在多个不同的“包装器”项目中。这样我就可以轻松制作不同的版本——免费、付费、非谷歌市场、有/没有应用内购买等。

新的“library+wrapper”应用似乎运行良好。我可以多次运行它,没有错误。但是一天后(大概是操作系统关闭了应用程序的部分或全部活动)我尝试运行它并报告

Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass

它找不到的类是程序启动时运行的第一个类 MyGameApplicationClass - which extends Application。这个类是库的一部分。

我怀疑两个清单文件之一中有一些愚蠢的东西。

包装器项目的清单包含以下行...

<application android:icon="@drawable/mygame_icon"
    android:screenOrientation="portrait" android:label="My Game Name"
    android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">

任何想法可能出了什么问题?

编辑:该库被引用为 yorkw 对这个 SO question的回答所定义的“正确方式” 。

编辑:我现在不能重复崩溃:-(我不知道当应用程序一两天没有使用时操作系统会做什么。

4

13 回答 13

18

有两种可能性。要么你像我一样,在你的清单文件中有拼写错误。请同事或朋友阅读以确保名称正确。或者您没有正确引用该项目。

官方文档在其文档中描述了如何正确链接项目。

为什么它首先看起来有效然后停止工作有点神秘。但是,我猜想 VM 可能仍然有必要的引用准备好解析库中的类。重新启动 VM 会删除所有这些引用,但尝试解决它们是不成功的。

更新:关于 OP 中的编辑:当您确认您已正确引用其他项目时,您可以检查该项目是否包含在 APK 中,以确保。您可以像任何其他存档一样重命名和打开 APK(.rar 对我来说很好用)。有时,它发生在我身上,该项目未正确包含在 APK 中。清理工作区通常可以解决问题,根据您使用的内容,重新启动 IDE 也可以解决问题。例如,要在 Eclipse 中手动进行清理,请使用Project->Clean...或尝试Android Tools->Fix Project Properties通过右键单击您的项目。

由于您似乎也通过重新启动设备解决了问题,因此可能是库链接不正确。一个我从未见过的问题,但正如一句非常常见的引语所说:“你试过把它关掉再打开吗?”。

于 2013-07-31T08:56:24.537 回答
17

对于 Android 工作室:

Build-->Clean Project

固定问题。

于 2017-03-20T06:44:02.620 回答
4

您是否尝试在“主”项目中创建 MyGameApplicationClass 的新子类并将其在清单中设置为 Application 类?

于 2013-08-04T12:51:15.367 回答
4

我在使用 Android Studio 3.0 Canary 4 时遇到了许多错误,我修复它们的方法是通过在应用程序名称中添加一些乱码来编辑 AndroidManifest.xml。然后,我点击了构建。显然,出现了一大堆新的错误消息。我将名称改回了应有的名称,构建了应用程序,然后它就运行了。

有时候,我只是不知道...

编辑:切换时我的笔记本电脑上的 Android Studio 3.0 Canary 4 上遇到了这个问题。我再次经历了更改 AndroidManifest.xml 文件以包含错字、构建和改回的相同过程。那没有用。

然后我注意到即时运行仍然启用。进入设置(通过单击命令+,(逗号键))并输入“即时运行”,我能够禁用即时运行,构建应用程序,并且找不到类的错误消失了。

修复步骤摘要 [为我]

  1. 使缓存无效/重新启动
  2. 清理项目
  3. 手动删除构建文件夹(此文件夹需要在项目视图中)
  4. 对您的 AndroidManifest.xml 文件进行故意错误编辑,构建应用程序,观察错误,删除错误编辑并重新构建
  5. 禁用即时运行

同样,我并不是要暗示这将解决每个人的错误,但我现在已经在两台不同的机器(MacOS Sierra)上使用了这些步骤的一些组合,并且已经为我解决了。希望能帮助到你。

于 2017-06-19T18:38:14.577 回答
2

就我而言,应用程序 ID不匹配。这应该与以下图像中显示的相同...

AndroidManifest.xml

在此处输入图像描述

应用程序/build.gradle

在此处输入图像描述

在这种情况下,您可以看到applicationIdpackage都相同,即com.mycompany.mygamelibrary

于 2017-08-30T07:20:24.880 回答
1

可能是它的构建路径配置问题。我做了以下来解决这个问题。

1.右键单击您的项目并转到Java Build Path。

2.单击订单和导出选项卡。

3.检查 Android Private Libraries 和其他第 3 部分库(如果已添加)。

4.按确定并清理项目。我希望它能解决问题。

于 2013-07-31T08:53:17.293 回答
1

一旦我收到相同的错误消息,但原因可能不一样。

我做了一个代码并工作了一段时间,然后我想改进它并得到同样的错误并且我无法运行它。

我可以解决这个问题

  • 正确的构建路径顺序(我可以看到你已经这样做了)
  • 我检查了 android-support-v4.jar 的 Order and Export 选项卡
  • 关键是Android SDK Managert->升级所有内容和(下一个)Eclipse->帮助->检查更新。

在我升级到最新的 android 插件和 SDK 后,我的应用程序再次编译并运行。

我希望这能帮到您!

于 2013-08-07T08:31:24.890 回答
1

我对此不太确定,但可能是您系统的 debug.keystore 许可证有效期已过期,因为它的有效期仅为 365 天。您只需要从计算机中删除 debug.keystore。debug.keystore 将在您编译 Android 应用程序时由 Eclipse 自动生成。

于 2013-08-07T13:55:11.820 回答
1

看到相同的消息......这次结果是构建路径中 MyApp/gen 和 MyApp/src 的不同输出文件夹(由 Maven 集成引起)。

取消选中“允许源文件夹的输出文件夹”解决了这个问题。

于 2014-05-26T13:30:07.700 回答
0

我在一个 Android 应用程序中遇到了这个问题,该应用程序需要一个 Application 类,该类是在 Android Studio 项目中的错误路径中创建的。当我将类文件移动到正确的包时,它被修复了。

于 2017-02-12T12:33:00.670 回答
0

这一切流程都为我解决了应用程序类异常。

第 1 步:打开运行(window+R)搜索 -> 预取删除所有文件(某些文件未删除)

第 2 步:打开运行(window+R)搜索 -> %temp% 删除所有文件(某些文件未删除)

第 3 步:打开 Android Studio -> 构建 -> 清理项目

或者

从 Android Studio 工具栏中选择 File > Invalidate Caches / Restart > Invalidate and Restart。

或者

关闭并重新打开 Android 项目。

或者

重启系统

于 2017-10-28T11:55:58.273 回答
0

我多次遇到这个问题,两次似乎都是由一些即时运行功能引起的。

在我的情况下,从设备中删除应用程序,然后从 Android Studio 安装它再次解决了这个问题。

于 2018-11-30T17:29:25.933 回答
0

我今天遇到了这个问题。该项目运行了一年多,但今天它报告了这个问题,并且无法在我的测试设备上调试。

我通过更新到最新的 gradle 版本来修复它。希望这可以解决您的问题。

于 2019-11-03T03:31:07.213 回答