2016-10-26 16 views
6

Uruchamiając debugowanie mojego projektu na emulatorze Android otrzymuję ten błąd:Xamarin Forms błąd: java.lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompat

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

na ten kod:

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)); 
    } 
} 

błąd występuje na tym samym wierszu:

base.OnCreate(bundle); 

Próbowałem przeglądać online na inne sugestie, ale odpowiedzi wydają się być związane z konkretnymi plikami studio Xamarin, które nie istnieją w moim projekcie (i.g. plik gradle).

Sprawdziłem zawartość "pakietu" i wydaje się, że jest ona pusta w chwili wystąpienia błędu, ale nie jestem pewien, czy powoduje to błąd.

Używam formularzy PCL Xamarin.

+0

można umieścić kod źródłowy gdzieś tak możemy spróbować odtworzyć poprawkę? –

Odpowiedz

0

Błąd Java.Lang.NoClassDefFoundError: oznacza, że ​​brakuje Ci zajęć. Informuje o klasie, której także brakuje: android.support.graphics.drawable.VectorDrawableCompat. Sam Xamarinu nie używałem, ale ich dokumentacja opisuje, jak use Java classes w kodzie C#. Gdy pakiet zawierający klasę android.support.graphics.drawable.VectorDrawableCompat (VectorDrawableCompat.java, która jest w android.support.graphics.drawable wydaje mi się?) Zostanie zaimportowany, Twój kod powinien zostać uruchomiony.

+0

Dodałem wszystkie klasy, które wyróżniają się jako możliwe rozwiązanie, ale nic nie działa. Trudno wiedzieć, co dodać z setkami dostępnych. – connersz

+0

Na szczęście nie trzeba przeglądać setek zajęć. Twój komunikat o błędzie informuje, gdzie szukać. Zaktualizowałem swoją odpowiedź z linkiem do odpowiednich dokumentów Android. – Necoras

+0

Mam już klasę, o której wspomniałeś. – connersz

1

Ten błąd może wystąpić w przypadku kilku klas, jeśli ścieżka projektu jest zbyt długa, ponieważ przekracza limit długości znaków systemu operacyjnego.

Przykład długą drogę:

C: \ Users \ nazwa_użytkownika \ Documents \ Visual Studio xxxx \ Projects \ nazwa projektu

przykład dobrej ścieżce:

C: \ Projects \ NazwaProjektu

EDIT - Dodano jak pakiety powinny wyglądać:

Packages Pic

+0

To już jest sposób, w jaki ustawiona jest moja ścieżka. Nie ma również błędu "zbyt długa ścieżka". – connersz

+0

Spróbuj zaktualizować lub ponownie zainstalować pakiet Xamarin.Forms za pośrednictwem nuget. I NIE aktualizuj jednej paczki z Xamarin.Droid ręcznie. Xamarin.Form powinien obsłużyć tę wersję. –

+0

Jestem prawie pewien, że zrobiłem to kilka razy, ale spróbuję jeszcze raz. Czy powinienem aktualizować na poziomie rozwiązania lub projektu? – connersz

0

Nie jestem pewien, czy to ci pomoże, ale spójrz na sposób, w jaki deklarowana jest Główna Aktywność.

Twój przykład posiada:

  • publiczną klasę główną działalność: Global :: Xamarin.Forms.Platform.Android.FormsAppCompatActivity

Ale w moim kodu mam:

  • publicznej klasa MainActivity: Xamarin.Forms.Platform.Android.FormsApplicationActivity

Sprawdź, czy to ma znaczenie dla uruchomienia. Jeśli musisz użyć FormsAppCompatActivity, sprawdź, czy zmiana poziomu Api na najwyższy obsługiwany poziom ma znaczenie.

Masz jakieś logi z okna Output, Show Xamarin Diagnostics.

0

Miałem podobny błąd. Postanowiłem zainstalować najnowszą wersję JDK i wybrać nowy folder w Visual Studio.

Xamarin Setting on Visual Studio 2015