6

私はAndroid の手順で Google ドライブのクイックスタートに従っており、Eclipse/Kepler で動作しています。(Juno は単純に危険です。)しかし、私は IntelliJ の方がずっと詳しいので、対応する方法でこれらの API をそこにインストールする方法を見つけようとしています。

ドライブ API の部分でつまづいていると思います。Eclipse プラグインは、Drive を特別な方法または場所にインストールします。Google-api-services-drive-v2-rev63-1.14.1-beta.jar を他のライブラリ (Google-play-services と api_java_client) と同じライブラリとして追加しました。しかし、アプリケーションを実行すると、戻ってきます

java.lang.NoClassDefFoundError: com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential

また、Drive$Builder に関係する NoClassDefFoundError も取得しました。

IntelliJ では、「提供」に設定されている api_java_client ライブラリを除いて、.jar スコープは「コンパイル」に設定されています。それらのどれも「エクスポート」がチェックされていません。

編集:モジュールと依存関係を追加しました。私は今、別のエラーがあります:

04-07 00:39:59.766: ERROR/AndroidRuntime(10697): FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError:
com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential
    at com.fallinghawks.weight4.App.onCreate(App.java:15)

App.java:15 は

credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);

私はそれが求めているクラスを見つけることができます....

編集 2、CrazyCoder の指示に従ってライブラリを追加した後: コンパイルして実行しますが、次のエラーが発生します。正確に何かをやり忘れたと確信しています。すぐにもう一度やり直しますが、それまでの間、エラーは次のとおりです。

04-10 18:02:35.120: ERROR/AndroidRuntime(740): FATAL EXCEPTION: main
    java.lang.ExceptionInInitializerError
    at com.google.api.services.drive.Drive$Builder.build(Drive.java:7301)
    at com.example.DriveQuickstart.MyActivity.getDriveService(MyActivity.java:110)
    at com.example.DriveQuickstart.MyActivity.onActivityResult(MyActivity.java:49)
    at android.app.Activity.dispatchActivityResult(Activity.java:5293)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
    at android.app.ActivityThread.access$1100(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5041)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.NoClassDefFoundError: com.google.common.base.Preconditions
    at com.google.api.services.drive.Drive.<clinit>(Drive.java:63)

(できれば最終編集):はい、何かを見逃していましたが、獣は働いています! どうもありがとう!!
これで、再び IntelliJ を使用して「実際の」プロジェクトに取り組むことができます...すっごく良くなりました :)

4

1 に答える 1

6

私は先に進み、IntelliJ IDEA プロジェクトをゼロから作成しました。約 15 分かかりましたが、問題なく動作しました。

  1. Drive API v2 ライブラリと依存関係をダウンロードします。

  2. どこかで解凍し、開いてreadme.html、必要なjarファイルを理解するために数分読んでください。

  3. com.example.drivequickstartパッケージとを含むウィザードを使用して、IDEA で新しい Android アプリケーション プロジェクトを作成しますMainActivityAndroid 4.2.2 Google APIをプラットフォームとして使用します。

  4. ダウンロードした Drive API ライブラリから次の jar をプロジェクト フォルダーにコピーしlibsます (ステップ 2 でどの jar を使用するかを学習している必要があります)。

    • google-api-client-1.14.1-beta.jar
    • google-api-client-android-1.14.1-beta.jar
    • google-http-client-1.14.1-beta.jar
    • google-http-client-android-1.14.1-beta.jar
    • google-http-client-gson-1.14.1-beta.jar
    • google-oauth-client-1.14.1-beta.jar
    • gson-2.1.jar
    • jsr305-1.3.9.jar
    • google-api-services-drive-v2-rev65-1.14.1-beta.jar
  5. これらの jar からプロジェクト ライブラリを構成します。プロジェクト ビューで jar を選択し、右クリックして [ライブラリとして追加... ] を選択し、このライブラリをメイン モジュールの依存関係に追加します。

  6. File| | 、既存のソースからImport Module参照します。ANDROID_SDK\extras\google\google_play_services\libproject\google-play-services_‌​lib

  7. google-play-services.jarインポートしたモジュールの依存関係に追加し、[エクスポート] チェックボックスを有効にすると、次のようになります。

  8. 手順 6 で作成したモジュールをメイン アプリケーション モジュールの依存関係に追加します。

  9. クイック スタートのステップ 4MainActivityのサンプル コードをファイルにコピーして、古いコードを置き換え、ガイドに従って編集します。MainActivity.javaAndroidManifest.xml

  10. ビルドし、エミュレーターまたはデバイスで実行してテストします (クイック スタートの手順 1 ~ 2 を忘れないでください)。


または、上記の手順に従って作成した完全に分離されたサンプルをダウンロードして使用することもできます (手順 6 のモジュールはプロジェクトに含まれています)。

カメラアプリのエラーが原因でエミュレーターで失敗しましたが (サンプルではカメラが使用されており、エミュレーターでは構成されていませんでした)、Galaxy Nexus デバイスでは機能しました。このサンプルでは、​​デバイスのカメラを使用して写真を撮り、Google ドライブにアップロードします。

于 2013-04-09T21:08:12.900 に答える