2015-02-10 4 views
26

Wenn wir versuchen, ein Xamarin Formen Projekt im Release-Modus zu bauen, bekommen wir den Fehler:Die „LinkAssemblies“ Aufgabe ist unerwartet fehlgeschlagen

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(5,5): Error MSB4018: The "LinkAssemblies" task failed unexpectedly. 
Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 'System.Void Android.Widget.AbsListView::SetSelectionFromTop(System.Int32,System.Int32)' (defined in 'Xamarin.Forms.Platform.Android, Version=1.3.3.0, Culture=neutral, PublicKeyToken=null') from 'Xamarin.Forms.Platform.Android, Version=1.3.3.0, Culture=neutral, PublicKeyToken=null' could not be resolved. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void Android.Widget.AbsListView::SetSelectionFromTop(System.Int32,System.Int32) 
    at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference) 
    at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction) 
    at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body) 
    at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method) 
    at Mono.Linker.Steps.MarkStep.ProcessQueue() 
    at Mono.Linker.Steps.MarkStep.Process() 
    at Mono.Linker.Steps.MarkStep.Process(LinkContext context) 
    at Mono.Linker.Pipeline.Process(LinkContext context) 
    at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context) 
    at Xamarin.Android.Tasks.LinkAssemblies.Execute() 
    --- End of inner exception stack trace --- 
    at Xamarin.Android.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args) 
    at Xamarin.Android.Tasks.LinkAssemblies.Execute() 
    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 
    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext() (MSB4018) (XXX.Android) 

Wie können wir dieses Problem lösen? Wir haben versucht, wieder zu reinigen und zu bauen. Schließen Sie sogar Xamarin Studio und starten Sie es neu. Nichts scheint zu funktionieren.

Wir sind auf der neuesten Version von Xamarin Formen und Xamarin Formen Labs. Die Mindest Android API-Ebene wir verwenden, ist 17. Ich selbst minimale sdk Version 20.

einige weitere Details versucht:

Xamarin Studio 
Version 5.7 (build 661) 
Installation UUID: f97e711d-1fe0-450f-a3bb-2d9b972ab295 
Runtime: 
    Microsoft .NET 4.0.30319.0 
    GTK+ 2.24.22 (MS-Windows theme) 
    GTK# 2.12.26 

Xamarin.Android 
Version: 4.20.0 (Indie Edition) 
Android SDK: C:\Users\Kartik\AppData\Local\Android\android-sdk 
    Supported Android versions: 
     2.1 (API level 7) 
     2.2 (API level 8) 
     2.3 (API level 10) 
     3.1 (API level 12) 
     4.0 (API level 14) 
     4.0.3 (API level 15) 
     4.1 (API level 16) 
     4.3 (API level 18) 
     4.4 (API level 19) 
     4.4.87 (API level 20) 
     5.0 (API level 21) 
Java SDK: C:\Program Files (x86)\Java\jdk1.6.0_39 
java version "1.6.0_39" 
Java(TM) SE Runtime Environment (build 1.6.0_39-b04) 
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing) 

Build Information 
Release ID: 507000661 
Git revision: b70bab61da996da29045ea8ee8aed1a6faedbe78 
Build date: 2015-01-05 11:27:37-05 
Xamarin addins: 82f6c71490562d6cd125a09287f441902fdac3d7 

Operating System 
Windows 6.2.9200.0 (64-bit) 

Antwort

18

Offenbar this is a known issue: Xamarin Forms benötigt die TargetAndroidVersion 21 zu sein (in den config GUI, das heißt "Kompilieren mit Android-Version:")

+0

Nun, dieser Fehler ist wieder aufgetaucht. Und ich habe meine TargetAndroidVersion 21. – Kartik

+1

Hm. Suchen Sie in der Rohprojektdatei in einem Texteditor nach. Was siehst du im folgenden Element: (mein Wert unten) v5.0

+1

Das hat bei mir nicht funktioniert. Sie müssen zwei Dinge überprüfen: 1) Stellen Sie sicher, dass SDK 21 tatsächlich installiert ist ... Gehen Sie also zu Ihrem SDK-Updater und installieren Sie 21/22 (oder höher). 2) Ändern Sie die Zielversion nicht hilft, müssen Sie (auch) die "Kompilieren mit" auf Version 21 ändern. Wenn Sie das getan haben, sollte es funktionieren. –

-1

Ich habe das Ändern Android Linker Behavior-Option in Optionen> Android Builder> Linker von "Link sdk Assemblies Only" auf "nicht verknüpfen" gelöst.

+8

Sorry, aber das ist nicht das Problem zu lösen. Wenn Sie "Nicht verknüpfen" auswählen, deaktivieren Sie den Linker. Dies bedeutet, dass Sie die gesamte BCL in Ihrem APK bereitstellen, einschließlich aller Komponenten, die Sie nicht benötigen. Das macht deine APK riesig. –

+0

Dieser Ansatz löst das Symptom, ist aber nicht direkt die Ursache des Problems; eher ungültige Android-Ziele sind. –

0

Ich reparierte die Xamarin.Android.Support.v4 auf die Version 21.0.0 in NuGet Package Manager herunterstufen. Hoffe, dass Ihnen helfen

1

Jus Ich änderte die Verknüpfung von "NONE" zu "SDK-und Benutzer-Assembly" und ich lief meine Lösung, und das Problem wurde gelöst. Danach können Sie "sdk and users assembly" in "NONE" ändern und Ihr Projekt ohne Probleme ausführen.

Aber die Größe der Release-Datei kann geändert werden.

enter image description here

2

In meinem Fall war das Problem dll Xamarin.iOS in dem pcl-Projekt verwiesen. Die Verknüpfung funktioniert für diese Assembly nicht. Durch Entfernen der Referenz wurde das Problem behoben.

3

In meiner Chase habe ich die Linker-Eigenschaft (Linker -> Linking) zu 'None' geändert. Ich benutze Visual Studio 2017 RC

+2

Ja, aber das Ausschalten des Linkers behebt das Problem mit dem Linker nicht, oder? Es erhöht die Apk-Größe deutlich und Xamarin-Apps sind bereits zu groß, so dass dies nicht wirklich eine Option ist. – Dpedrinha

+0

Dies behebt das Problem mit VS Enterprise 2017, erhöht jedoch die App-Größe – Nitesh

2

In meinem Fall Problem aufgetreten von Xamarin.ios.dll zu Portable Project Referenzen hinzufügen. Ich habe diese Referenz entfernt und es funktioniert jetzt

1

Ich habe auch das gleiche Problem erlebt. Nach einer Reihe von Versuchen und Fehlern fand ich eine Lösung.

In Ihrem Manifest Ziel Android Version auf Android 7.1 (API Level 25 Nougat) oder höher. Set Compile Android Version auf Android 7.1 auch.

Ich hoffe, das hilft

Verwandte Themen