Xamarin Android с multidex - ошибка в режиме отладки

Я создал приложение Xamarin Forms. Я использую multidex для Android (многие библиотеки). Я использую файл multidex.keep с параметром MultiDexMainDexList. Теперь развертывание - это работа. Но я получаю исключение в режиме отладки:

 System.ArgumentException: The offset and length have exceeded the bounds of the array or the counter value exceeds the number of elements from the pointer to the end of the original collection.
 в System.Buffer.BlockCopy(Array src, Int32 srcOffset, Array dst, Int32 dstOffset, Int32 count)
 в Mono.Cecil.Metadata.GuidHeap.Read(UInt32 index)
 в Mono.Cecil.MetadataReader.InitializeCustomDebugInformations()
 в Mono.Cecil.MetadataReader.GetCustomDebugInformation(ICustomDebugInformationProvider provider)
в Mono.Cecil.Cil.PortablePdbReader.Read(MethodDefinition method)
в Mono.Cecil.Cil.CodeReader.ReadMethodBody()
в Mono.Cecil.Cil.CodeReader.ReadMethodBody(MethodDefinition method)
в Mono.Cecil.MethodDefinition.<>c.<get_Body>b__41_0(MethodDefinition method, MetadataReader reader)
в Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TRet& variable, TItem item, Func`3 read)
в Mono.Cecil.MethodDefinition.get_Body()
 Mono.Cecil.MethodDefinition.get_DebugInformation()
в Mono.Debugging.Soft.SoftDebuggerSession.LoadPdbType(TypeDefinition type, Dictionary`2 fileToSourceFileInfos)
в Mono.Debugging.Soft.SoftDebuggerSession.LoadPdbFile(String assemblyFileName, String pdbFileName)
в Mono.Debugging.Soft.SoftDebuggerSession.LoadDebugFile(String assemblyFileName, String debugFileName, Func`3 loadDebugFile)
в Mono.Debugging.Soft.SoftDebuggerSession.CheckBetterMatch(TypeMirror type, String file, Int32 line, Int32 column, Location found)
в Mono.Debugging.Soft.SoftDebuggerSession.FindLocationByMethod(MethodMirror method, String file, Int32 line, Int32 column, Boolean& insideTypeRange)
в Mono.Debugging.Soft.SoftDebuggerSession.FindLocationByType(TypeMirror type, String file, Int32 line, Int32 column, Boolean& genericMethod, Boolean& insideTypeRange)
в Mono.Debugging.Soft.SoftDebuggerSession.ResolveBreakpoints(TypeMirror type)
в Mono.Debugging.Soft.SoftDebuggerSession.HandleTypeLoadEvents(TypeLoadEvent[] events)
в Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet(EventSet es)
в Mono.Debugging.Soft.SoftDebuggerSession.EventHandler()

Для анализа я использую - dex2jar и Java Decompiler (этой статья). Но теперь я не знаю, что искать и в чем проблемы.

Любые идеи?

Ответ 1

Я решил эту проблему.

Это подробно описывает мой случай пользователя:

  • Я использовал библиотеку PCL.
  • Мне нужно обновить Azure Mobile Client до версии 4.0. Эта версия не поддерживает только PCL.NET Standard. 1.4.
  • Но у меня есть проект Windows Phone с форматами Xamarin. WP не поддерживается .Net Standard 1.4
  • Я добавляю новую библиотеку в свое решение (.NET Standard 1.4). Я добавил файлы в эту библиотеку из моего PCL в качестве ссылки.
  • Тогда была эта ошибка. Сначала это была плавающая ошибка, но потом она была постоянной.
  • В течение двух рабочих дней я искал причину этой ошибки. Я нашел место, где приложение отбрасывалось.
  • Я удалил связанный файл из моей библиотеки (.Net Standard), а затем добавил его. Теперь отладка работает.