2

Android アプリケーションで googlePlaces と google Map API を使用していますが、すべて正常に動作します。Proguard を有効にすると、Google マップは正常に機能しますが、Google プレイスは機能しません。すべての検索リクエストに対して結果が返されません。ログを見た後、動作しないコードの部分を見つけました:

try {

        HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
        HttpRequest request = httpRequestFactory
                .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
        request.getUrl().put("key", API_KEY);
        request.getUrl().put("location", _latitude + "," + _longitude);
        request.getUrl().put("radius", _radius); // in meters
        request.getUrl().put("sensor", "false");
        if(types != null)
            request.getUrl().put("types", types);

        PlacesList list = request.execute().parseAs(PlacesList.class);
        // Check log cat for places response status
        Log.d("Places Status", "" + list.status);
        return list;

    } catch (HttpResponseException e) {
        Log.e("Error:", e.getMessage());
        return null;
    }

このコードは、proguard バージョンでは null を返し、通常バージョンでは結果を返します。

私はこのようにgooglePlacesで動作するすべてのクラスを維持しようとしました:

-keep public class com.example.android.mapexample.GooglePlaces
-keep public class com.example.android.mapexample.Place
-keep public class com.example.android.mapexample.PlaceDetails
-keep public class com.example.android.mapexample.PlacesList

しかし、うまくいきません。:/ 何が悪いのかわかりません。

proguard-google-api-client.txt http://textuploader.com/?p=6&id=TAEQI

proguard-project.txt http://textuploader.com/?p=6&id=HFbTF

手伝ってくれてありがとう

4

2 に答える 2

4

GoogleマップAPIを使用するシリアライズ可能なクラスを保持した後、問題を解決しました

-keepnames class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {
     static final long serialVersionUID;
     private static final java.io.ObjectStreamField[] serialPersistentFields;
     !static !transient <fields>;
     !private <fields>;
     !private <methods>;
     private void writeObject(java.io.ObjectOutputStream);
     private void readObject(java.io.ObjectInputStream);
     java.lang.Object writeReplace();
     java.lang.Object readResolve();
 }
于 2013-10-31T12:41:25.330 に答える