2013-05-16 39 views
40

Tôi đã gặp nhiều rắc rối trong Android Studio khi cố tạo ứng dụng bằng GoogleMap.Tôi làm cách nào để tạo ứng dụng Android trong Android Studio sử dụng Api v2 của Google Maps?

Tôi đã theo các hướng dẫn sau đây trước khi với (hầu như) không có vấn đề sử dụng Eclipse IDE như tôi:

https://developers.google.com/maps/documentation/android/start

Tôi chưa bao giờ sử dụng Android Studio trước và tôi đang gặp khó khăn với toàn bộ dự án/mô hình mô-đun.

tôi đã không thể thành công cấu hình dịch vụ Google Play SDK http://developer.android.com/google/play-services/setup.html

Đây là một trong những lỗi kỳ lạ tôi nhận được:

 
Gradle: 
FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':MyMapApp:compileDebug'. 
> Compilation failed; see the compiler error output for details. 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 
+1

bạn đang nhắm mục tiêu các API của Google như xây dựng mục tiêu của bạn? – nhaarman

+0

Tôi thiết lập Google Maps trong [demo project] này (https://github.com/johnjohndoe/TouchableMapDemo). – JJD

+0

Bạn có thể thấy câu trả lời cho một câu hỏi tương tự trong http://stackoverflow.com/questions/16759364/multi-project-setup-with-gradle-for-android/17657713#17657713. Tôi hy vọng cái này sẽ giúp bạn! – JavierSP1209

Trả lời

54

Cuối cùng tôi quản lý để chạy dự án GoogleMapsAPIv2 sử dụng Android Studio.

CHỈNH SỬA: Như đã đề cập trong Xavier, phương pháp này sẽ chỉ hoạt động đối với các dự án không dựa trên gradle. Và phần giao diện người dùng được sử dụng trong hướng dẫn này sẽ bị loại trừ khỏi AndroidStudio. Vì vậy, nếu bạn có dự án của riêng bạn sử dụng hệ thống xây dựng Gradle, bạn cần phải sửa đổi tệp cấu hình build.gradle theo cách thủ công vì giao diện người dùng Android Studio không ảnh hưởng đến nó.

EDIT2: Với bản phát hành AndroidStudio v0.1.1, phần giao diện người dùng phụ thuộc vào mô-đun đã bị loại bỏ, vì vậy bây giờ chúng tôi cần cập nhật phụ thuộc theo cách thủ công thông qua tệp build.gradle. UI cho việc thay đổi phụ thuộc gradle sẽ được phát hành trong phiên bản tiếp theo

EDIT3: Đối với những người vẫn cố gắng sử dụng phương pháp này - xin lưu ý rằng nó là lỗi thời và không có tác dụng nữa

Đây là những gì tôi đã làm:

1) Tôi đã tham gia maps dự án từ các Dịch vụ của Google Play và sao chép dự án đó vào thư mục riêng biệt. Đó sẽ là dự án MapsApiV2 của chúng tôi, chúng tôi sẽ cố gắng chạy. Trên máy Mac của tôi nó đã được đặt tại <sdk_location>/extras/google/google_play_services/samples tôi đặt nó vào ~/Work/stack/

2) sao chép google-play-services_lib thư mục dự án để cùng một vị trí (~/Work/stack), do đó thư mục làm việc của tôi trông như thế này. Dự án Btw, lib được đặt tại <sdk_location>/extras/google/google_play_services/libproject: enter image description here

3) Bây giờ, hãy mở Android Studio. Trên màn hình chào mừng, hãy nhấn Import Project và nhập dự án maps của chúng tôi từ ~/Work/stack/maps. Bây giờ chúng ta nhìn thấy rất nhiều lời phàn nàn về không rõ tham chiếu đến thư viện GMS:

enter image description here

4) Bây giờ chúng ta cần thêm Google Play Service như một thư viện tham khảo. Đi tới View -> Open Module Settings

5) Trên tab Modules, nhấp vào + và chọn Import Module và nhập GooglePlayServices lib của bạn.Tôi không thay đổi bất cứ điều gì trong trình thuật sĩ, vì vậy nhấp Next tất cả các cách để cuối cùng:

