Android Studio với các dịch vụ của Google Play


95

Tôi đang cố gắng kiểm tra Dịch vụ của Google Play với Android Studio mới. Tôi có một dự án phụ thuộc vào google_play_services.jar. Nhưng khi tôi cố gắng xây dựng lại dự án, tôi gặp các lỗi sau:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Có vẻ như nó có hai tệp BuildConfig và cũng có hai lớp R. Làm cách nào để giải quyết vấn đề?

BIÊN TẬP:

Tôi đã nhận thấy rằng trình biên dịch biên dịch hai tệp R.java: tệp nằm trong thư mục dự án của tôi và tệp khác nằm trong thư mục% USERPROFILE% .AndroidStudioPreview Vì vậy, tôi đã cố gắng loại trừ thư mục "Xem trước" này trong cài đặt trình biên dịch và bây giờ nó đang hoạt động. Sự cố này chỉ xảy ra sau khi tôi bắt đầu sử dụng các lớp Dịch vụ của Google Play trong dự án của mình. Tôi sẽ đánh giá cao nếu ai đó có thể giải thích lý do đằng sau vấn đề này.


Bất kỳ ai cũng có thể giúp những gì mà biên dịch này 'com.google.android.gms: play-services: 6.5.87' thực hiện khi được thêm vào phần phụ thuộc trong android studio. Chúng ta cũng có thể thêm bình nhưng dòng trên làm như thế nào là chúng ta không thêm bình.
Android Killer

Câu trả lời:


243

Tất cả những câu trả lời đó đều sai, kể từ khi phát hành plugin gradle v0.4.2, việc thiết lập các dịch vụ google play trong android studio sẽ diễn ra ngay lập tức. Bạn không cần nhập bất kỳ jar nào hoặc thêm bất kỳ thư viện dự án nào cũng như thêm bất kỳ mô-đun mới nào trong android studio. Những gì bạn phải làm là thêm các phụ thuộc chính xác vào tệp build.gradle. Vui lòng xem các liên kết đó: Cập nhật plugin Gradle v0.4.2 , Hệ thống xây dựng mớimẫu này

Cách chính xác để làm như vậy như sau:

Trước hết, bạn phải khởi chạy trình quản lý sdk và tải xuống và cài đặt các tệp sau nằm trong "phần bổ sung": kho hỗ trợ Android , các dịch vụ của Google play , kho lưu trữ của Google .

Khởi động lại studio android và mở tệp gradle xây dựng. Bạn phải sửa đổi tệp build.gradle của mình để trông giống như sau trong phần phụ thuộc:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

Và cuối cùng đồng bộ hóa dự án của bạn (nút bên trái của trình quản lý AVD).

Kể từ phiên bản 6.5, bạn có thể bao gồm thư viện hoàn chỉnh (rất lớn) hoặc chỉ các mô-đun mà bạn cần (Tùy chọn tốt nhất). Tức là nếu bạn chỉ cần Google Maps và Analytics, bạn có thể thay thế ví dụ trước bằng ví dụ sau:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Bạn có thể tìm thấy danh sách phụ thuộc đầy đủ tại đây

Một số lưu ý bên lề:

  • Sử dụng phiên bản thư viện dịch vụ chơi mới nhất. Nếu đó là phiên bản cũ, android studio sẽ làm nổi bật nó. Kể từ hôm nay (ngày 5 tháng 2 là 6.5.87) nhưng bạn có thể kiểm tra phiên bản mới nhất tại Gradle Please
  • Sau bản cập nhật lớn của Android Studio, hãy dọn dẹp lại dự án của bạn bằng cách làm theo các hướng dẫn tiếp theo như được đề xuất trong phần nhận xét của @ user123321

    cd vào thư mục dự án của bạn
    ./gradlew clean
    ./gradlew build


này Estornino. tôi cũng đã thấy bản cập nhật này, nhưng tôi tự hỏi làm thế nào Android Studio (ít nhất là bản thân IDE) nhận các phần phụ thuộc? bạn có làm cho nó hoạt động chỉ với cài đặt Gradle không?
người chiến thắng n.

vâng nó đã làm việc cho tôi. IDE cũng có thể phân giải các tên mới. cảm ơn.
người chiến thắng n.

Xin lỗi vì hồi âm muộn. Khi bạn nhấn nút đồng bộ hóa, Ide sẽ tự động thêm các phần phụ thuộc mới. Đó là hệ thống xây dựng quy định hành vi lý tưởng và không khuyến khích thực hiện thay đổi đối với dự án theo phong cách ý tưởng "cũ" (ý tôi là thay đổi mô-đun và cấu hình dự án). Tôi rất vui vì nó có hiệu quả với bạn.
Imanol

