我在Visual Studio中创建了一个新项目,只在.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
答案 0 :(得分:19)
如果您使用使用CrossCurrentActivity的Xamarin Plugins之一,例如Plugins.Share,并且如果您拥有带有[Application]标记的Application类,则仍然会发生这种情况。这是因为在nuget安装时,它会生成另一个具有相同标记的Application类,并导致&#39; GenerateJavaStubs&#39;故障。
解决方案只是删除一个Application类/将它们合并为一个。
答案 1 :(得分:5)
对我来说,这是在安装Xamarin Share Plugin(https://www.nuget.org/packages/Plugin.Share)之后发生的。我在其assemblyinfo.cs中设置了我的Android应用程序的主题,其中包含以下行:
[assembly: Application(Theme = "@style/AppStyle.myApp")]
只需删除此行即可解决问题,然后我会在MainActivity中设置主题,无论如何都应该如此。
答案 2 :(得分:5)
我遇到了同样的问题,而且错误的细节也是这样的。 &#34;路径太长了。 Bla bla名称不能超过248个字符,另一个bla bla不能超过260个字符&#34;。
缩短项目名称解决了我的问题。
答案 3 :(得分:3)
如果您在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);
}
...
}
答案 4 :(得分:0)
我遇到了这个问题,并且在Visual Studio Professional 2015(使用Xamarin)上创建我的第一个应用程序时收到了所有相同的错误消息。不知道这对任何人都有用,但我们偶然发现了解决问题的方法。
在$(function() {
$('#leftmenu').menu({
select: function(e, ui) {
var selectId = ui.item.attr("id");
$.ajax({
type: "POST",
cache: false,
url: "/Session/Index/",
success: function(result) {
if (result.length > 0) {
performListItemAction(selectId);
} else {
window.location.href = '/Home/Index/'
}
}
});
console.log(e.type + " event, ID: " + selectId);
}
});
});
中,当您第一次打开&#34;空白应用程序&#34;时,会有一些默认代码。项目,但我们删除了一些代码,并复制/粘贴它。这是它最初的样子:
MainActivity.cs
要修复它:我们尝试将这些行放回 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
然后我们运行代码,错误就消失了。可能只是一个愚蠢的错误,并且不会总是解决问题,但它对我们有用。
答案 5 :(得分:0)
我遇到了这个问题,因为出于某种原因我的Android类库已经变成了Android应用程序类型 - 所以VS正在项目中寻找Application类。
解决方案是创建一个空白的android类库,并比较项目文件。 我从破坏的项目中删除了任何xml标签,这些标签是&#34; application&#34;具体。 例如[&lt;] AndroidApplication&gt; true [&lt;] / AndroidApplication&gt;
答案 6 :(得分:0)
我有这个问题,因为我把活动事件放在#region块下。删除#region块之后,在我的情况下一切正常。
答案 7 :(得分:0)
由于将Android库复制到新项目,我遇到了这个问题。 Visual Studio自动使我成为一个新的资源文件,导致项目1的资源文件和项目2的文件之间存在歧义问题。解决这个问题之后,我再也没有Java Stub错误了。我不知道这是否是修复,但我没有做任何其他事情,所以它几乎必须是,虽然它有点奇怪。
答案 8 :(得分:0)
这些答案都没有最终解决我的问题。这是做了什么工作:
在解决方案资源管理器中,转到Android项目,右键单击 - &gt;属性 - &gt; Android选项 - &gt;链接器 - &gt;链接并选择仅限Sdk程序集。 还要确保在Android项目中 - &gt;属性 - &gt; Android选项 - &gt;高级属性 - &gt; Java Max Heap Size设置为1G。
答案 9 :(得分:0)
在发布版本时出现此错误
The "GenerateJavaStubs" task failed unexpectedly.
Nullreference Exception
重新启动VS将其清除。