2010-12-14 8 views
3

Ich habe eine funktionierende Android-Anwendung. Es funktioniert auf mehr als 500 verschiedenen Geräten. Das Manifest istClassNotFoundException auf Galaxy Tab (nur)

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="info.decamps.droid.photoid" android:versionCode="5" 
android:versionName="1.4"> 
<application android:icon="@drawable/icon" android:label="@string/app_label" 
    android:name="PhotoIDroid" android:description="@string/app_desc" 
    android:debuggable="FALSE"> 

Aber wenn es sich von einem Samsung Galaxy Tab ins Leben gerufen, ist es nicht starten und stürzt mit:

java.lang.RuntimeException: Kann nicht instantiate Anwendung Info. decamps.droid.photoid.PhotoIDroid: java.lang.ClassNotFoundException: info.decamps.droid.photoid.PhotoIDroid in loader dalvik.system.PathClassLoader [/data/app/info.decamps.droid.photoid-1. apk] bei android.app.ActivityThread $ PackageInfo.makeApplication (ActivityThread.java:670) bei android.app.ActivityThread.handleBindApplication (ActivityThread.java:4483) bei android.app.ActivityThread.access $ 3000 (ActivityThread.java: 135) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2181) bei android.os.Handler.dispatchMessage (Handler.java:99) bei android.os.Looper.loop (Looper .java: 144) um android.app.ActivityThread.main (ActivityThread.java:4937) um java.lang.reflect.Method.invokeNative (Native Me thod) bei java.lang.reflect.Method.invoke (Method.java:521) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) bei com.android. internal.os.ZygoteInit.main (ZygoteInit.java:626) bei dalvik.system.NativeStart.main (Mutter Methode) verursacht durch: java.lang.ClassNotFoundException: info.decamps.droid.photoid.PhotoIDroid in loader dalvik.system.PathClassLoader [/data/app/info.decamps.droid.photoid-1.apk] bei dalvik.system.PathClassLoader.findClass (PathClassLoader.java:243) bei java.lang.ClassLoader.loadClass (ClassLoader.java:573) bei java.lang.ClassLoader.loadClass (ClassLoader.java:532) bei android.app.Instrumentation.newApplication (Instrumentation.java:945) bei android.app.ActivityThread $ PackageInfo.makeApplication (ActivityThread.java:660) ... 11 weitere

Wie ein das Samsung Galaxy nicht die Anwendungsklasse finden? Irgendwelche Hinweise zur Lösung?

Ich konnte diesen Absturz auf dem Samsung Galaxy Emulator reproduzieren.

+0

Ich benutze nicht ProGuard – rds

+2

@rds: Was ist die Oberklasse von 'info.decamps.droid.photooid.PhotoIDroid'? – CommonsWare

+0

@CommonsWare Ich bin mir nicht sicher, ob ich deine Frage verstehe. Ich habe diese Klasse nicht entwickelt, es ist die Klasse "Application" (http://developer.android.com/reference/android/app/Application.html), die von Android aus dem Manifest generiert wird. Aus dem Dokument "Hier ist normalerweise keine Notwendigkeit, Anwendung zu unterklassifizieren." – rds

Antwort

0

Ich habe die android:name Attribut-Deklaration aus dem AndroidManifest.xml entfernt und es funktioniert jetzt.

+0

Das bedeutet im Grunde, dass es nicht mehr verwendet Ihre benutzerdefinierte "Application" -Klasse. Wenn das für Sie funktioniert, cool. Wenn nicht, da die Oberklasse ('Application') vermutlich da ist, überprüfen Sie statische Initialisierungen und dergleichen, um zu sehen, was Sie fragen, die möglicherweise fehlen. – CommonsWare

+0

Danke, aber ich habe keine benutzerdefinierte Application-Klasse geschrieben.Es scheint, die meisten Handys (und der Emulator) ignorieren den 'android: name', wenn die Klasse nicht existiert.Vielleicht wurde es kürzlich in der API hinzugefügt (daher von alten ignoriert Geräte) – rds

+1

android: Name ist seit 1.0 dort gewesen, und sollte immer die App zum Absturz bringen, wenn die angegebene Klasse nicht gefunden werden kann. Seltsam. – hackbod