5
Hãy chắc chắn rằng bạn ./gradlew sạch sau đó ./gradlew xây dựng trước khi android studio 2.x sẽ nhận được sự phụ thuộc. Nếu không, bạn có được một NoClassDef lỗi
user123321

2
Tính đến hôm nay, bản dựng mới nhất mà tôi nhận được là 5.2.08
chrisbjr

114
  1. Đi tới Tệp -> Cấu trúc Dự án
  2. Chọn 'Cài đặt dự án'
  3. Chọn Tab 'Phụ thuộc'
  4. Nhấp vào '+' và chọn '1.Phụ thuộc danh dự'
  5. Tìm kiếm: com.google.android.gms: play-services
  6. Chọn phiên bản mới nhất và nhấp vào 'OK'

Thì đấy! Không cần phải chiến đấu với Gradle :)


5
Điều này làm việc cho tôi và rất dễ dàng. Nó đã biết số phiên bản dịch vụ chơi mới nhất - bạn chỉ cần chọn nó từ danh sách và tệp gradle được sửa đổi cho bạn!
Nick Perkins

Tôi có thể sử dụng cùng một phương pháp để nhập BaseGameUtils cho bảng xếp hạng không?
eng.ahmed

Vâng, Ahmed. Bằng cách này, bạn có thể nhập bất kỳ thư viện Android nào.
Ivo Stoyanov

Giải pháp đơn giản, thanh lịch. Cảm ơn @IvoStoyanov nó sẽ tiết kiệm rất nhiều thời gian của những người mới bắt đầu như tôi.
Manikandan S

5

CHỈNH SỬA: Anh chàng này thực sự đã mang nó về nhà và có một hướng dẫn nhỏ hay ho http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

một lưu ý nhỏ: Tôi đã chơi xung quanh rất nhiều nên tôi cần phải làm gì gradlew cleanđể nó chạy thành công

Nếu bạn đã nhập dự án của mình hoặc đang làm việc từ ứng dụng Bản đồ mẫu nằm trong \ extras \ google \ google_play_services \ samples \ maps, hãy xem hướng dẫn này.

https://stackoverflow.com/a/16598478/2414698

Nếu bạn đang tạo một dự án mới từ đầu thì hãy lưu ý nhận xét của Xav trên cùng bài đăng đó. Anh ấy mô tả rằng Android Studio sử dụng một trình biên dịch khác và bạn phải sửa đổi tệp build.gradle theo cách thủ công. Tôi đã làm điều này với thành công. Tôi đã sao chép

  • google-play-services.jar
  • google-play-services.jar.properties

vào thư mục lib của tôi và thêm phần sau vào tệp build.gradle của tôi

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Ngoài ra, nếu đây là một dự án mới, hãy xem bài đăng này.

https://stackoverflow.com/a/16671865/2414698


7
Bài viết mà bạn liên kết đến hiện không được dùng nữa. Giải pháp này không được khuyến khích.
RevNoah

4

Hầu hết các câu trả lời này chỉ giải quyết các phụ thuộc thời gian biên dịch, nhưng bạn sẽ tìm thấy một loạt các ngoại lệ NoClassDef trong thời gian chạy. Đó là bởi vì bạn cần nhiều hơn google-play-services.jar. Nó tham chiếu đến các tài nguyên là một phần của dự án thư viện và những tài nguyên đó không được đưa vào chính xác nếu bạn chỉ có jar.

Điều tốt nhất đối với tôi là đầu tiên thiết lập dự án một cách chính xác trong eclipse. Có cấu trúc dự án của bạn để nó bao gồm cả ứng dụng của bạn và thư viện, như được mô tả tại đây: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Sau đó xuất dự án ứng dụng của bạn từ eclipse và nhập vào Android Studio như được mô tả tại đây: http://developer.android.com/sdk/installing/migrate.html . Đảm bảo xuất cả dự án ứng dụng của bạn và dự án thư viện dịch vụ google play. Khi nhập nó sẽ phát hiện dự án thư viện và nhập nó như một mô-đun. Tôi chỉ chấp nhận tất cả các giá trị mặc định trong quá trình nhập dự án.


2
Cảm ơn, nhưng tôi không muốn sử dụng nhật thực!
androidtester

2

Dịch vụ của Google Play Tích hợp trong Android studio.

Bước 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Bước 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Bước 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Bước 4:

Sync project file with grandle.
wait for few minute.

Bước 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Hãy bình luận nếu bạn cần giúp đỡ. Chúc bạn viết mã vui vẻ.


2

