Error al usar proguard con Android Facebook SDK 3.0

Advertencia: Eliminé muchos "textos antiguos" para mantener la pregunta más limpia. Solo revisa la historia si es necesario.

Estoy usandoproguard tanto para reducir y ofuscar una aplicación que utiliza elfacebook sdk 3.0 (Estoy usando elEtiqueta sdk-version-3.0.2.b). No estoy usando un archivo JAR. En cambio, importé el SDK dentro de mi área de trabajo, como lo enseñó eldocumentación.

En cierto punto de la ejecución, la aplicación carga unPlacePickerFragment Dejar que el usuario elija el lugar donde se encuentra. Para codificar esto, sigo exactamente laRiquísimo tutorial. Cuando genero el debug apk sin usarproguard Todo funciona como se espera. Pero cuando genero la apk firmada usandoproguard, se bloquea cuando PlacePickerFragment carga lugares cercanos con la siguiente traza:

E/AndroidRuntime(27472): FATAL EXCEPTION: main
E/AndroidRuntime(27472): com.facebook.FacebookGraphObjectException: can't infer generic type of: interface com.facebook.model.GraphObjectList
E/AndroidRuntime(27472):    at com.facebook.model.GraphObject$Factory.coerceValueToExpectedType(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.model.GraphObject$Factory$GraphObjectProxy.proxyGraphObjectGettersAndSetters(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.model.GraphObject$Factory$GraphObjectProxy.invoke(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.widget.$Proxy2.getData(Native Method)
E/AndroidRuntime(27472):    at com.facebook.widget.GraphObjectPagingLoader.addResults(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.widget.GraphObjectPagingLoader.requestCompleted(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.widget.GraphObjectPagingLoader.access$1(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.widget.GraphObjectPagingLoader$2.onCompleted(Unknown Source)
E/AndroidRuntime(27472):    at com.facebook.Request$4.run(Unknown Source)
E/AndroidRuntime(27472):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(27472):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(27472):    at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(27472):    at android.app.ActivityThread.main(ActivityThread.java:3687)
E/AndroidRuntime(27472):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(27472):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(27472):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
E/AndroidRuntime(27472):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
E/AndroidRuntime(27472):    at dalvik.system.NativeStart.main(Native Method)

Tratando de evitar este error, mantuve todas las clases de facebook sin tocar, pero no funcionó. Mi actualproguard-project.txt expediente:

-keep class com.facebook.** {
   *;
}

Mi actualprojet.properties archivo (extracto):

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

Como puedes ver, miproguard La configuración es una "especialización" deEste archivo.

Si pongo-dontobfuscate enproguard-project.txt archivo, funcionará. Pero lo que no entiendo es que lakeep class com.facebook.** Ya debe evitar que las clases relacionadas con facebook se ofuscen. Lo que sugiere que el problema no está directamente relacionado con las clases de facebook.

losextracto del código que arrojacom.facebook.FacebookGraphObjectException es:

static <U> U coerceValueToExpectedType(Object value, Class<U> expectedType, 
        ParameterizedType expectedTypeAsParameterizedType) {

    // [...]

    } else if (Iterable.class.equals(expectedType) || Collection.class.equals(expectedType)
        || List.class.equals(expectedType) || GraphObjectList.class.equals(expectedType)) {
        if (expectedTypeAsParameterizedType == null) {
            throw new FacebookGraphObjectException("can't infer generic type of: " + expectedType.toString());
        }
    // [...]
}

Claramente,expectedTypeAsParameterizedType esnull en versión de lanzamiento. Pero en ambas versiones (depuración y lanzamiento)expectedType es uncom.facebook.model.GraphObjectList interfaz. Desafortunadamente, no entiendo casi nada acerca de los conceptos de reflexión de Java.

¿Como puedo solucionar este problema?

Respuestas a la pregunta(4)

Su respuesta a la pregunta