Не удалось выполнить задачу "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.