enter image description here

6) Bây giờ bạn cần phải tham khảo thư viện nhập khẩu này. Mở lại màn hình này (đi đến View -> Module Settings). Đảm bảo bạn đã chọn một dự án mapsDependency. Nhấp vào + để thêm phụ thuộc và chọn Library. Chọn thư viện của bạn nhập khẩu có:

enter image description here

7) Bây giờ chúng ta có thể thấy rằng nó không được phàn nàn về GMS thư viện, nhưng vẫn phàn nàn về hỗ trợ thư viện:

enter image description here

8) Hãy sửa chữa nó. Tôi có thư viện hỗ trợ của tôi tại số <sdk location>/extras/android/support/v13/android-support-v13.jar. Vì vậy, hãy thử thêm nó vào không gian làm việc của chúng tôi. Chuyển đến View -> Open Module Settings và chọn tab Libraries. Chọn + ->Java và chọn hỗ trợ thư viện:

enter image description here

9) Bây giờ nó sẽ yêu cầu bạn mà dự án để thêm lib này để, do đó hãy chắc chắn rằng bạn đã chọn dự án maps của bạn:

enter image description here

10) Tại thời điểm này, mã nên biên dịch các vấn đề. Chỉ cần đảm bảo bạn đang nhắm mục tiêu phiên bản SDK phù hợp trong Tệp kê khai.

Have fun

+2

Điều này làm việc tuyệt vời! Cảm ơn rất nhiều. Ảnh chụp màn hình tuyệt vời quá! – whoabackoff

+3

Đã bỏ phiếu cho câu trả lời. Nhưng tại sao mọi người lại sử dụng chủ đề tối? Yuk! Điều đó làm tôi đau mắt! –

+0

Tôi đang nhận 'Gradle: package com.google.android.gms.maps không tồn tại' vv có ai biết cách sửa lỗi này không? tôi không muốn mở một câu hỏi mới chỉ vì điều này. – EsseTi

1

Tôi đã có một vấn đề tương tự, nhưng nó chỉ là rằng nó không thể tìm thấy gói com.google.android.gms.maps (nó vẫn tiếp tục nói rằng nó không tồn tại). Đây là sau khi tôi nhập mọi thứ (dường như) đúng cách bằng cách làm theo hướng dẫn di chuyển trên tài liệu của chính Google: http://developer.android.com/sdk/installing/migrate.html

Dù sao, sau khi nhập mọi thứ, tôi vẫn gặp sự cố và không chắc chắn cách thiết lập đường dẫn xây dựng (hoặc không tương đương với nhật thực).

Tôi chỉ phải làm theo một nửa hướng dẫn của bạn bên dưới, xóa thư viện google-play-services đã được liệt kê trong cửa sổ cài đặt mô-đun, sau đó thêm lại.

Tôi hy vọng điều này hữu ích cho người khác.

1

Tôi cũng gặp sự cố tương tự, tôi đã giải quyết nhập google_play_services.jar như Thư viện thay vì dự án dịch vụ google play Giống như Mô-đun.

13

Tôi đã làm theo các hướng dẫn tương tự trừ khi tôi đang tạo một dự án mới. Theo cấu trúc dự án, tôi đã loại bỏ khía cạnh Android-Gradle và có thể xây dựng thành công. Tùy chọn người ta có thể cập nhật các tập tin xây dựng gradle và thêm các khía cạnh Android-Gradle vào thư viện dịch vụ chơi.

LƯU Ý: Tôi đã thay đổi tên của thư mục Dịch vụ của Google Play.

build.gradle cho thư viện Dịch vụ của Google Play.

apply plugin: 'android-library' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 

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

android { 
    compileSdkVersion 17 
    buildToolsVersion '17.0.0' 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aild.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 
} 

build.gradle cho ứng dụng thử nghiệm.

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android' 

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

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 16 
    } 
} 
+2

