2016-06-12 15 views
2

Hinweis: Dies ist keine fehlende Klasse in einem Glas, also nicht überstürzen, um dies als ein Duplikat zu markieren.
Ich portiere ein großes Projekt von der Sonnenfinsternis auf Android Studio. Es ist mir schließlich gelungen, meine SplashActivity auf dem Bildschirm zu sehen, aber ich bekomme die MainActivity nicht, die nach meiner SplashActivity gestartet wurde. Ich erhalte die folgende Fehlermeldung auf Laufzeit:Aktivität NoClassDefFoundError mit Android Studio

> 06-13 14:42:30.176 12389-12389/com.totalboox E/AndroidRuntime: FATAL 
> EXCEPTION: main Process: com.totalboox, PID: 12389 
> java.lang.NoClassDefFoundError: com.androidcore.android.main.MainActivity$4 
> at com.androidcore.android.main.MainActivity.<init>(MainActivity.java:587) 
> at java.lang.Class.newInstance(Native Method) 
> at android.app.Instrumentation.newActivity(Instrumentation.java:1067) 
> at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317) 
> at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
> at android.app.ActivityThread.-wrap11(ActivityThread.java) 
> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
> at android.os.Handler.dispatchMessage(Handler.java:102) 
> at android.os.Looper.loop(Looper.java:148) 
> at android.app.ActivityThread.main(ActivityThread.java:5417) 
> at java.lang.reflect.Method.invoke(Native Method) 
> at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

MainActivity wird im Manifest erklärt:

<activity 
    android:name="com.androidcore.android.main.MainActivity" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo.Light" 
    android:windowSoftInputMode="stateHidden|adjustPan" 
    android:launchMode="singleTop"> 
    <intent-filter> 
     <action android:name="com.totalboox.MESSAGE"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
</activity> 

Der Code bei MainActivity: 587

// Pushwoosh lib Integration (siehe https://www.pushwoosh.com/programming-push-notification/android/native-android-sdk-integration/)

BroadcastReceiver mBroadcastReceiver = new RegisterBroadcastReceiver() 
{ 
    @Override 
    public void onRegisterActionReceive(Context context, Intent intent) 
    { 
     checkMessage(intent); 
    } 
}; 

Wo RegisterBroadcastReceiver von einer externen Lib ist (Pushwoosh) Umgang mit Benachrichtigungen.

Der Code in SplashActivity Start MainActivity:

Intent mainActivity = new Intent(this, MainActivity.class); 
mainActivity.putExtra("deep_link_book_id", deepLinkBookId); 
startActivity(mainActivity); 
finish(); 

dieses Googeln fand ich Leute dieses Problem mit einem Glas mit. In meinem Fall ist MainActivity.java eines meiner Quellmodule und sein Paketname ist package com.androidcore.android.main; genau wie im Manifest angegeben. Das Projekt besteht aus 4 Teilprojekten. SplashActivity & MainActivity befinden sich im selben Teilprojekt.

Ich habe unzählige Stunden damit verbracht. Ich habe versucht: Clean, Rebuild, Cache ungültig und Neustart - nichts half. Jeder kann beraten, wie man diesen Albtraum stoppt? Vielen Dank im Voraus !

+1

Schreibe den Code im Zusammenhang mit MainActivity: 587 –

+1

'MainActivity $ 4' Regel bedeutet eine innere Klasse, möglicherweise anonym, Ihrer Aktivität –

+3

actionandroid -> aktion android, categoryandroid -> kategorie android –

Antwort

0

Dies kann für die Intent-Filter verwenden:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

, wenn Ihr Paket Name: (kann com.androidcore.android sein - bitte?)

com.androidcore.android.main 

dann für Namen verwenden: (falls Paket Name com.androidcore.android dann .main.MainActivity verwenden)

android:name=".MainActivity" 

eigentlich am besten Namen für Paket ist Ihre Domain umgekehrt:

com.yourdomain.yourprojectname 

dies in Erinnerung behalten, cool zu sein)

+0

Die Absicht Filter Aktion wird intern von der App gesendet, so ist es nicht android.intent.action.MAIN MainActivity Kategorie ist nicht LAUNCHER (der Launcher ist SplashActivity) Der Paketname ist korrekt. Es beginnt nicht mit com.yourdomain. Refactoring auf diesen Namen hat nicht funktioniert. Ich vermute, dass dies ein Nebeneffekt des Eclipse-zu-AndroidStudio-Portierungstools ist. – Senti

Verwandte Themen