Không có giải pháp nào ở trên phù hợp với tôi. Không chắc nó dành riêng cho thiết lập của tôi hay bản phát hành mới.

Tôi đang sử dụng Android Studio Beta 0.8.9 và tôi không nhận được bất kỳ com.google.android.gms: play-service nào trong danh sách thư viện khi làm theo hướng dẫn sau:

Đi tới Tệp -> Cấu trúc dự án -> Chọn Cài đặt dự án -> Chọn Tab 'Phụ thuộc' Nhấp vào '+' -> 1.Phụ thuộc danh dự -> Chọn com.google.android.gms: play-services: +

Tôi đã làm điều này:

Trước hết, bạn phải khởi chạy trình quản lý sdk và tải xuống và cài đặt các tệp sau nằm trong "phần bổ sung": kho hỗ trợ Android, các dịch vụ của Google play, kho lưu trữ của Google.

Điều giải quyết được vấn đề là thêm từ Trình quản lý SDK, "Các dịch vụ của Google play cho Froyo", sau đó lặp lại bước đầu tiên.

Không hiểu lý do chính xác nhưng điều này đã hoạt động.

Tái bút: Tôi chỉ quan sát thấy rằng ngay cả bây giờ khi tôi tìm kiếm các dịch vụ trò chơi, nó vẫn không xuất hiện, nhưng khi tôi trực tiếp cuộn và xem qua danh sách thì nó ở ngay đó.


2

Theo dõi bài viết này -> http://developer.android.com/google/play-services/setup.html

Bạn nên chọn Sử dụng Android Studio

nhập mô tả hình ảnh ở đây

Tệp Gradle mẫu:

Lưu ý: Mở tệp build.gradle bên trong thư mục mô-đun ứng dụng của bạn.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Bạn có thể tìm phiên bản mới nhất của Dịch vụ Google Play tại đây: https://developer.android.com/google/play-services/index.html


1

Tôi đã làm việc này sau khi làm như sau:

  • Đặt google-play-services-lib làm mô-đun (lưu ý sự khác biệt giữa mô-đun và dự án), sau đó thêm google-play-services.jar vào thư mục "libs" mô hình của bạn.
  • Sau đó, thêm jar vào đường dẫn xây dựng của bạn thông qua việc tạo thư viện hoặc thêm jar vào thư viện khác. Tôi thường có một thư viện IDEA duy nhất mà tôi thêm tất cả các tệp /libs/*.jar của mình vào.
  • Thêm thư viện vào đường dẫn xây dựng mô-đun của bạn thông qua Cài đặt mô-đun (F4).
  • Thêm google-play-services-lib làm phụ thuộc mô-đun vào dự án của bạn.
  • Làm xong!

Lưu ý: Điều này cũng không cung cấp cho tôi ngoại lệ thời gian chạy, nó hoạt động.


Tôi nhận được các lỗi tương tự: R.java và BuildConfig.java được nhân đôi
androidtester

Bạn có mô-đun làm phụ thuộc biên dịch không?
Johan S

Đúng! Giải pháp duy nhất là một mà tôi đã đề cập trước đó (loại trừ thư mục Preview)
androidtester

0

Mở tệp build.gradle dự án của bạn và thêm dòng bên dưới vào mô-đun phụ thuộc.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Bên dưới sẽ thêm Google AnalyticsMaps nếu bạn không muốn tích hợp đầy đủ thư viện

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}

0

Trong trường hợp của tôi, google-play-services_lib được tích hợp dưới dạng mô-đun (Liên kết bên ngoài) cho Google map & GCM trong dự án của tôi.

Bây giờ, thời gian này yêu cầu triển khai API Tự động điền của Google Địa điểm nhưng vấn đề là mã mới và các lib của tôi đã cũ nên không tìm thấy một số lớp:

làm theo các bước sau ...

1> Cập nhật dịch vụ Google Play thành Trình quản lý SDK

2> chọn tệp .jar mới của dịch vụ google play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) thay thế bằng cũ

tôi đã thành công ... !!!


-3

Tôi đã sao chép các tệp play libs từ google-play-services_lib vào thư mục libs dự án của mình:

  • google-play-services.jar
  • google-play-services.jar.properties.

Sau đó, chọn chúng, nhấp chuột phải, "Thêm làm thư viện".


1
Cảm ơn người trả lời của bạn nhưng nó không hiệu quả với tôi - nó tương tự như một cái gì đó mà tôi đã thử trước đây.
androidtester

Lời khuyên này đi ngược lại với những thông tin khác mà tôi đã đọc ở những nơi khác. Câu trả lời được liên kết đến trong câu trả lời đầu tiên không được dùng nữa vì nó sử dụng phương pháp này.
RevNoah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.