Я использую BackupAgentHelper
для резервного копирования SharedPreferences
в моем приложении для Android.Я протестировал его в эмуляторе (Android 1.6 и 2.2) и на своем телефоне (Android 2.3.3), и все это работает хорошо.Однако сегодня я получил отчет о сбое в консоли разработчика, который выглядит следующим образом:
java.lang.RuntimeException: Unable to create BackupAgent com.xxx.yyy.MyBackupAgent: java.lang.ClassNotFoundException: com.xxx.yyy.MyBackupAgent in loader dalvik.system.PathClassLoader[/mnt/asec/com.xxx.yyy-2/pkg.apk]
at android.app.ActivityThread.handleCreateBackupAgent(ActivityThread.java:2114)
at android.app.ActivityThread.access$3200(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1138)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4196)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.xxx.yyy.MyBackupAgent in loader dalvik.system.PathClassLoader[/mnt/asec/com.xxx.yyy-2/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at android.app.ActivityThread.handleCreateBackupAgent(ActivityThread.java:2064)
... 10 more
Агент резервного копирования объявлен в теге приложения в манифесте как:
android:backupAgent="com.xxx.yyy.MyBackupAgent"
класс MyBackupAgent
присутствует , так как я могу собрать .apk
, и он отлично работает на нескольких устройствах.Так как может быть, что он не находит здесь класс?Одна вещь, которую я заметил в сообщении выше, это то, что приложение, кажется, установлено по пути, в котором есть имя моего пакета И добавленный «-2» в конце.Может ли это привести к тому, что загрузчик классов не увидит класс в моем пакете, поскольку я указываю полное имя пакета и класс в android:backupAgent
, или эта часть не имеет значения?Кто-нибудь может понять, в чем причина того, что класс не может быть найден?
Стоит упомянуть, что мое приложение можно установить на SD-карту.
Извините за замену моего реального имени пакета на com.xxx.yyy в сообщении выше.