Ошибка сборки Xamarin.AndroidX в режиме выпуска - PullRequest
0 голосов
/ 14 июля 2020

У меня есть проект Xamarin Forms для iOS и Android. Приложение iOS строится как в режиме отладки, так и в режиме выпуска, но приложение Android не создается в режиме выпуска. Я могу собрать и запустить его в режиме отладки, но я получаю следующую ошибку, когда пытаюсь заархивировать его для публикации в Visual Studio для Ma c.

Mono.Linker.LoadException: Error while processing references of 'MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Xamarin.AndroidX.Work.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Xamarin.AndroidX.Work.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
  at Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) [0x000ff] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/cecil/Mono.Cecil/BaseAssemblyResolver.cs:172 
  at Mono.Linker.AssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) [0x0008d] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.LinkContext.Resolve (Mono.Cecil.IMetadataScope scope) [0x00007] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
   --- End of inner exception stack trace ---
  at Mono.Linker.LinkContext.Resolve (Mono.Cecil.IMetadataScope scope) [0x00030] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.LinkContext.ResolveReferences (Mono.Cecil.AssemblyDefinition assembly) [0x00026] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Steps.LoadReferencesStep.ProcessReferences (Mono.Cecil.AssemblyDefinition assembly) [0x00026] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Steps.LoadReferencesStep.ProcessReferences (Mono.Cecil.AssemblyDefinition assembly) [0x0003b] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
   --- End of inner exception stack trace ---
  at Mono.Linker.Steps.LoadReferencesStep.ProcessReferences (Mono.Cecil.AssemblyDefinition assembly) [0x0005b] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Steps.LoadReferencesStep.ProcessAssembly (Mono.Cecil.AssemblyDefinition assembly) [0x00000] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Steps.BaseStep.Process (Mono.Linker.LinkContext context) [0x00025] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Pipeline.ProcessStep (Mono.Linker.LinkContext context, Mono.Linker.Steps.IStep step) [0x0000d] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Mono.Linker.Pipeline.Process (Mono.Linker.LinkContext context) [0x0000f] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at MonoDroid.Tuner.Linker.Run (Mono.Linker.Pipeline pipeline, Mono.Linker.LinkContext context) [0x00000] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at MonoDroid.Tuner.Linker.Process (MonoDroid.Tuner.LinkerOptions options, Mono.Linker.ILogger logger, Mono.Linker.LinkContext& context) [0x00071] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Xamarin.Android.Tasks.LinkAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver res) [0x001dd] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Xamarin.Android.Tasks.LinkAssemblies.RunTask () [0x0001b] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 
  at Xamarin.Android.Tasks.AndroidTask.Execute () [0x00000] in <4f0a19c9d0ec417f9e44b588fd30d062>:0 

Первоначально у меня было приложение Android targeting Android 9 Oreo (API версии 28), но когда я загрузил его в магазин Google Play, я получил следующую ошибку:

Upload failed
Your app currently targets API level 27 and must target at least API level 28 to ensure it is built on the latest APIs optimized for security and performance. Change your app's target API level to at least 28.

Итак, я попытался установить целевую версию на Android 10 (API версии 29), но затем я получил ошибку устаревания, поэтому я изменил целевую версию обратно на 9 (API версии 28), и теперь я не могу выполнить сборку в режиме выпуска из-за указанной выше ошибки.

Здесь это мои Android настройки приложения:

Android Manifest

Android General Settings

Android Настройки сборки

1 Ответ

0 голосов
/ 14 июля 2020

В итоге я удалил все в папках bin и obj для проектов в решении, перезапустил Visual Studio и смог собрать и заархивировать приложение Android, а также не получил сообщение об ошибке из Google Play. Неправильная версия библиотеки должна быть кэширована.

...