1

私のアプリケーションは Google Maps API を使用しています。Eclipse からインストールした場合は正常に動作しますが、apk をエクスポートしてその apk からインストールすると、アプリケーションがクラッシュし、このエラーが報告されます

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>

誰でも助けることができますか?

4

2 に答える 2

1

これは、署名付きの apk を Eclipse からエクスポートするときによく発生します。私は問題の根本にたどり着いていませんが、私の回避策は単に apk を再エクスポートし、テストのためにデバイスにインストールしてみることです。約 3/4 の時間は APK に問題がなく、残りの時間はアプリを開こうとするとすぐにクラッシュすると見積もっています。

于 2012-11-15T16:49:29.367 に答える
1

@David Currieが説明していることを観察できません。私にとっては、exclise を介したエクスポートまたはコンパイルも同じように機能します。一方が機能する場合、もう一方も機能します。

スタック トレースを見ると、クラス ローダーにあるはずの 2 つのファイルが示されています。

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

それらのファイルは存在しますか? 2 番目の拡張子は何ですか? その名前は奇妙です。「-1.pkg.apk」で終わります。最初にこれを調査する必要があります。また、ツールdexdumpを使用して、クラスcom.mycom.myapp.MainActivityが apk ファイル内にあるかどうかを確認することもできます。

com.mycom.myapp.MainActivityリリース apk 内の dex ファイルに「クラス記述子」を含む行があるかどうかを再確認してください。

于 2012-11-16T07:05:53.013 に答える