web-dev-qa-db-ja.com

「GenerateJavaStubs」タスクが予期せず失敗した

Visual Studioで新しいプロジェクトを1つ作成し、.xmlファイル(2つのフレームレイアウトを配置)、コードをデバッグするときに1つのエラーが発生しました。解決策を教えてください

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
16
user4689094

これは、CrossCurrentActivityを使用する Xamarin Plugins のいずれかを使用する場合、たとえばPlugins.Shareの場合、および[Application]タグを含むApplicationクラスがある場合に発生する可能性があります。これは、nugetのインストール時に同じタグを持つ別のアプリケーションクラスを生成し、「GenerateJavaStubs」エラーの原因となるためです。

解決策は、アプリケーションクラスの1つを削除するか、それらを1つにマージすることです。

20
Edgar.A

私は同じ問題を抱えていて、エラーの詳細は次のようなものでした。 「パスが長すぎます。Blablaの名前は248文字以下で、他のbla blaの名前は260文字以下である必要があります。」.

また、プロジェクト名を短くすると問題が解決しました。

5
hhk

私にとって、これはXamarin Share Plugin( https://www.nuget.org/packages/Plugin.Share )をインストールした後に起こりました。私は次の行でmy Androidアプリのテーマをassemblyinfo.csに設定していました:

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

この行を削除するだけで問題は解決し、テーマをMainActivityに設定します。

5
DaveU

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

    ...
}
3
Alex.Wang

これらの答えはどれも私の問題でうまくいきませんでした。これがうまくいったことです:

ソリューションエクスプローラーでAndroidプロジェクト、右クリック->プロパティ-> Androidオプション->リンカー->リンク]に移動し、SdkアセンブリのみAndroidプロジェクト->プロパティ-> Androidオプション->詳細プロパティ-> Java最大ヒープサイズは1Gに設定されています。

enter image description here

0
Codrut

何らかの理由で私のAndroidクラスライブラリがAndroidアプリケーションタイプに変更されたため、VSがプロジェクトでアプリケーションクラスを探していました。

解決策は、空白のAndroidクラスライブラリを作成し、プロジェクトファイルを比較することでした。[<] AndroidApplication> true [<]のように、「アプリケーション」固有の壊れたプロジェクトからxmlタグを削除しました/ AndroidApplication>

0
InquisitorJax

この問題が発生し、Visual Studio Professional 2015(Xamarinを使用)で最初のアプリを作成しているときに、すべて同じエラーメッセージが表示されました。これが他の誰かに役立つかどうかはわかりませんが、問題を修正するために何かに遭遇しました。

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コードに戻してみました:

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

そして、コードを実行し、エラーはなくなりました。おそらく、ただのばかげた間違いであり、常に問題を解決するわけではありませんが、それは私たちにとってはうまくいきました。

0
Rebecca Mendez

リリースビルドを実行すると、このエラーが発生しました

The "GenerateJavaStubs" task failed unexpectedly.
Nullreference Exception

再起動したVSはそれをクリアしました。

0
hogarth45

#regionブロックの下にアクティビティイベントを配置したため、この問題が発生しました。 #regionブロックを削除した後、私の場合、すべてが正常に動作しています。

0
Ravi Anand

Android Libraryを新しいプロジェクトにコピーしたため、この問題が発生しました。VisualStudioによって自動的に新しいリソースファイルが作成され、プロジェクト1のリソースファイルとファイルのあいまいさの問題が発生しましたプロジェクト2の問題を解決した後、Javaスタブエラーはもう発生しませんでした。これが修正であるかどうかはわかりませんが、他に何もしなかったので、それは少し奇妙ですが、ほとんどでなければなりません。

0
Dahinda