2016-10-26 6 views
6

Wenn das Debuggen von meinem Projekt auf dem Android-Emulator starten erhalte ich diesen Fehler:Xamarin Fehler Forms: java.lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompat

java.lang.NoClassDefFoundError: android.support .graphics.drawable.VectorDrawableCompat

an diesem Code:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     //SQLitePCL.Batteries.Init(); 
     TabLayoutResource = Resource.Layout.Tabbar; 
     ToolbarResource = Resource.Layout.Toolbar; 

     base.OnCreate(bundle); 

     string dbPath = FileAccessHelper.GetLocalFilePath("clocker.db3"); 

     global::Xamarin.Forms.Forms.Init(this, bundle); 
     LoadApplication(new Clocker.App(dbPath)); 
    } 
} 

die Fehler auf dieser Zeile auftreten:

base.OnCreate(bundle); 

Ich habe versucht, online auf den anderen Vorschläge, aber die Antworten zu suchen scheinen auf bestimmte Xamarin Studio Dateien verwendet, die nicht existierend in meinem Projekt sind (I. G. die Gradle-Datei).

Ich habe den Inhalt von ‚Bündel‘ überprüft und es scheint, die zum Zeitpunkt des Fehlers null zu sein, aber ich bin nicht sicher, ob dies den Fehler verursacht.

I Xamarin bin mit bildet PCL.

+0

Können Sie Ihren Quellcode setzen irgendwo, so dass wir eine Lösung zu reproduzieren versuchen kann? –

Antwort

0

Der Fehler Java.Lang.NoClassDefFoundError: bedeutet, dass Sie eine Klasse sind vermisst. Es sagt Ihnen, welche Klasse Sie ebenfalls vermissen: android.support.graphics.drawable.VectorDrawableCompat. Ich habe Xamarin selbst nicht benutzt, aber ihre Dokumentation beschreibt, wie use Java classes in C# -Code. Sobald das Paket, das die Klasse android.support.graphics.drawable.VectorDrawableCompat enthält (VectorDrawableCompat.java, die in android.support.graphics.drawable Ich denke?) Importiert wird, sollte Ihr Code ausgeführt werden.

+0

Ich habe alle Klassen hinzugefügt, die sich als mögliche Lösung herausstellen, aber nichts funktioniert. Es ist schwierig zu wissen, was mit Hunderten verfügbar ist. – connersz

+0

Glücklicherweise müssen Sie nicht Hunderte von Klassen durchsehen. Ihre Fehlermeldung zeigt Ihnen, wo Sie suchen müssen. Ich habe meine Antwort mit einem Link zu den entsprechenden Android-Docs aktualisiert. – Necoras

+0

Ich habe bereits die Klasse, die Sie erwähnt haben. – connersz

1

Dieser Fehler kann tritt mit mehrere Klasse, wenn der Projektpfad zu lang ist, weil es die Grenze von Operational System Zeichenlänge durchlaufen.

Beispiel von Long Pfad:

C: \ Benutzer \ Benutzername \ Dokumente \ Visual Studio xxxx \ Projects \ Projektname

Beispiel der guten Weg:

C: \ Projects \ Projektname

EDIT - hinzugefügt, wie die Pakete aussehen sollte:

Packages Pic

+0

Dies ist bereits, wie mein Pfad eingerichtet ist. Es gibt auch keinen 'Pfad zu lang' Fehler. – connersz

+0

Versuchen Sie, das Paket Xamarin.Forms über nuget zu aktualisieren oder neu zu installieren. Und aktualisieren Sie nicht ein Paket von Xamarin.Droid manuell. Die Xamarin.Forms sollte mit der Version umgehen. –

+0

Ich bin mir ziemlich sicher, dass ich das ein paar Mal gemacht habe, werde es aber noch einmal versuchen. Sollte ich auf der Lösungs- oder Projektebene aktualisieren? – connersz

0

Ich bin mir nicht sicher, ob Ihnen das hilft, aber schauen Sie sich an, wie die MainActivity deklariert wird.

Ihr Beispiel hat:

  • public class MainActivity: global :: Xamarin.Forms.Platform.Android.FormsAppCompatActivity

Aber in meinem Code ich habe:

  • Öffentlichkeit Klasse MainActivity: Xamarin.Forms.Platform.Android.FormsApplicationActivity

Sehen Sie, ob das für den Start einen Unterschied macht. Wenn Sie FormsAppCompatActivity verwenden müssen, dann sehen Sie, ob das Ändern der API-Ebene auf die höchste unterstützte Ebene einen Unterschied macht.

Haben Sie Protokolle aus dem Ausgabefenster, Show Xamarin Diagnostics.

0

Ich hatte einen ähnlichen Fehler. Ich habe es gelöst, um die neueste Version von JDK zu installieren und den neuen Ordner in Visual Studio auszuwählen.

Xamarin Setting on Visual Studio 2015