Programe a configuração ao usar o modelo do Google Cloud Endpoints do Android Studio
Precisamos armazenar e recuperar o conteúdo que os usuários geram com nosso aplicativo online. Para isso, decidimos usar o modelo integrado do Google Cloud Endpoints do Android Studio para criar rapidamente uma API (exemplo oficial de uso aqui)
Funciona bem na depuração, mas no modo release, com o Proguard ativado, falha. Pior ainda, não encontrei nenhuma documentação ou amostra sobre o uso do Proguard com os modelos de pontos de extremidade do Android Studio.
Depois de mais ou menos uma hora bisbilhotando e tentando fazê-lo funcionar, oproguard-rules.pro agora se parece com isso:
-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.** { *; }
Com essa configuração, estou recebendo uma exceção de elenco de classe no meuArrayAdapter
:
java.lang.ClassCastException: com.google.api.client.util.ArrayMap cannot be cast to com.companyname.appname.application.backend.messageApi.model.Message
Parece que a conversão dos dados retornados não é realizada em algum lugar e, em vez de umList
doMessage
objetos, eu recebo umList
docom.google.api.client.util.ArrayMap
objetos (eles contêm dados válidos, a propósito).
Eu poderia verificar se o aplicativo está sendo executado no modo de liberação e fazer a conversão manualmente, no entanto, é uma maneira hacky e eu prefiro fazê-lo corretamente. Então, alguém pode me dizer o que estou perdendo no arquivo de configuração Proguard?