Как настроить proguard для Android-приложения с помощью Google Drive SDK?

Когда Eclipse включает proguard при создании Quickstart : запустите приложение для дисковода на примере приложения Android , приложение теряет способность загружать файлы.

Идентификатор клиента API Google отображается правильно, учитывая, что версия выпуска приложения отлично работает при построении без proguard. Однако такая загрузка файла приложения версии версии не работает при построении в Eclipse с включенной proguard. Вот мой файл конфигурации проблемных proguard:

# To enable ProGuard in your project, edit project.properties # to define the proguard.config property as described in that file. # # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in ${sdk.dir}/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the ProGuard # include property in project.properties. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html -libraryjars /libs/android-support-v4.jar -libraryjars /libs/google-api-client-1.13.2-beta.jar -libraryjars /libs/google-api-client-android-1.13.2-beta.jar -libraryjars /libs/google-api-services-drive-v2-rev70-1.13.2-beta.jar -libraryjars /libs/google-http-client-1.13.1-beta.jar -libraryjars /libs/google-http-client-android-1.13.1-beta.jar -libraryjars /libs/google-http-client-gson-1.13.1-beta.jar -libraryjars /libs/google-http-client-jackson-1.13.1-beta.jar -libraryjars /libs/google-http-client-jackson2-1.13.1-beta.jar -libraryjars /libs/google-http-client-protobuf-1.13.1-beta.jar -libraryjars /libs/google-oauth-client-1.13.1-beta.jar -libraryjars /libs/gson-2.1.jar -libraryjars /libs/guava-jdk5-13.0.jar -libraryjars /libs/jackson-core-2.0.5.jar -libraryjars /libs/jackson-core-asl-1.9.9.jar -libraryjars /libs/jsr305-1.3.9.jar -libraryjars /libs/protobuf-java-2.4.1.jar # Add any project specific keep options here: -keep class com.google.** -dontwarn com.google.** # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} 

И вот результирующие ошибки, отображаемые в logcat:

 D/ALSAModule( 162): setHardwareParams: reqBuffSize 1024 channels 2 sampleRate 48000 D/ALSAModule( 162): setHardwareParams: buffer_size 2048, period_size 1024, period_cnt 2 W/System.err(10707): com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden W/System.err(10707): { W/System.err(10707): "code": 403, W/System.err(10707): "errors": [ W/System.err(10707): { W/System.err(10707): "domain": "usageLimits", W/System.err(10707): "message": "Access Not Configured", W/System.err(10707): "reason": "accessNotConfigured" W/System.err(10707): } W/System.err(10707): ], W/System.err(10707): "message": "Access Not Configured" W/System.err(10707): } W/System.err(10707): at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.b(Unknown Source) W/System.err(10707): at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.a(Unknown Source) W/System.err(10707): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.b(Unknown Source) W/System.err(10707): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.d(Unknown Source) W/System.err(10707): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.e(Unknown Source) W/System.err(10707): at com.example.testupload2.a.run(Unknown Source) W/System.err(10707): at java.lang.Thread.run(Thread.java:856) D/overlay ( 159): Unset pipe=VG0 dpy=0; Unset pipe=RGB1 dpy=0; D/alsa_ucm( 162): snd_use_case_set(): uc_mgr 0x40e59388 identifier _verb value Inactive D/alsa_ucm( 162): Set mixer controls for HiFi Lowlatency enable 0 D/alsa_ucm( 162): snd_use_case_set(): uc_mgr 0x40e59388 identifier _disdev value Camcorder Tx 

Я новичок-прогард. Какие-нибудь советы о правильной конфигурации proguard?

ОБНОВИТЬ:
Я отправил эту проблему в трекер Android ( выпуск 54765 ).

ОБНОВЛЕНИЕ 2: теперь, когда API Google Диска Android реализован в службах Google Play, размер моего приложения уменьшился, и настройка proguard полностью задокументирована . Обе хорошие вещи.

Для сохранения необходимых атрибутов и членов класса используйте в своем proguard-google-api-client.txt .

 -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault -keepclassmembers class * { @com.google.api.client.util.Key <fields>; } -keep class com.google.** { *;} -keep interface com.google.** { *;} -dontwarn com.google.** # Needed by google-http-client-android when linking against an older platform version -dontwarn com.google.api.client.extensions.android.** # Needed by google-api-client-android when linking against an older platform version -dontwarn com.google.api.client.googleapis.extensions.android.** 

Просто добавьте ниже 2 строки в proguard-project.txt

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