2013-04-07 24 views
6

Tôi đang theo dõi Google Drive Quickstart on Android instructions và làm cho nó hoạt động trong Eclipse/Kepler. (Juno chỉ đơn giản là tinh ranh.) Tuy nhiên, tôi quen thuộc hơn với IntelliJ, vì vậy tôi đang cố gắng tìm ra cách cài đặt các API này theo cách tương ứng.Mã mẫu Google Play, API Drive trong IntelliJ

I nghĩ Tôi đang bị vấp vào phần API Drive. Plugin Eclipse cài đặt Drive theo một số cách hoặc địa điểm đặc biệt. Tôi đã thêm Google-api-services-drive-v2-rev63-1.14.1-beta.jar làm thư viện, giống như các thư viện khác (Google-play-services và api_java_client). Nhưng khi tôi chạy ứng dụng, nó trở lại với

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

Và tôi cũng đã nhận được NoClassDefFoundError phải làm với Drive $ Builder.

Trong IntelliJ phạm vi .jar được đặt thành "Biên dịch" ngoại trừ các thư viện api_java_client được đặt thành "Đã cung cấp". Không ai trong số họ có "xuất khẩu" kiểm tra.

Chỉnh sửa: thêm mô-đun & phụ thuộc. Bây giờ tôi có một lỗi khác nhau:

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 là

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

tôi có thể tìm thấy những lớp nó yêu cầu ....

Chỉnh sửa 2, sau khi thêm thư viện theo hướng dẫn của CrazyCoder: Nó biên dịch, nó chạy, nhưng tôi nhận được lỗi sau. Tôi chắc chắn tôi đã bỏ lỡ làm điều gì đó hoàn toàn đúng, tôi sẽ thử nó một lần nữa trong một phút nhưng trong khi chờ đợi các lỗi là:

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) 

(Hy vọng chỉnh sửa cuối cùng): Vâng, tôi đã bỏ lỡ điều gì đó và con thú đang làm việc! Cảm ơn bạn rất nhiều!!
Bây giờ tôi có thể sử dụng IntelliJ một lần nữa để làm việc trên dự án "thực" của tôi ... sooooo tốt hơn nhiều :)

+0

Bạn phải nhập 'ANDROID_SDK \ extras \ google \ google_play_services \ libproject \ google-play-services_lib' làm mô-đun mới trong IDEA, sau đó đặt mô-đun chính của bạn thành [phụ thuộc vào nó] (http: //www.jetbrains .com/idea/webhelp/configuring-module-dependencies-and-libraries.html). ** Xuất ** hộp kiểm phải được kích hoạt cho các thư viện lọ bên trong mô-đun thư viện này. – CrazyCoder

+0

Cảm ơn bạn đã trả lời @CrazyCoder. Bây giờ tôi có một lỗi khác mà tôi sẽ thêm vào OP. – Andrea

+0

Dường như một số lọ từ https://code.google.com/p/google-api-java-client/ bị thiếu trong các phụ thuộc của mô-đun. – CrazyCoder

Trả lời

6

Tôi đã đi trước và tạo dự án IntelliJ IDEA từ đầu, dành khoảng 15 phút, hoạt động tốt.

  1. Tải xuống Drive API v2 library and dependencies.

  2. Mở gói ở đâu đó, mở readme.html, dành một vài phút để đọc sách để hiểu những cái bình cần thiết.

  3. Tạo dự án ứng dụng Android mới trong IDEA bằng trình hướng dẫn có gói com.example.drivequickstartMainActivity. Sử dụng API Android 4.2.2 Google API làm Nền tảng.

  4. Sao chép sau lọ từ thư viện API Drive tải về vào thư mục dự án libs (bạn nên đã học được mà lọ sử dụng từ bước 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 từ những lọ. Nó có thể được thực hiện bằng cách chọn các lọ trong khung nhìn Project, nhấn chuột phải, Thêm vào thư viện ..., thêm thư viện này vào các phụ thuộc của module chính của bạn.

  6. File | Import Module, duyệt đến ANDROID_SDK\extras\google\google_play_services\libproject\google-play-services_‌​lib, từ các nguồn hiện có.

  7. Thêm google-play-services.jar đến sự phụ thuộc của các module nhập khẩu, kích hoạt hộp kiểmxuất khẩu, cần tìm like this.

  8. Thêm mô-đun được tạo ở bước 6 vào dependencies of your main application module.

  9. Sao chép MainActivity mã mẫu từ Quick Start, bước 4 vào tệp MainActivity.java thay thế mã cũ, chỉnh sửa AndroidManifest.xml cũng theo hướng dẫn.

  10. Xây dựng, chạy trong trình mô phỏng hoặc trên thiết bị để kiểm tra (đừng quên các bước 1-2 từ Quick Start).


Hoặc bạn có thể chỉ download and use mẫu hoàn toàn bị cô lập mà tôi đã tạo ra theo các bước trên (mô-đun từ bước 6 được bao gồm trong dự án).

Nó không thành công đối với tôi trong trình mô phỏng vì một số lỗi ứng dụng Camera (mẫu sử dụng Máy ảnh và trình giả lập của tôi không có cấu hình), nhưng đã làm việc trên thiết bị Galaxy Nexus. Mẫu sẽ chụp ảnh bằng camera của thiết bị và tải ảnh lên Google Drive của bạn.

+1

Bạn là FANTASTIC! Đây là cách phức tạp hơn tôi từng tưởng tượng ... vẫn còn một điều thú vị đang diễn ra, tôi sẽ đặt nó trong OP – Andrea

Các vấn đề liên quan