Quickstart: Run a Drive App on Androidサンプル アプリケーションをビルドするときに Eclipse に proguard が含まれている場合、アプリケーションはファイルをアップロードする機能を失います。
アプリケーションのリリース バージョンが proguard なしでビルドされた場合に正常に動作することを考えると、Google API クライアント ID は正しく構成されているように見えます。ただし、proguard を有効にして Eclipse でビルドすると、同じリリース バージョンのアプリケーションのファイル アップロードが機能しません。問題のあるプロガード構成ファイルは次のとおりです。
# 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
私はプロガードの初心者です。正しいプロガード構成がどうあるべきかについてのヒントはありますか?
更新:
この問題を Android イシュー トラッカー (問題 54765 ) に提出しました。
更新 2: Google ドライブ Android API が Google Play Services 内に実装されたので、アプリケーションのサイズが小さくなり、proguard のセットアップが完全に文書化されました。どちらも良いことです。