2012-02-22 22 views
9

Ricevo la seguente eccezione ogni volta che reinstallo il mio tramite eclissi. Accade ogni volta che reinstalla un'applicazione che è attualmente in primo piano.L'app Android si arresta in modo anomalo durante l'installazione di

Mi aspetto che questo errore si verifichi solo durante lo sviluppo perché causo la disinstallazione di un'applicazione in esecuzione tramite Eclipse.

Qualcuno ha visto questo errore sui telefoni dell'utente?

Questo è iniziato per me quando sono passato a un Galaxy Nexus con ICS.

02-22 11:31:07.098: E/AndroidRuntime(479): FATAL EXCEPTION: main 
02-22 11:31:07.098: E/AndroidRuntime(479): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.makeApplication(LoadedApk.java:466) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.ActivityThread.access$2200(ActivityThread.java:117) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.os.Looper.loop(Looper.java:123) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-22 11:31:07.098: E/AndroidRuntime(479): at java.lang.reflect.Method.invokeNative(Native Method) 
02-22 11:31:07.098: E/AndroidRuntime(479): at java.lang.reflect.Method.invoke(Method.java:507) 
02-22 11:31:07.098: E/AndroidRuntime(479): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-22 11:31:07.098: E/AndroidRuntime(479): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-22 11:31:07.098: E/AndroidRuntime(479): at dalvik.system.NativeStart.main(Native Method) 
02-22 11:31:07.098: E/AndroidRuntime(479): Caused by: java.lang.NullPointerException 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:346) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.getClassLoader(LoadedApk.java:291) 
02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.makeApplication(LoadedApk.java:458) 
02-22 11:31:07.098: E/AndroidRuntime(479): ... 11 more 

Nei registri precedenti non ho trovato alcuna cosa correlata alla mia domanda. Ma continua a schiantarsi.

Qualcuno può dirmi qual è la ragione di questo? È un errore in Ice Cream Sandwich del Galaxy Nexus?

+5

puoi caricare il tuo codice per favore? – Android

+1

c'è un NP.check esso. –

+0

perché per downvotare per questo, non c'è niente a che fare con la mia applicazione nei registri mostra NullPointer relativo a android.app.application se volete che abbia postato il mio manifest anche con il tag dell'applicazione. – sankar

risposta

0

Si dispone di un puntatore nullo sulla riga 346 nel metodo initializeJavaContextClassLoader.

02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:346) 

Modifica

Ecco il metodo della GrepCode/com.google.android/android/2.3_r1/ android.app.LoadedApk (a partire da line 326)

private void initializeJavaContextClassLoader() { 
    IPackageManager pm = ActivityThread.getPackageManager(); 
    android.content.pm.PackageInfo pi; 
    try { 
     pi = pm.getPackageInfo(mPackageName, 0); 
    } catch (RemoteException e) { 
     throw new AssertionError(e); 
    } 
    /* 
    * Two possible indications that this package could be 
    * sharing its virtual machine with other packages: 
    * 
    * 1.) the sharedUserId attribute is set in the manifest, 
    *  indicating a request to share a VM with other 
    *  packages with the same sharedUserId. 
    * 
    * 2.) the application element of the manifest has an 
    *  attribute specifying a non-default process name, 
    *  indicating the desire to run in another packages VM. 
    */ 
    boolean sharedUserIdSet = (pi.sharedUserId != null); 
    boolean processNameNotDefault = 
      (pi.applicationInfo != null && 
      !mPackageName.equals(pi.applicationInfo.processName)); 
    boolean sharable = (sharedUserIdSet || processNameNotDefault); 
    ClassLoader contextClassLoader = 
      (sharable) 
      ? new WarningContextClassLoader() 
    : mClassLoader; 
      Thread.currentThread().setContextClassLoader(contextClassLoader); 
} 

Sembra che si stia tentando di condividere una macchina virtuale con un altro pacchetto.

+0

Ya so ma questo LoadedApk.java è una classe correlata al sistema che cosa posso fare con il mio codice. È il mio problema di emulatore. – sankar

+1

No, non è il tuo emulatore. Sì LoadedApk.java è un file correlato al sistema ma è qualcosa che stai facendo con quel metodo. È il tuo codice che posso quasi garantirlo! – rf43

+2

Non ho usato questo metodo in nessuna parte del mio codice. Questa classe viene utilizzata durante il caricamento dell'apk nel dispositivo, quindi cosa ho fatto per questo nel mio codice. – sankar

1

ho avuto questo problema quando someting in XML è sbagliato, forse basta rigenerare il R.java

0

Ho avuto questo problema di recente, ma mostrando in IDEA. Ho dovuto passare da metà progetto a Eclipse - ahi! Non ho avuto buone risposte qui e alla fine, dopo aver finito il progetto, sono tornato all'IDEA e ho provato di nuovo. La soluzione finale era spostare il progetto fuori dal mio spazio di lavoro, eliminare tutto tranne la mia fonte e le risorse, quindi creare un nuovo progetto da fonti esistenti. Ho perso ore cercando di capirlo e potrebbe funzionare solo per te in Eclipse. Vale la pena provare ...

Buona fortuna

Problemi correlati