" GenerateJavaStubs"任务意外失败

时间:2015-12-02 10:32:50

标签: android xamarin mvvmcross

我在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

10 个答案:

答案 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。

enter image description here

答案 9 :(得分:0)

在发布版本时出现此错误

The "GenerateJavaStubs" task failed unexpectedly.
Nullreference Exception

重新启动VS将其清除。