2012-02-06 17 views
7

'daki ProGuard Obfuscation'dan sonra yüklenmiyor. Google maps kullanan bir uygulama geliştiriyorum. I İmzalı uygulama paketini dışa aktarıncaya kadar uygulama iyi çalışıyor. Kod gizlendikten sonra haritalar artık yüklenmiyor. Ben ProGuard için oldukça yeni, proguard.cfg değiştirmeyi denedim ama hiçbir şey çok çalıştı. Bu Maps API Key ile en olası sorundurGoogle Haritaları, Eclipse

-libraryjars C:/Program Files/Android/android-sdk/add-ons/addon-google_apis-google_inc_-10/libs/maps.jar 

-keep class android.location.** { *; } 

-keepnames class com.google.android.maps.** {*;} 
-keep public class com.google.android.maps.** {*;} 

-dontwarn com.google.android.maps.GeoPoint 
-dontwarn com.google.android.maps.MapActivity 
-dontwarn com.google.android.maps.MapView 
-dontwarn com.google.android.maps.MapController 
-dontwarn com.google.android.maps.Overlay 

Teşekkür

+1

i ekledikten sonra

benim proguard-project.txt her şeyi

-keep class com.google.android.gms.maps.** { *; } -keep interface com.google.android.gms.maps.** { *; } 

Karthik

+0

Evet haklıymışım Eski hata ayıklama anahtarını kullanıyordum. Çok teşekkür ederim. –

cevap

9

: İşte ben denedim farklı şeyler bazılarıdır. Uygulamayı dışa aktarırken kullanılan imzayla Anahtarı oluşturmalı ve harita görünümünde kullanmalısınız.
ProGuard kullanarak Obfuscation'ın harita oluşturmayı etkilemesi olası değildir.

13

Düzenleme: Özellikle Android V2 için Google Haritalar için:

kimse bunu görür ve benzer bir sorunu var olur ne olmaz

- İkinci bir haritasını görüntülemek çalıştığımızda Activity A vardı gibi ben (bir ParcelableRuntimeException başlamıştı google paketinde gizlenmiş bir sınıf adı olduğunu varsaydığımı gösteren bir harita örneği, daha sonra farklı paramslarla başka bir örnek olan Activity B'a taşınıyor.

-optimizations !code/simplification/variable 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Fragment 
-keep public class * extends android.support.v4.app.Fragment 

# The Maps API uses custom Parcelables. 
# Use this rule (which is slightly broader than the standard recommended one) 
# to avoid obfuscating them. 

-keepclassmembers class * implements android.os.Parcelable { 
    static *** CREATOR; 
} 

# The Maps API uses serialization. 

-keepclassmembers class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    static final java.io.ObjectStreamField[] serialPersistentFields; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    java.lang.Object writeReplace(); 
    java.lang.Object readResolve(); 
} 

Kaynak: https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/proguard-rules.pro

0

ona iyi gelebilir, normal

olarak çalışmaya devam gibiydi Dışa aktarma sırasında kullanılan imzayla Google Haritalar API'sı anahtarınız var mı? ting? gizleme ile ilgili bir sorun olmayabilir. Harita API anahtarı ile sorun olabilir.
İlgili konular