2013-04-07 157 views
6

驅動API代碼示例我正在關注的Google Drive Quickstart on Android instructions,並將它在Eclipse /開普勒的工作。 (Juno只是簡單的狡猾。)但是,我更熟悉IntelliJ,所以我試圖找出如何以相應的方式安裝這些API。谷歌播放,在的IntelliJ

認爲我就要絆倒在驅動器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 

而且我也得到了具有驅動器$生成器做的NoClassDefFoundError。

在的IntelliJ將.jar範圍被設定爲「編譯」除外,其被設置爲api_java_client庫「提供」。他們沒有一個有「出口」檢查。

編輯:添加的模塊&依賴。我現在有一個不同的錯誤:

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來處理我的「真實」項目...... sooooo好得多:)

+0

您必須在IDEA中導入ANDROID_SDK \ extras \ google \ play_services \ libproject \ google-play-services_lib'作爲新模塊,然後將您的主模塊設置爲[依賴它](http://www.jetbrains的.com /想法/的WebHelp /配置模塊依賴性和 - libraries.html)。必須爲此庫模塊中的庫罐啓用** Export **複選框。 – CrazyCoder 2013-04-07 07:04:03

+0

感謝您的回覆@CrazyCoder。我現在有一個不同的錯誤,我將添加到OP中。 – Andrea 2013-04-07 07:41:27

+0

看起來來自https://code.google.com/p/google-api-java-client/的一些jar在模塊依賴關係中缺失。 – CrazyCoder 2013-04-07 08:03:56

回答

6

我繼續前進,從頭開始創建IntelliJ IDEA項目,花了大約15分鐘,工作得很好。

  1. 下載Drive API v2 library and dependencies

  2. 打開它的某個地方,打開readme.html,花幾分鐘時間閱讀它,瞭解需要什麼罐子。

  3. 使用包含com.example.drivequickstart包和MainActivity的嚮導在IDEA中創建一個新的Android應用程序項目。使用Android 4.2.2 Google API作爲平臺。

  4. 複製下面從下載的驅動API的jar包到項目libs文件夾(你應該已經學會了從第2步使用的罐子):

    • 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. 從這些罐子Configure a project library。可以通過在項目視圖中選擇罐子,點擊右鍵,添加爲庫...,將此庫添加到主模塊的依賴項中。

  6. File | Import Module,從現有來源瀏覽至​​。

  7. 添加google-play-services.jar到導入模塊的依賴關係,使出口複選框,它看起來應該like this

  8. 將步驟6中創建的模塊添加到dependencies of your main application module

  9. 複製從Quick StartMainActivity示例代碼,步驟4到MainActivity.java文件替換舊代碼,編輯AndroidManifest.xml以及每導向。

  10. 構建,運行在模擬器或設備上進行測試(不要忘記Quick Start中的步驟1-2)。


或者你可以download and use我已經創建了按照上述步驟完全分離的樣品(來自步驟6模塊包含在項目中)。

由於某些相機應用程序錯誤(示例使用Camera和我的模擬器沒有配置它),它在模擬器中失敗了,但在Galaxy Nexus設備上工作。示例使用設備相機拍攝照片並將其上傳到您的Google雲端硬盤。

+1

你真棒!這種方式比我想象的更復雜......仍然有一件時髦的事情發生,我會把它放在OP – Andrea 2013-04-11 01:03:30