2015-12-02 10 views
14

ho creato un nuovo progetto in Visual Studio e solo il Che in .xml di file (mettere due layout del telaio) e quando ho il debug del codice che ho un errore, mi ha detto la soluzioneIl compito "GenerateJavaStubs" non è riuscito inaspettatamente

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

Puoi pubblicare il tuo file .xml (.axml?) Con i FrameLayouts inclusi? – joe

+1

Un errore simile all'aspetto è stato risolto in Xamarin.Android 6.0.2.1: https://bugzilla.xamarin.com/show_bug.cgi?id=36036 Stai ancora riscontrando questo problema dopo l'aggiornamento? –

risposta

15

Questo può ancora accadere se si utilizza uno di Xamarin Plugins che utilizza CrossCurrentActivity, ad esempio Plugins.Share e se si dispone di classe Application con il tag [Applicazione]. Questo perché sull'installazione di nuget viene generata un'altra classe Application con lo stesso tag e questo causa l'errore 'GenerateJavaStubs'.

La soluzione è semplicemente eliminare una delle classi di applicazione/unirle in una.

+0

Questo mi morde quasi ogni volta. –

+0

Sono stato solo costretto ad aggiungere questo CrossCurrentActivity. Ma cosa succede se non ho un'altra classe di applicazione? Ma ho un'attività impostata come launcher per funzionare come una schermata iniziale? – Dpedrinha

0

Ho riscontrato questo problema e ho ricevuto tutti gli stessi messaggi di errore durante la creazione della mia primissima app su Visual Studio Professional 2015 (con Xamarin). Non ho idea se questo sarà di qualche utilità per chiunque altro, ma siamo inciampati in qualcosa che ha risolto il problema per noi.

In MainActivity.cs, c'è un codice predefinito quando si apre per la prima volta un progetto "App vuota", ma abbiamo eliminato parte di questo codice e copiato/incollato su di esso. Questo è ciò che sembra inizialmente come:

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

per risolvere il problema: Abbiamo cercato di mettere di nuovo in queste righe di codice 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); 

E poi abbiamo eseguito il codice e l'errore è andato via. Probabilmente solo un errore stupido, e non risolverà sempre il problema, ma ha funzionato per noi.

2

Se si dispone di un costruttore nella classe Attività, si prega di aggiungere costruttore predefinito. Oppure puoi rimuovere i costruttori in classe.

Questo è il vecchio codice sorgente.

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

    ... 
} 

Questa viene aggiornata nuovo codice sorgente.

[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

Per me questo è accaduto dopo l'installazione del Xamarin Condividi Plugin (https://www.nuget.org/packages/Plugin.Share). Stavo installando il tema della mia app Android nei suoi AssemblyInfo.cs con la linea di seguito:

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

Semplicemente rimozione di questa linea ha risolto il problema, e poi ho impostato il tema in MainActivity come si dovrebbe davvero in ogni caso.

+1

Ho avuto '[assembly: Application (Debuggable = true)]'. La rimozione di questa linea ha aiutato :) –

+0

@WojciechKulik hai avuto problemi nel provare a pubblicarlo in modalità di rilascio ("l'apk è debuggabile, upload fallito")? –

0

Ho riscontrato questo problema perché per qualche motivo la mia libreria di classi Android è stata modificata in un tipo di applicazione Android, quindi VS stava cercando la classe Application nel progetto.

Soluzione era creare una libreria di classi Android vuota e confrontare i file di progetto. Ho rimosso tutti i tag xml dal progetto danneggiato che erano specifici per "applicazione". mi piace [<] AndroidApplication> true [<]/AndroidApplication>

1

Ho avuto lo stesso problema e l'errore nei dettagli era quello di dire qualcosa di simile; "Il percorso è troppo lungo. Il nome Bla bla non può superare i 248 caratteri e l'altro bla bla non può superare i 260 caratteri".

E accorciando il nome del progetto risolto il mio problema.

+1

Il nome del mio progetto era troppo lungo. Lo ha fatto più corto e tutto ha funzionato bene. –

Problemi correlati