"无法实例化活动"错误

rbc*_*bcc 27 java mobile android

我的一个Android应用程序有大约100,000个用户,每周大约10次,我通过Google的市场工具向我报告以下异常:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.rebm.asp/org.rebm.asp.MainActivity}:
  java.lang.ClassNotFoundException: org.rebm.asp.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/org.rebm.asp-1/pkg.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2753)
at android.app.ActivityThread.access$2500(ActivityThread.java:129)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2107)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: org.rebm.asp.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/org.rebm.asp-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2651)
... 11 more
Run Code Online (Sandbox Code Playgroud)

从在线搜索,此错误通常表示清单文件和正在使用的包名称有问题.但是,我无法在自己的设备或模拟器上重现此错误.我只通过市场工具知道这个错误.我可以得出的结论是,这是一个罕见的错误,因为我知道很多人正在使用该应用程序,没有一个评论表明它崩溃了.

有谁知道问题可能是什么或我如何诊断它?

par*_*cle 15

您在问题中提供的堆栈跟踪包含问题是由于将应用程序移动到SD卡所致:

java.lang.RuntimeException:无法实例化活动ComponentInfo {org.rebm.asp/org.rebm.asp.MainActivity}:java.lang.ClassNotFoundException:org.rebm.asp.MainActivity in loader dalvik.system.PathClassLoader [/ mnt /asec/org.rebm.asp-1/pkg.apk]

如您所见,应用程序的路径包含/ mnt/asec,它是Android安全应用程序安装点.

为了验证是否由于Apps2SD发生此问题,您应该检查您的所有堆栈跟踪是否包含应用程序路径中的/ mnt/asec目录.如果它们都是如此,您可以确定它是Apps2SD错误.

正如其他人所说,由于SD卡在加载应用程序时不可用或者SD卡上的损坏的asec分区,有时会出现这些问题.

您的应用程序是否以任何方式注册自己以在启动时启动,或者它是某种小部件,系统即使在尚未安装SD卡时也会尝试加载?如果是这样,也许您应该关闭将应用程序移动到SD卡的选项.

  • 我可以确认我的所有堆栈跟踪(大约50个)包含/ mnt/asec行.这是一款游戏,因此在启动时不需要任何特殊处理. (2认同)

小智 2

所有已发行的游戏都存在相同的“罕见”问题。

可能是安装到 SD 卡或将应用程序移至 SD 卡然后取出 SD 卡时出现问题。

另一种猜测是该应用程序以某种方式被多次下载或安装。

我无法重现这一点,所以也无法确定它。