5

Kullanıcıların bizim uygulamamızla online olarak oluşturdukları içeriği saklamamız ve çağırmamız gerekiyor. Bunu yapmak için Android Studio’nun entegre Google Cloud Uç Noktaları şablonunu hızlıca bir API (resmi kullanım örneği here) oluşturmak için kullanmaya karar verdik.Android Studio'nun Google Cloud Endpoint'ler şablonunu kullanırken proguard yapılandırması

Hata ayıklamada iyi çalışır, ancak Proguard etkinken serbest bırakma modunda başarısız olur. Daha da kötüsü, Proguard'ı Android Studio'nun Bitiş Noktaları şablonlarıyla kullanma hakkında herhangi bir belge veya numune bulamadım. Bir saat sonra

veya kurcalama ve çalışması için çalışmakla böylece

, proguard-rules.pro şimdi şuna benzer:

Bu yapılandırma ile
-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.** { *; } 

, bir sınıf döküm alıyorum benim ArrayAdapter istisna:

java.lang.ClassCastException: com.google.api.client.util.ArrayMap cannot be cast to com.companyname.appname.application.backend.messageApi.model.Message 

Öyle birolsun, yerine ListMessage tesislerin, döndürülen verilerin dönüşüm yerde gerçekleştirilmez görünüyor ve com.google.api.client.util.ArrayMap nesnesininnesnesi (bunlar geçerli veriler içeriyor).

Uygulamanın sürüm modunda çalışıp çalışmadığını kontrol etmeli ve dönüştürmeyi el ile yapmalı mıyım, ancak, bu harikulade bir yoldur ve düzgün bir şekilde yapmayı tercih ediyorum. Öyleyse, birisi Proguard konfigürasyon dosyasında eksik olanı bana söyleyebilir mi?

cevap

17

Uygulamalarımdan birinde uç noktalarla benzer şeyler yapıyorum. Proguard ile de bazı problemlerim vardı (tam olarak ne olduğunu hatırlayamıyorum). Benim Proguard kurallarının

Bu bölüm uygulanabilir görünüyor:

# Needed by google-api-client to keep generic types and @Key annotations accessed via reflection 
-keepclassmembers class * { 
    @com.google.api.client.util.Key <fields>; 
} 
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault 

gerekli olup olmadığını bilmiyorum, ama aynı zamanda bu bölümü vardır:

# Play Services 
-dontwarn com.google.android.gms.** 
-dontwarn com.google.common.cache.** 
-dontwarn com.google.common.primitives.** 
-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 
-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

yardımcı olur Umut.

+5

Gönderdiğiniz ilk bölüm gerçekten doğru çözümdür. – Manvis

+2

Harika, geri bildirim için teşekkürler. – myanimal

+0

İlk bölüm hayatımı kurtardı! Büyük teşekkür ederim! – KimKha

İlgili konular