Chúng ta cần phải lưu trữ và lấy nội dung mà người dùng tạo ra với ứng dụng của chúng tôi trực tuyến. Để làm như vậy, chúng tôi đã quyết định sử dụng mẫu Google Cloud Endpoints được tích hợp của Android Studio để tạo nhanh API (ví dụ sử dụng chính thức here).cấu hình Proguard khi sử dụng Android Studio của Google Cloud thiết bị đầu cuối mẫu
Nó hoạt động tốt trong debug, nhưng trong chế độ phát hành, với Proguard được kích hoạt, nó không thành công. Tệ hơn nữa, tôi đã không tìm thấy bất kỳ tài liệu hoặc mẫu nào về việc sử dụng Proguard với các mẫu Thiết bị đầu cuối của Studio Android.
Sau một giờ hoặc lâu hơn poking xung quanh và cố gắng để làm cho nó hoạt động, các proguard-rules.pro bây giờ trông như thế này:
-keep class com.google.api.** { public *; }
-dontwarn com.google.api.**
-keep class com.google.common.** { public *; }
-dontwarn com.google.common.**
# Not allowed to post company and app names, but this line is correct in the real file
-keep class com.companyname.appname.application.backend.** { *; }
Với cấu hình này, tôi nhận được một dàn diễn viên lớp ngoại lệ trong ArrayAdapter
tôi:
java.lang.ClassCastException: com.google.api.client.util.ArrayMap cannot be cast to com.companyname.appname.application.backend.messageApi.model.Message
có vẻ như việc chuyển đổi dữ liệu trả về không được thực hiện ở đâu đó và, thay vì một List
của Message
đối tượng, tôi nhận được một List
của com.google.api.client.util.ArrayMap
đối tượng (chúng có chứa dữ liệu hợp lệ, nhân tiện).
tôi có thể kiểm tra xem các ứng dụng đang chạy trong chế độ phát hành và thực hiện việc chuyển đổi bằng tay, tuy nhiên, đó là một cách hacky và tôi muốn làm điều đó đúng. Vì vậy, có thể ai đó xin vui lòng cho tôi biết những gì tôi đang thiếu trong tập tin cấu hình Proguard?
Phần đầu tiên của những gì bạn đăng thực sự là giải pháp đúng. – Manvis
Tuyệt vời, cảm ơn phản hồi. – myanimal
Phần đầu tiên được cứu mạng tôi !! Cảm ơn rất nhiều! – KimKha