Не удалось выполнить задачу "GenerateJavaStubs"

Я создал один новый проект в Visual Studio и только che в .xml файле (поставьте два фрейм-макета), и когда я отлаживаю код, у меня есть одна ошибка, пожалуйста, скажите мне решение

Error   1   The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Max(IEnumerable'1 source)
at Xamarin.Android.Tools.TypeNameMapGenerator.WriteBinaryMapping(Stream o, Dictionary'2 mapping)
at Xamarin.Android.Tools.TypeNameMapGenerator.WriteJavaToManaged(Stream output)
at Xamarin.Android.Tasks.GenerateJavaStubs.UpdateWhenChanged(String path, Action'1 generator)
at Xamarin.Android.Tasks.GenerateJavaStubs.WriteTypeMappings(List'1 types)
at Xamarin.Android.Tasks.GenerateJavaStubs.Run()
at Xamarin.Android.Tasks.GenerateJavaStubs.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()    TMS_TabletView.Droid

Ответ 1

Это может случиться, если вы используете один из плагинов Xamarin, которые используют CrossCurrentActivity, например Plugins.Share, и если у вас есть класс Application с тегом [Application]. Это связано с тем, что при установке nuget он генерирует другой класс приложения с тем же тегом и вызывает отказ GenerateJavaStubs.

Решение просто удаляет один из классов Application/объединяет их в один.

Ответ 2

Для меня это произошло после установки плагина Share Xamarin (https://www.nuget.org/packages/Plugin.Share). Я задал тему своего Android-приложения в сборкеinfo.cs с приведенной ниже строкой:

[assembly: Application(Theme = "@style/AppStyle.myApp")]

Просто удаление этой строки разрешило проблему, и я затем задал тему в MainActivity, как и вы, в любом случае.

Ответ 3

У меня была такая же проблема, и ошибка в деталях говорила что-то вроде: "Путь слишком длинный. Название Bla bla не может превышать 248 символов, а другое bla bla не может превышать 260 символов".

И сокращение названия проекта решило мою проблему.

Ответ 4

Если у вас есть конструктор класса Activity, добавьте конструктор по умолчанию. Или вы можете удалить конструкторы в классе.

Это старый исходный код.

[Activity(Label = "MyActivity", ScreenOrientation = ScreenOrientation.Portrait)]
public class MyActivity : BaseActivity
{
    bool param;

    protected override int LayoutResource
    {
        get
        {
            return Resource.Layout.myactivity;
        }
    }

    public MyActivity(bool param = false)
    {
        this.param = param;
    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    }

    ...
}

Обновлен новый исходный код.

[Activity(Label = "MyActivity", ScreenOrientation = ScreenOrientation.Portrait)]
public class MyActivity : BaseActivity
{
    bool param;

    protected override int LayoutResource
    {
        get
        {
            return Resource.Layout.myactivity;
        }
    }

    public MyActivity()
    {
    }

    public MyActivity(bool param = false)
    {
        this.param = param;
    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    }

    ...
}

Ответ 5

Я столкнулся с этой проблемой и получил все те же сообщения об ошибках при создании моего первого приложения на Visual Studio Professional 2015 (с Xamarin). Не знаю, будет ли это полезно для кого-либо еще, но мы наткнулись на что-то, что поставило проблему для нас.

В MainActivity.cs есть некоторый код по умолчанию, когда вы сначала открываете проект "Blank App", но мы удалили часть этого кода и скопировали его/вставили поверх него. Первоначально это выглядит так:

    namespace App3
{
    [Activity(Label = "App3", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        int count = 1;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);

            button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
        }
    }
}

Чтобы исправить это: мы попытались вернуть эти строки в код MainActivity.cs:

[Activity(Label = "App3", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        int count = 1;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);

И затем мы запустили код, и ошибка исчезла. Наверное, просто глупая ошибка, и она не всегда решит проблему, но она сработала для нас.

Ответ 6

У меня была эта проблема, потому что по какой-то причине моя библиотека Android Class изменилась на тип приложения Android - поэтому VS искал класс Application в проекте.

Решением было создание пустой библиотеки классов Android и сравнение файлов проекта. Я удалил любые теги xml из разбитого проекта, которые были "конкретными приложениями". как [<] AndroidApplication> true [<]/AndroidApplication>

Ответ 7

У меня была эта проблема, потому что я делал события активности в блоке #region. после удаления блока #region все работает отлично в моем случае.

Ответ 8

У меня возникла эта проблема из-за копирования библиотеки Android в новый проект. Visual Studio автоматически сделала мне новый файл ресурсов, в результате чего возникли проблемы с неоднозначностью между файлом ресурсов проекта 1 и файлом проекта 2. После решения этого вопроса у меня больше не было ошибки Java Stub. Я не знаю, было ли это исправление, но я ничего не делал, так что это почти должно быть, хотя это немного странно.

Ответ 9

Ни один из этих ответов не закончил работу над моей проблемой. Вот что работало:

В своем обозревателе решений перейдите в проект Android, щелкните правой кнопкой мыши → Свойства → Настройки Android → Коннектор → Связывание и выберите только Sdk Assemblies. Также убедитесь, что в проекте Android → Свойства → Параметры Android → Дополнительные свойства → Размер Java Max Heap Size установлен в 1G.

enter image description here