2016-02-18 21 views
6

Tôi nhận được lỗi sau trong khi biên dịch ứng dụng Android của mình với ProGuard được bật.Xung đột giữa ràng buộc dữ liệu Android và lỗi Nguyên nhân gây ra lỗi ProGuard

Warning: library class android.databinding.tool.util.SourceCodeEscapers$1 
    extends or implements program class com.google.common.escape.CharEscaper 
Warning: library class android.databinding.tool.util.SourceCodeEscapers$JavaCharEscaper 
    extends or implements program class com.google.common.escape.ArrayBasedCharEscaper 
Warning: library class android.databinding.tool.util.SourceCodeEscapers$JavaCharEscaperWithOctal 
    extends or implements program class com.google.common.escape.ArrayBasedCharEscaper 
Warning: there were 3 instances of library classes depending on program classes. 
     You must avoid such dependencies, since the program classes will 
     be processed, while the library classes will remain unchanged. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#dependency) 

Dường như điều này là do xung đột giữa Android data binding và Ổi. Ứng dụng của tôi phụ thuộc vào ổi (com.google.guava: ổi: 18.0) và đã bật tính năng ràng buộc dữ liệu. Nó appears rằng ràng buộc dữ liệu có một số loại phụ thuộc nội bộ trên ổi và đó là gây ra một vấn đề với ProGuard.

Tôi đang chạy phiên bản beta mới nhất của gradle (2.0.0-beta5) vì vậy có lẽ sự cố liên quan đến điều đó.

+1

Tôi gặp vấn đề tương tự! Cùng một bản ghi đầu ra như trên và sử dụng cùng một phiên bản của gradle. quá bực mình –

Trả lời

11

Vì vậy, tôi đã có thể xây dựng bằng cách thêm này để Proguard: -dontwarn android.databinding.** -keep class android.databinding.** { *; }

Mà tôi không nghĩ là hoàn toàn là giải pháp đúng để chỉ cần bỏ qua những lớp học nhưng tôi nghĩ rằng chúng tôi chỉ có thể phải chờ đợi cho một bản cập nhật từ Google. Sau khi thêm vào đó để proguard tôi đã có thể xây dựng một gói phát hành nhưng nó đã bị rơi, tôi nghĩ rằng nó vẫn là proguard nhưng tìm thấy các lỗi khác trong mã của tôi.

+2

Tôi đã có thể thoát khỏi việc chỉ cần thêm '-dontwarn android.databinding.tool.util. **' vào tệp ProGuard của mình. – Benjamin

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