web-dev-qa-db-fra.com

La tâche "GenerateJavaStubs" a échoué de manière inattendue

J'ai créé un nouveau projet dans Visual studio et ne stocke que dans le fichier .xml (mettez deux dispositions d'image) et lorsque je débogue le code, j'ai une erreur, merci de me dire la solution

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

Cela peut toujours arriver si vous utilisez l'un des Xamarin Plugins qui utilisent CrossCurrentActivity, par exemple Plugins.Share et si vous avez la classe Application avec la balise [Application]. En effet, lors de l'installation d'un nuget, il génère une autre classe d'application avec la même balise, ce qui provoque l'échec de 'GenerateJavaStubs'.

La solution consiste simplement à supprimer l'une des classes d'application/à les fusionner en une seule.

19
Edgar.A

J'avais le même problème et l'erreur de détail disait quelque chose comme: "Le chemin est trop long. Le nom du bla bla ne peut dépasser 248 caractères et l’autre bla bla ne doit pas dépasser 260 caractères". 

Et raccourcir le nom du projet a résolu mon problème.

5
hhk

Pour moi, cela s'est passé après l'installation du plug-in Xamarin Share ( https://www.nuget.org/packages/Plugin.Share ). Je mettais le thème de mon application Android dans son assemblyinfo.cs avec la ligne ci-dessous:

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

Le simple fait de supprimer cette ligne a résolu le problème et j'ai ensuite défini le thème dans MainActivity comme vous devriez le faire de toute façon.

5
DaveU

Si vous avez un constructeur dans la classe d'activité, veuillez ajouter le constructeur par défaut ..__ ou vous pouvez supprimer des constructeurs dans la classe.

Ceci est l'ancien code source.

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

    ...
}

Ceci est mis à jour le nouveau code source.

[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

Aucune de ces réponses n'a finalement fonctionné pour mon problème. Voici ce qui a fonctionné:

Dans l’explorateur de solutions, accédez au projet Android, faites un clic droit -> Propriétés -> Options Android -> Éditeur de liens -> Liaison et choisissez Assemblages Sdk uniquement . > Options Android -> Propriétés avancées -> Taille maximale du tas Java est définie sur 1G.

 enter image description here

0
Codrut

J'avais ce problème parce que, pour une raison quelconque, ma bibliothèque Android Class a été modifiée en un type d'application Android - VS recherchait donc la classe Application dans le projet.

La solution consistait à créer une bibliothèque de classes Android vide et à comparer les fichiers de projet . J'ai supprimé du projet endommagé les balises XML qui étaient spécifiques à "l'application" . Comme [<] AndroidApplication> true [<]/AndroidApplication>

0
InquisitorJax

J'ai rencontré ce problème et j'ai reçu tous les mêmes messages d'erreur lors de la création de ma toute première application sur Visual Studio Professional 2015 (avec Xamarin). Aucune idée si cela pourrait être utile à quelqu'un d'autre, mais nous sommes tombés sur quelque chose qui a réglé le problème pour nous.

Dans MainActivity.cs, il existe un code par défaut lorsque vous ouvrez un projet "Application vide", mais nous avions supprimé une partie de ce code et copié/collé dessus. Voici à quoi cela ressemble initialement:

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

Pour résoudre ce problème, nous avons essayé de rétablir ces lignes dans le code 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);

Et puis nous avons couru le code et l'erreur est partie. Probablement juste une erreur stupide, et ne résoudra pas toujours le problème, mais cela a fonctionné pour nous.

0
Rebecca Mendez

Je recevais cette erreur en faisant une version Release

The "GenerateJavaStubs" task failed unexpectedly.
Nullreference Exception

VS redémarré l'a éclairci.

0
hogarth45

J'ai eu ce problème parce que j'ai mis les événements d'activité sous le bloc #region. après la suppression du bloc #region, tout fonctionne correctement dans mon cas.

0
Ravi Anand

J'ai eu ce problème en raison de la copie d'une bibliothèque Android dans un nouveau projet. Visual Studio m'a automatiquement créé un nouveau fichier de ressources, ce qui a entraîné des problèmes d'ambiguïté entre le fichier de ressources du projet 1 et le fichier du projet 2. Après avoir résolu ce problème, je ne rencontrais plus d'erreur de stub Java. Je ne sais pas si c'était la solution, mais je n'ai rien fait d'autre, alors il faut presque que ce soit le cas, même si c'est un peu bizarre.

0
Dahinda