Đây là câu trả lời REAL! Chỉ cần một chỉnh sửa: biên dịch các tệp ('../ lib-google-play-services/libs/google-play-services.jar ') là không cần thiết ;-) đã được thêm gián tiếp thông qua sự phụ thuộc của dự án. –

+2

Cũng như các thiết lập tốt. Cần phải cập nhật bản cập nhật với câu lệnh include cho dự án thư viện. –

3

Dưới đây là một cấu hình cho dự án tôi đưa ra là sử dụng Google Maps API V2, trong Android Studio 0.2, với gradle 0.5.+. module Cũng khác như ActiobarSherlock, và một tùy chỉnh NumberPicker được sử dụng, và tôi chỉ cần để chúng trong trường hợp ai đó cần họ.

cấu trúc dự án:

enter image description here

1) TOP mục settings.gradle:

include ':SuperModule', ':libraries:actionbarsherlock', ':libraries:numberPicker' 

2) TOP mục build.gradle

task assemble {} 

(một số bạn có thể phải đối mặt với nhiệm vụ lắp ráp không tìm thấy. thats tại sao bạn đặt dòng này!)

3) SuperModule build.gradle Thông báo

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile 'com.google.android.gms:play-services:3.1.36' 
    compile 'com.android.support:gridlayout-v7:13.0.0' 
    compile project(':libraries:actionbarsherlock') 
    compile project(':libraries:numberPicker') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 16 
    } 
} 

sự phụ thuộc ở đây. ActiobarSherlock (ABS) và NumberPicker của nó, được sử dụng làm Thư viện android. Tôi cũng sử dụng Dịch vụ Play (đó là lý do tại sao sdk tối thiểu phải> = 8) và lib bố cục (cho phần tử không gian) Thư viện hỗ trợ KHÔNG được bao gồm ở đây, kể từ thư viện ABS!

Actionbar Sherlock build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android-library' 

dependencies { 
    compile 'com.android.support:support-v4:13.0.0' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 
} 

NumberPicker build.gradle isnt yêu cầu vì nó có cùng một logic với những người khác ..

9

Tôi đã thử và thất bại nhiều một hướng dẫn về vấn đề này , nhưng cuối cùng tìm thấy một giải pháp đơn giản dường như hoạt động với Android Studio và gradle

Tôi vừa cài đặt Android Studio 0.2.3 trên máy Mac của mình và đây là các bước thực hiện tôi xem một đoạn bản đồ trên mẫu dự án thế giới hello mới:

1) Nhấp vào nút Trình quản lý SDK trong thanh công cụ trong Android Studio.

2) Trong phần 'Tiện ích bổ sung' định vị 'Dịch vụ Google Play' và tải xuống.

3) trong bản dựng của bạn.tập tin gradle trong thư mục src của bạn, thêm dòng này vào phụ thuộc:

compile 'com.google.android.gms:play-services:3.1.36' 

4) trật tự và cài đặt API-key bạn làm theo hướng dẫn này: https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key

5) thêm đoạn để xml bố trí của bạn:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

6) bây giờ bạn có thể chạy dự án trên thiết bị của mình.

+0

Đây là phương pháp được khuyến nghị cho phiên bản mới nhất (0.2.6) của Android Studio. – Daniel

+1

Hãy nhớ rằng đoạn phải là 'com.google.android.gms.maps.SupportMapFragment' nếu bạn hỗ trợ các phiên bản cũ hơn. – JJD

+0

Điều này làm việc cho tôi với AS 0.3.1 mặc dù tôi đã phải thoát và khởi động lại trước khi các APK được tạo sẽ chạy. –

2

Tôi đã viết một bài viết và thực hiện việc tạo ứng dụng bản đồ bằng cách sử dụng cả giao diện Vị trí và bản đồ google api. Điều này sẽ đi qua nhiều idiocyncracies tôi chạy vào trong khi cố gắng để có được một ứng dụng bản đồ và chạy bao gồm, trong đó SDK để bao gồm, những thư viện để nhập khẩu, những gì để thiết lập trong bản kê android và làm thế nào để thay đổi tập tin gradle. Hope this helps

http://www.todroid.com/how-to-create-a-google-map-application-using-android-studio/

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