2017-07-05 26 views
6

Tôi hiện đang đối mặt với một vấn đề về thư viện Xindarin Forms Android Bindings. Tôi đã đặt một thư viện .jar bên trong dự án liên kết của tôi và tôi nhận ra rằng thư viện chưa được tải đầy đủ.Xamarin.Forms Lỗi thư viện ràng buộc Android

Khi tôi xây dựng dự án kết buộc của tôi, nó biên dịch đúng nhưng tôi vẫn có một số cảnh báo trong đầu ra của tôi.

1> BINDINGSGENERATOR: cảnh báo BG8102: Class Java.Util.LinkedHashMap có loại cơ sở không xác định Java.Util.HashMap.

1> BINDINGSGENERATOR: cảnh báo BG8103: Class Com.MyParams có loại cơ sở không hợp lệ java.util.LinkedHashMap.

1> BINDINGSGENERATOR: cảnh báo BG8701: Loại trả về không hợp lệ .MyParams trong phương thức GetParams trong loại được quản lý Com.TagOp.

1> BINDINGSGENERATOR: cảnh báo BG8801: Loại thông số không hợp lệ com.MyParams trong phương thức TagOps trong loại được quản lý Com.TagOp.

1> BINDINGSGENERATOR: cảnh báo BG8801: Loại thông số không hợp lệ com.MyParams trong phương thức TagOps trong loại được quản lý Com.TagOp.

1> BINDINGSGENERATOR: cảnh báo BG8801: Loại tham số không hợp lệ com.MyParams trong phương thức TagPage trong loại được quản lý Com.Tag.

Trong mã Android của tôi Tôi không thể sử dụng lớp Com.MyParams vì nó không được tải.

Sự cố này xảy ra kể từ khi cập nhật Xamarin cho Visual Studio 2017.

Bạn có bất kỳ khách hàng tiềm năng nào để khắc phục sự cố này không? Cảm ơn trước.

+0

Bạn đã kiểm tra mã nguồn dự án Android của mình, liệu các thư viện phụ thuộc dự án đó có phụ thuộc vào dự án không? Nếu vậy bạn cần phải nhập các thư viện khác vào dự án ràng buộc của bạn. –

+0

Dự án Android của tôi tham khảo các thư viện Xamarin và dự án Binding của tôi. Khi tôi thấy thư mục 'obj /' của dự án ràng buộc, 'com.MyParams' của tôi không được tạo ra. Vì vậy, tôi đoán là dự án ràng buộc không tạo ra lớp này vì cảnh báo tôi đã đăng trên bài đăng chính của mình. – Eastrall

+0

"Vấn đề này xảy ra kể từ khi cập nhật Xamarin cho Visual Studio 2017.", Bạn có nghĩa là nó là tốt khi bạn không cập nhật Xamarin? Phiên bản là gì? –

Trả lời

2

HashMap & LinkedHashMap không được biết ... do đó không có gì dựa trên chúng có thể được lập trình.

Khi ràng buộc dữ liệu không biết lớp, sau đó thiếu chú thích, nó có thể không mở rộng lớp BaseObservable và/hoặc có tên phương pháp get/set phương thức (cần khớp với tên của trường); có một vài điều kiện để đáp ứng, tùy thuộc vào yêu cầu ràng buộc dữ liệu một chiều hoặc hai chiều. Việc xem xét mã được tạo ra thường cho một đầu mối những gì người ta phải thay đổi.

Tuy nhiên, việc ràng buộc dữ liệu trực tiếp các lớp JAR thậm chí không xuất hiện, trừ khi thêm chú thích bắt buộc vào chúng và sau đó xây dựng JAR, để chúng có thể liên kết. Tài liệu của Android Data Binding Library và Xamarin Java Bindings Metadata giải thích nó (sao chép các lớp Java yêu cầu từ đầu, hoàn toàn có thể liên kết, có thể là chuyển tiếp nhanh nhất, nếu không phải là cách duy nhất).

Chỉ có thể làm việc xung quanh nó, bằng cách thay thế các lớp được gắn với GUI - có thể với các lớp khá đơn giản hoặc khi sử dụng Java decompiler (để biết các trường cần sử dụng).

+0

Vì vậy, tôi cần phải nói trình tạo liên kết để mở rộng lớp 'LinkedHashMap' với' HashMap'? Tôi đã thử ' java.util.HashMap' nhưng có lỗi : '1> BINDINGSGENERATOR: cảnh báo BG8A04: không khớp với nút nào. ' – Eastrall

+0

nope; bạn cần mã nguồn của các lớp trong JAR hoặc tạo lại một cái gì đó giống nhau ... chúng ta không thể lấy bất kỳ lớp nào và ràng buộc nó, bởi vì ràng buộc dữ liệu mong đợi các tên và chú thích cụ thể; ví dụ. '@ Bindable' cho getters ... mà không có, các phương pháp sẽ không được tiếp xúc. trong khi tôi thực sự duy trì một codebase với nhiều phần tử giao diện người dùng, thư viện của bên thứ ba, v.v ... và thử những gì bạn cố gắng làm, mặc dù trong Java - trong khi không có cách nào - người ta chỉ có thể nỗ lực để tạo lại các lớp bắt buộc, nhưng có thể liên kết .... hoặc tạo các lớp, hầu như không ràng buộc chúng + JAR –

+0

... vẫn thấy nó lạ, thậm chí không tìm thấy các lớp phổ biến này; bạn có chắc chắn đã cài đặt và tham chiếu JDK không? –

Các vấn đề liên quan