2012-02-06 14 views
7

Sto sviluppando un'applicazione che utilizza google maps. L'app funziona fino a quando non esporto il pacchetto dell'app firmato. Dopo che il codice è stato oscurato, le mappe non vengono più caricate. Sono abbastanza nuovo per ProGuard, ho provato a modificare proguard.cfg ma non è successo nulla. Ecco alcune delle cose diverse che ho provato:Le mappe di Google non vengono caricate dopo ProGuard Obfuscation in 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 

Grazie

+1

Hai la chiave API di Maps con la firma utilizzata durante l'esportazione ting? potrebbe non essere un problema con l'offuscamento. Potrebbe essere un problema con la chiave API Map. – Karthik

+0

Sì, avevi ragione, stavo usando la mia vecchia chiave di debug. Grazie mille. –

risposta

9

E 'più probabile problema con il Maps API Key. Dovresti generare la chiave con la firma utilizzata durante l'esportazione dell'app e utilizzarla nella visualizzazione mappa.
È improbabile che l'offuscamento tramite ProGuard influenzi il rendering della mappa.

13

Edit: Per Google Maps per Android V2 In particolare:

Solo nel caso in cui qualcuno vede questo e ha un problema simile - mi è stato sempre un ParcelableRuntimeException quando ho cercato di visualizzare una seconda mappa (come in, Activity A avevano un'istanza di mappa, quindi passando a Activity B, un'altra istanza con parametri diversi), indicando ciò che stavo assumendo era un nome di classe offuscato nel pacchetto google.

dopo ho aggiunto

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

al mio tutto Proguard-project.txt sembrava di continuare a lavorare come al solito

0

potrebbe aiutare:

-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(); 
} 

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

Problemi correlati