编辑:此问题尚未在其他建议的SO问题中得到解决
我在市场上有一个完整的应用程序超过一年,很少有崩溃报告。最近我将我的应用程序更改为一个库,以便它可以包含在多个不同的“包装器”项目中。这样我就可以轻松制作不同版本 - 免费,付费,非谷歌市场,有/无应用内购买等等。
新的“库+包装”应用似乎工作正常。我可以多次运行它,没有错误。但是后来一天之后(当大概是操作系统关闭了部分或全部应用程序的活动时)我试图运行它并报告
Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass
它找不到的类是程序启动时运行的第一个类MyGameApplicationClass - 它扩展了Application
。这个类是库的一部分。
我怀疑两个清单文件中有一个出了问题。
包装器项目的清单包含行......
<application android:icon="@drawable/mygame_icon"
android:screenOrientation="portrait" android:label="My Game Name"
android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">
任何可能出错的想法?
编辑:根据yorkw对this SO question的回答,该库被引用为“正确的方式”。
编辑:我现在无法重复崩溃:-(我不知道当应用程序一两天不使用时操作系统会做什么。
答案 0 :(得分:17)
有两种可能性。你和我一样,你的清单文件中有拼写错误。让同事或朋友阅读它以确保名称正确。或者您没有正确引用该项目。
官方文档介绍了如何正确链接its documentation中的项目。
为什么它首先似乎工作,后来停止工作有点神秘。但是,我猜VM可能仍然已经准备好了必要的引用来解析库中的类。重新启动VM删除了所有这些引用并尝试解决它们是不成功的。
更新:关于OP中的修改:当您确认已正确引用其他项目时,可以检查项目是否包含在APK中,只是为了确定。您可以像任何其他存档一样重命名和打开APK(.rar适用于我)。有时,它发生在我身上,项目未正确包含在APK中。清理工作区通常可以解决问题,因此可以根据您使用的内容重新启动IDE。例如,要在Eclipse中手动执行清理,请使用Project->Clean...
或通过右键单击项目来尝试Android Tools->Fix Project Properties
。
由于您似乎也通过重新启动设备解决了问题,因此可能是库未正确链接。一个我从未见过的问题,但作为一个非常常见的引用说:“你试过把它关掉再打开吗?”。
答案 1 :(得分:13)
对于Android Studio:
Build
- &gt;的 Clean Project
强>
修正了问题。
答案 2 :(得分:4)
您是否尝试在“主”项目中创建MyGameApplicationClass的新子类,并将其作为Application类在清单中设置?
答案 3 :(得分:3)
我在Android Studio 3.0 Canary 4中遇到了很多错误,我修复它们的方法是通过在应用程序名称中添加一些乱码来编辑AndroidManifest.xml。然后,我点击了构建。显然,出现了一大堆新的错误消息。我将名称改回原来的名称,构建应用程序,然后就跑了。
有时,我只是不知道......
编辑:切换时,我的笔记本电脑上的Android Studio 3.0 Canary 4上遇到了这个问题。我再次经历了更改AndroidManifest.xml文件的相同过程,以包含拼写错误,构建和更改。那不行。
然后我注意到即时运行仍然启用。进入设置(通过单击命令+,(逗号键))并键入&#34;即时运行&#34;,我能够禁用即时运行,构建应用程序,并且找不到类的错误。
修复[FOR ME]的步骤摘要
同样,我并不是要暗示这会解决所有人的错误,但我现在已经在两台不同的机器(MacOS Sierra)上使用了这些步骤的某些组合,并且它已经为我解决了。希望能帮助到你。
答案 4 :(得分:1)
可能是它的构建路径配置问题。我做了以下事情来解决这个问题。
1.右键单击您的项目并转到Java Build Path。
2.单击“订购和导出”选项卡。
3.如果您已添加,请查看Android私有库和其他第三方库。
4.按下确定并清理项目。 我希望它能解决这个问题。
答案 5 :(得分:1)
一旦我收到相同的错误消息,但可能原因不一样。
我做了一段代码并且工作了一段时间,然后我想改进它并得到同样的错误而且我无法运行它。
我可以用
解决问题在我升级到最新的android插件和SDK后,我的应用程序已编译并再次运行。
我希望这会对你有所帮助!
答案 6 :(得分:1)
我对此不太确定,但可能是您的系统的debug.keystore许可证有效期已过期,因为它仅有效365天。您只需要从计算机中删除debug.keystore。编译Android App时,Eclipse将自动生成debug.keystore。
答案 7 :(得分:1)
看到相同的消息......这次在Build Path中发现了MyApp / gen和MyApp / src的不同输出文件夹(由Maven集成引起)。
取消选中“允许源文件夹的输出文件夹”解决了这个问题。
答案 8 :(得分:1)
就我而言,应用程序ID 和包不匹配。这应该与下面的图片中所示相同......
<强>的AndroidManifest.xml 强>
应用/的build.gradle 强>
在这种情况下,您可以看到, applicationId 和包都与 com.mycompany.mygamelibrary
相同答案 9 :(得分:1)
这个所有Process工作都为我解决了应用程序类的异常。
第1步:打开运行(窗口+ R)搜索 - &gt;预取删除所有文件(某些文件不是删除)
步骤2:打开运行(窗口+ R)搜索 - &gt; %temp%删除所有文件(某些文件不删除)
第3步:打开Android Studio - &gt;构建 - &gt;清洁项目
OR
选择文件&gt;无效缓存/重新启动&gt;从Android Studio工具栏中失效并重新启动。
OR
关闭并重新打开Android项目。
OR
重启系统
答案 10 :(得分:0)
我在Android应用程序中遇到了这个问题,该应用程序需要在Android Studio项目中的错误路径中创建的Application类。当我将类文件移动到正确的包时,它已被修复。
答案 11 :(得分:0)
我多次遇到此问题,两次都似乎是由某些即时运行功能引起的。
就我而言,从设备中删除该应用程序,然后再从Android Studio安装该应用程序即可解决此问题。
答案 12 :(得分:0)
我今天遇到了这个问题。该项目运行了一年多,但是今天它报告了此问题,并且无法在我的测试设备上进行调试。
我通过更新到最新的gradle版本来修复它。希望这可以解决您的问题。