2017-06-11 59 views
10

Stworzyłem aplikację Xamarin Forms. Używam wielościeżkowego dla Androida (wiele bibliotek). Używam pliku multidex.keep z opcją MultiDexMainDexList. Teraz wdrożenie to praca. Ale pojawia się wyjątek w trybie debugowania:Xamarin Android z obsługą wielu kamer - błąd w trybie debugowania

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() 

Do analizy używam - dex2jar i Java Decompiler (o tym article). Ale teraz nie wiem, czego szukać i jakie są problemy.

Wszelkie pomysły?

+0

Tak dzieje się w konfiguracji 'Debugowanie'. Powyższy wyjątek bardziej przypomina problem z połączeniem z miękkim debuggerem. Ponieważ w powyższym śladzie nie ma śladu żadnego Zadania Multidex, nie chcę powiedzieć, że jest on powiązany z Multidex, dopóki nie osiągniemy minimalnej reprodukcji. Czy możesz dodać jeden do swojego posta? –

+0

Cześć, Jon. Mój debugger działa teraz! To był problem z moim projektem. Mam XF 2.3.4.247 w moim projekcie. Zainstalowałem XF 2.3.5.239 (pre), a następnie usunąłem i zainstalowałem stabilną wersję 2.3.4.247. I po tym debugowaniu działało. Dziękujemy za bloga - to bardzo przydatne informacje. Czekam na twoją książkę o Xamarin Android. – FetFrumos

Odpowiedz

0

Rozwiązałem ten problem.

Jest to szczegółowo opisać mój przypadek użytkownika:

  1. użyłem biblioteki PCL.
  2. Potrzebuję zaktualizować klienta mobilnego Azure do wersji 4.0. Ta wersja nie jest obsługiwana tylko w standardzie PCL .NET Standard. 1.4.
  3. Ale mam projekt Windows Phone z Xamarin Forms. WP nieobsługiwany .Net Standard 1.4
  4. Dodałem nową bibliotekę do mojego rozwiązania (.NET Standard 1.4). Dodałem pliki do tej biblioteki z mojego PCL jako łącza.
  5. Potem był ten błąd. Początkowo był to pływający błąd - ale potem był trwały.
  6. Spędziłem dwa pełne dni robocze szukając przyczyny tego błędu. Znalazłem miejsce, w którym aplikacja spadała.
  7. Usunąłem skojarzony plik z mojej biblioteki (.Net Standard), a następnie dodałem go. Teraz działa debugowanie.