我有一个名为com.quarlityaq.quarlityaqcall.QuarlityaqCall
的主要类的应用。
完成编程后,我将应用名称更改为“JCall for jobs”
通过将app_name
下的strings.xml
更改为“JCall for jobs”
android:label="@string/app_name"
android:name="@string/app_name"
在我的设备上它运行正常,但在其他一些设备上它会崩溃并抛出:
java.lang.RuntimeException: Unable to instantiate application com.quarlityaqcall.QuarlityaqCall.JCall for jobs:
java.lang.ClassNotFoundException: com.quarlityaqcall.QuarlityaqCall.JCall for jobs
in loader dalvik.system.PathClassLoader[/data/app-private/com.quarlityaqcall.QuarlityaqCall-1.apk]
Caused by: java.lang.ClassNotFoundException:
com.quarlityaqcall.QuarlityaqCall.JCall for jobs in loader
dalvik.system.PathClassLoader[/data/app-private/com.quarlityaqcall.QuarlityaqCall-1.apk]
我不明白为什么它会找到类名“JCall for jobs”而不是“QuarlityaqCall”,以及它为什么只在某些设备上发生?
答案 0 :(得分:2)
清单中的应用程序名称是指您的Application类。如果您尚未实现自己的Application类,则不应在清单文件中包含name属性。如果您已实现了一个,则应确保该属性引用正确的类。
您不应将names属性导出到strings.xml,因为它是您应用的技术参数。标签是用户可见的标签。
答案 1 :(得分:0)
此错误也可能是由于在应用程序类的声明方法中调用getApplicationContext()(或需要此上下文的类似练习,例如通过getSharedPreferences连接对象)。
将这些调用移到'onCreate'方法(或类似的东西)的覆盖上。如果在完全实例化应用程序上下文之前调用它,则会获得指向应用程序上下文的空指针 - 通过将此代码移动到“实例化堆栈”中的“更深”的方法/函数,您将访问非空上下文(已经完全实例化的那个)。