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), а затем добавил его. Теперь отладка работает.