当从导出的apk安装时,应用程序在maps.jar文件上崩溃,如果我在eclipse中安装它,则工作

问题描述:

我的应用程序使用Google Maps API。它运作良好,如果我在Eclipse安装了它,但是当我APK导出并安装从APK应用程序崩溃,并报告该错误当从导出的apk安装时,应用程序在maps.jar文件上崩溃,如果我在eclipse中安装它,则工作

11-15 16:30:29.692: E/AndroidRuntime(14405): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycom.myapp/com.mycom.myapp.MainActivity}: java.lang.ClassNotFoundException: com.mycom.myapp.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/mnt/aseccom.mycom.myapp-1/pkg.apk] 


    11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.os.Looper.loop(Looper.java:150) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread.main(ActivityThread.java:4389) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at java.lang.reflect.Method.invokeNative(Native Method) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at java.lang.reflect.Method.invoke(Method.java:507) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at dalvik.system.NativeStart.main(Native Method) 
11-16 01:47:41.999: E/AndroidRuntime(19577): Caused by: java.lang.ClassNotFoundException: com.mycom.myapp.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/mnt/asec/com.mycom.myapp-1/pkg.apk] 
11-16 01:47:41.999: E/AndroidRuntime(19577): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 
11-16 01:47:41.999: E/AndroidRuntime(19577): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777) 
11-16 01:47:42.009: E/EmbeddedLogger(183): App crashed! Process: com.mycom.myapp 
11-16 01:47:42.009: E/EmbeddedLogger(183): App crashed! Package: com.mycom.myapp v1 (1.0) 
11-16 01:47:42.009: E/EmbeddedLogger(183): Error getting package label: com.mycom.myapp 
11-16 01:47:42.009: E/EmbeddedLogger(183): java.lang.NullPointerException 
11-16 01:47:42.009: E/EmbeddedLogger(183): at com.htc.server.embedded.EmbeddedLogger.onHandleApplicationCrash(EmbeddedLogger.java:59) 
11-16 01:47:42.009: E/EmbeddedLogger(183): at com.android.server.am.ActivityManagerService.handleApplicationCrash(ActivityManagerService.java:7739) 
11-16 01:47:42.009: E/EmbeddedLogger(183): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:1033) 
11-16 01:47:42.009: E/EmbeddedLogger(183): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1657) 
11-16 01:47:42.009: E/EmbeddedLogger(183): at android.os.Binder.execTransact(Binder.java:320) 
11-16 01:47:42.009: E/EmbeddedLogger(183): at dalvik.system.NativeStart.run(Native Method) 
11-16 01:47:42.009: E/EmbeddedLogger(183): Application Label: <ERROR> 

任何一个可以帮助?

+0

请给予您更多的堆栈跟踪线给你。 – Snicolas

+0

我加了。谢谢。 – MSaudi

当我从Eclipse导出已签名的apk时,经常会发生这种情况。我没有找到问题的根源,但我的解决方法是简单地重新导出apk并尝试安装到设备上进行测试。我估计大约3/4的时间apk是好的,其余的时候它试图打开应用程序立即崩溃。

我不能观察@David Currie描述的内容。对我而言,通过exclipse导出或编译工作方式相同,如果一个工作,另一个工作。

当你看到堆栈跟踪,它提到的两个文件,应该是在类装载器:

  • /system/framework/com.google.android.maps.jar
  • 到/ mnt/aseccom.mycom.myapp-1/pkg.apk

那些文件存在吗?第二个扩展是什么?它的名字很奇怪。它以“-1.pkg.apk”结尾。你应该先调查一下。您也可以使用工具dexdump来检查您的类com.mycom.myapp.MainActivity是否在您的apk文件中。

仔细检查您的dex文件中的com.mycom.myapp.MainActivity是否在您的发行版apk中出现含有“类描述符”的行。