Lorsque nous essayons de créer un projet xamarin forms en mode de publication, nous obtenons l’erreur suivante:
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)
Comment pouvons-nous résoudre ce problème? Nous avons essayé de nettoyer et de construire à nouveau. Même fermer xamarin studio et le redémarrer. Rien ne semble fonctionner.
Nous en sommes à la dernière version des formulaires xamarin et des laboratoires de formulaires xamarin. Le niveau minimum de l'API Android que nous utilisons est 17. J'ai même essayé la version minimale de SDK 20.
Quelques détails supplémentaires:
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)
Apparemment, il s’agit d’un problème connu : Xamarin Forms a besoin de la version 21 de TargetAndroidVersion (dans l’interface graphique de config, il s’intitule "Compiler avec la version Android:")
Dans mon cas, un problème est survenu en raison de l'ajout de Xamarin.ios.dll à des références de projet portable. J'ai supprimé cette référence et cela fonctionne maintenant
Dans mon cas, le problème a été référencé dll Xamarin.iOS dans le projet pcl. La liaison ne fonctionne pas pour cette assemblée. Supprimer la référence a résolu le problème.
J'ai aussi connu le même problème. Après des séries d'essais et d'erreurs, j'ai trouvé une solution.
Dans votre manifeste, définissez Version Android cible sur Android 7.1 (API niveau 25, Nougat) ou supérieur . Définissez Compiler la version Android sur Android 7.1.
J'espère que ça aide
Jusque j'ai changé la liaison de "NONE" à "sdk et les utilisateurs Assembly" et j'ai couru ma solution, et le problème a été résolu. Après cela, vous pouvez changer "SDK et les utilisateurs Assembly" sur "NONE" et exécuter votre projet sans problème.
Mais la taille du fichier de version peut être sera changer.
Je l'ai corrigé en rétrogradant Xamarin.Android.Support.v4 vers la version 21.0.0 dans NuGet Package Manager. J'espère que cela vous aidera
Dans ma poursuite, j'ai changé la propriété de l'éditeur de liens (Linker -> Linking) en 'None'. J'utilise Visual Studio 2017 RC
J'ai fini par avoir cette erreur après avoir changé la version cible Android à la version 9.0. Ce que j'ai remarqué, c'est que dans le packages.config
du projet Android, tous les packages ciblaient toujours monoandroid81
au lieu de monoandroid90
.
Je l'ai résolu en réinstallant tous les paquets NuGet. Cela peut être fait assez facilement via la console Package Manager Console de Visual Studio en entrant:
Update-Package -Reinstall
Je recommande toutefois de prendre d'abord une sauvegarde.
Après cela, tous les packages ciblaient la version correcte et les erreurs de compilation avaient disparu.