2012-02-06 23 views
7

Tôi đang phát triển một ứng dụng sử dụng bản đồ google. Ứng dụng hoạt động tốt cho đến khi tôi Xuất gói ứng dụng đã ký .Sau khi mã đã bị làm mờ bản đồ không còn được tải. Tôi khá mới với ProGuard, tôi đã cố gắng sửa đổi proguard.cfg nhưng soo đến nay không có gì đã làm việc. Dưới đây là một số trong những điều khác nhau mà tôi đã cố gắng:Bản đồ Google không được tải sau khi ProGuard Obfuscation trong 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 

Cảm ơn

+1

Bạn đã có khóa API Maps với chữ ký được sử dụng trong khi expor ting? nó có thể không phải là một vấn đề với obfuscation. Nó có thể là vấn đề với khóa Map API. – Karthik

+0

Có bạn đã đúng Tôi đã sử dụng khóa gỡ lỗi cũ của tôi. Cảm ơn rât nhiêu. –

Trả lời

9

Nó rất có thể là vấn đề với Maps API chính. Bạn nên tạo Khóa bằng chữ ký được sử dụng trong khi xuất ứng dụng và sử dụng nó trong chế độ xem bản đồ của bạn.
Không chắc rằng Obfuscation sử dụng ProGuard sẽ ảnh hưởng đến việc hiển thị bản đồ.

13

Edit: Đối với Google Maps For Android V2 Cụ thể:

Chỉ trong trường hợp bất cứ ai nhìn thấy điều này và có một vấn đề tương tự - Tôi đã nhận được một ParcelableRuntimeException khi tôi đã cố gắng để xem một bản đồ thứ hai (như trong, Activity A thăm một bản đồ, sau đó di chuyển đến Activity B, một phiên bản khác với các tham số khác nhau), trỏ đến những gì tôi đã giả định là một tên lớp bị xáo trộn trong gói google.

sau khi tôi thêm

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

để Proguard-project.txt tôi tất cả mọi thứ dường như tiếp tục làm việc như bình thường

0

Nó có thể giúp:

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

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

Các vấn đề liên quan