ClassNotFoundException после изменения названия приложения в Android - PullRequest
4 голосов
/ 10 декабря 2010

У меня есть приложение с основным классом, которое называется com.quarlityaq.quarlityaqcall.QuarlityaqCall.

. После завершения программирования я изменил имя приложения на «JCall для рабочих мест», изменив 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 для рабочих мест» вместо «QuarlityaqCall», и почему это происходит только на некоторых устройствах?

Ответы [ 2 ]

2 голосов
/ 10 декабря 2010

Имя приложения в манифесте относится к вашему классу приложения.Если вы не реализовали свой собственный класс Application, у вас не должно быть атрибута name в вашем файле манифеста.Если вы реализовали его, убедитесь, что атрибут ссылается на правильный класс.

Вы не должны экспортировать атрибут name в strings.xml, так как это технический параметр для вашего приложения.Ярлык - тот, который виден пользователям.

0 голосов
/ 17 сентября 2013

Эта ошибка также может быть вызвана вызовом getApplicationContext () (или аналогичным упражнением, требующим этого контекста, например, подключением объекта через getSharedPreferences) в методе объявления класса приложения.

Переместите эти вызовы в переопределение метода onCreate (или что-то подобное).Вы получите нулевой указатель на контекст приложения, если вызовете его до того, как будет полностью создан экземпляр приложения - переместив этот код в метод / функцию «глубже» в «стеке реализации», вы получите доступ к ненулевому контексту(тот, который был полностью создан).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...