2016-10-26 5 views
6

При запуске отладки моего проекта на Android эмулятора я получаю эту ошибку:Xamarin Forms Ошибка: java.lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompat

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

в этом коде:

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

ошибка возникает на этой строке:

base.OnCreate(bundle); 

Я пробовал смотреть в Интернете по другим предложениям, но ответы, похоже, связаны с конкретными файлами студии Xamarin, которые не существуют в моем проекте (например, файл градиента).

Я проверил содержимое «bundle» и кажется, что он является нулевым во время ошибки, но я не уверен, вызывает ли это ошибку.

Я использую формы Xamarin PCL.

+0

Вы можете поместить свой исходный код где-то так мы можем попытаться воспроизвести исправить? –

ответ

0

Ошибка Java.Lang.NoClassDefFoundError: означает, что вам не хватает класса. Он сообщает вам, какой класс вам тоже не хватает: android.support.graphics.drawable.VectorDrawableCompat. Я сам не использовал Xamarin, но их документация описывает, как use Java classes в коде C#. Как только пакет, который включает в себя класс android.support.graphics.drawable.VectorDrawableCompat (VectorDrawableCompat.java, который находится в android.support.graphics.drawable, я думаю?) Импортирован, ваш код должен работать.

+0

Я добавил все классы, которые выделяются как возможное решение, но ничего не работает. Трудно понять, что добавить с помощью сотен. – connersz

+0

К счастью, вам не нужно просматривать сотни классов. Ваше сообщение об ошибке сообщает вам, где искать. Я обновил свой ответ со ссылкой на соответствующие андроидные документы. – Necoras

+0

У меня уже есть класс, который вы упомянули. – connersz

1

Эта ошибка может возникать с несколькими классами, если путь к проекту слишком велик, поскольку он проходит через границу длины символа операционной системы.

Пример длинного пути:

C: \ Users \ Имя пользователя \ Documents \ Visual Studio хххх \ Проекты Имя \ Project

Пример Хорошего пути:

C: \ Projects \ ProjectName

EDIT - Добавлена ​​как пакеты должны выглядеть:

Packages Pic

+0

Это уже то, как мой путь настроен. Также нет ошибки «пути слишком долго». – connersz

+0

Попробуйте обновить или переустановить пакет Xamarin.Forms через nuget. И НЕ обновляйте один пакет с Xamarin.Droid вручную. Xamarin.Forms должны обрабатывать эту версию. –

+0

Я уверен, что я сделал это несколько раз, но попробую еще раз. Должен ли я обновляться на уровне решения или проекта? – connersz

0

Я не уверен, что это поможет вам, но посмотрите, как объявляется MainActivity.

Ваш пример имеет:

  • MainActivity общественный класс: глобальный :: Xamarin.Forms.Platform.Android.FormsAppCompatActivity

Но в моем коде я есть:

  • общественности класс MainActivity: Xamarin.Forms.Platform.Android.FormsApplicationActivity

Посмотрите, если это имеет значение для запуска. Если вам нужно использовать FormsAppCompatActivity, то посмотрите, изменится ли уровень Api на самый высокий поддерживаемый уровень.

У вас есть журналы из окна «Вывод», «Показать диагностику Xamarin».

0

У меня была подобная ошибка. Я решил установить последнюю версию JDK и выбрать новую папку в Visual Studio.

Xamarin Setting on Visual Studio 2015