2017-06-11 43 views
10

Tôi đã tạo ứng dụng Biểu mẫu Xamarin. Tôi sử dụng multidex cho Android (nhiều thư viện). Tôi sử dụng tệp multidex.keep với tùy chọn MultiDexMainDexList. Bây giờ triển khai là công việc. Nhưng tôi có ngoại lệ ở chế độ gỡ lỗi:Xamarin Android với multidex - lỗi trong chế độ gỡ lỗi

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

Để phân tích tôi sử dụng - dex2jar và Java Decompiler (theo số article) này. Nhưng bây giờ tôi không biết phải tìm gì và vấn đề là gì.

Bất kỳ ý tưởng nào?

+0

Điều này xảy ra trong cấu hình 'Debug'. Ngoại lệ trên trông giống như một vấn đề kết nối với trình gỡ rối mềm. Vì không có dấu vết của bất kỳ Tác vụ Multidex nào trong dấu vết trên, tôi do dự khi nói nó liên quan đến Multidex cho đến khi chúng ta có một bản sao tối thiểu. Bạn có thể thêm một bài đăng vào bài đăng của mình không? –

+0

Xin chào, Jon. Trình gỡ lỗi của tôi hiện đang hoạt động! Đó là một vấn đề với dự án của tôi. Tôi có XF 2.3.4.247 trong dự án của mình. Tôi đã cài đặt XF 2.3.5.239 (trước), sau đó xóa nó và cài đặt phiên bản ổn định 2.3.4.247. Và sau đó gỡ lỗi đã làm việc. Cảm ơn bạn đã viết blog - đây là thông tin rất hữu ích. Tôi đang chờ cuốn sách của bạn về Xamarin Android. – FetFrumos

Trả lời

0

Tôi đã giải quyết được sự cố này.

Đây là mô tả chi tiết trường hợp người dùng của tôi:

  1. tôi đã sử dụng thư viện PCL.
  2. Tôi cần cập nhật Azure Mobile Client lên phiên bản 4.0. Phiên bản này không được hỗ trợ PCL chỉ .NET Standard. 1.4.
  3. Nhưng tôi có dự án Windows Phone với Biểu mẫu Xamarin. WP không được hỗ trợ .Net Standard 1.4
  4. Tôi thêm thư viện mới vào giải pháp của mình (Tiêu chuẩn .NET. 1.4). Tôi đã thêm tệp vào thư viện này từ PCL của tôi làm liên kết.
  5. Sau đó, có lỗi này. Lúc đầu, nó là một lỗi nổi - nhưng sau đó nó là vĩnh viễn.
  6. Tôi đã dành hai ngày làm việc đầy đủ để tìm nguyên nhân gây ra lỗi này. Tôi tìm thấy một nơi mà ứng dụng đang giảm.
  7. Tôi đã xóa tệp được liên kết khỏi thư viện của tôi (.Net Standard) rồi thêm tệp đó. Bây giờ gỡ lỗi hoạt động.
Các vấn đề liên quan