我使用BackupAgentHelper
备份我的Android应用中的SharedPreferences
。我已经在模拟器(Android 1.6和2.2)和我自己的手机(Android 2.3.3)上进行了测试,一切正常。但是,今天我在Developer Console中收到了崩溃报告,如下所示:
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
backupAgent在Manifest中的application标记中声明为:
android:backupAgent="com.xxx.yyy.MyBackupAgent"
显然,类MyBackupAgent
是,因为我可以构建.apk
并且它在几个设备上运行得很好。那怎么可能没有在这里找到班级呢?我在上面的消息中注意到的一件事是,应用程序似乎安装在一个路径中,该路径具有我的包名称并且末尾附加了“-2”。这会导致类加载器看不到我的包中的类,因为我在android:backupAgent
中指定了完整的包名和类,或者该部分无关紧要?任何人都能理解无法找到班级的原因吗?
值得一提的是我的应用程序可以安装在SD卡上。
请原谅我在上面的邮件中用com.xxx.yyy替换我的真实包名。
答案 0 :(得分:-1)
对我而言,设备上似乎安装了重复的软件包。如果我是你,我会测试:
我知道这些问题可能看起来像船长明显但我不能告诉你这两件事有多少次救了我。