2012-07-10 29 views
10

Tôi đang làm việc trên một dự án ứng dụng Android và nó là một dự án Maven. khi tôi cố gắng chạy dưới dạng "cài đặt maven", đây là những gì tôi nhận được:plugin android maven không nhận biến ANDVID_HOME env trong Eclipse

"Không thực thi được mục tiêu com.jayway.maven.plugins.android.generation2: android-maven-plugin: 3.1.1: generate- nguồn (mặc định tạo nguồn) trên dự án android-client: Không tìm thấy đường dẫn SDK Android nào.Bạn có thể định cấu hình nó trong phần cấu hình plugin trong tệp pom bằng cách sử dụng ... hoặc ... hoặc trên dòng lệnh bằng cách sử dụng - Dandroid.sdk.path = ... hoặc bằng cách đặt biến môi trường ANDROID_HOME -> [Help 1] "

nếu tôi hardcode đường dẫn android_home vào pom.xml, nó hoạt động tốt nhưng chúng tôi sử dụng git và mọi người có thể có các đường dẫn khác nhau cho android_home.why không android-maven-plugin có được biến env trong nhật thực?

biến android_home env nằm trong PATH của tôi. tôi đã viết $ {env.ANDROID_HOME} trong tệp pom.xml của mình nhưng nó vẫn không hoạt động.

lạ, nếu tôi sử dụng thiết bị đầu cuối (mvn install) để chạy như cài đặt maven, nó hoạt động!

thực sự đây là vấn đề khá tùy chọn đối với tôi nhưng tôi vẫn muốn biết tại sao plugin này không hoạt động trong Eclipse.

+0

Bạn đang sử dụng M2E-android? –

+0

Tôi đang đối mặt với cùng một vấn đề trong ubantu, bạn có thể sửa vấn đề này không .... thêm thông tin về vấn đề của tôi http://stackoverflow.com/questions/12532510/jenkins-maven-android-when-running-throwing -e-error-android-sdk-linux-platfor – Sam

Trả lời

4

Bạn cần tạo biến hệ thống cho ANDROID_HOME, không đặt biến trong PATH của bạn.

+7

tôi đã "xuất ANDROID_HOME = đường dẫn của sdk" và thêm nó vào PATH. tôi có nên làm gì khác không? cảm ơn về câu trả lời. –

+0

cách thêm nó vào PATH sau khi xuất, có phương pháp nào khác để thêm nó hay không. – skygeek

0

Bạn cần đặt đường dẫn vị trí SDK Công cụ phát triển Android trong Eclipse: nhấp vào Cửa sổ -> Tùy chọn và chọn Android. Vị trí SDK có thể được đặt trong tùy chọn Android.

+0

Tôi đang sử dụng vị trí m2e android và sdk được đặt theo preferences.but cảm ơn câu trả lời và plugin của bạn. –

0

Tạo tệp có tên local.properties trong thư mục gốc của dự án của bạn.

Với nội dung;

sdk.dir=c:\\path\\to\\android-sdk 
+0

Điều này không hiệu quả đối với tôi. – Isuru

5

Đảm bảo cài đặt Android SDK của bạn có chứa các thư viện cho các phiên bản API cùng bạn đã cấu hình trên pom.xml của bạn.

Ví dụ, nếu XML cấu hình của bạn trông giống như:

<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    ... 
    <configuration> 
     <sdk> 
      <path>${env.ANDROID_HOME}</path> 
      <platform>8</platform> 
     </sdk> 
     ... 
    </configuration> 
</plugin> 

thì bạn nên kiểm tra với Android SDK Manager (hoặc kiểm tra trực tiếp trên hệ thống tập tin của bạn: $ ANDROID_HOME/nền tảng) mà bạn có SDK API 8 được cài đặt. Tất nhiên bạn cũng có thể thay đổi pom.xml của bạn để phù hợp với thư viện được cài đặt.

3

Đặt biến ANDROID_HOME trong .bashrc của bạn hoặc bất kỳ thứ gì sẽ hoạt động, nhưng hãy nhớ xuất biến đó để biến có sẵn cho các quy trình con. Đặt ANDROID_HOME với các phương pháp khác được đề xuất ở đây sẽ giúp bạn vượt qua một số lỗi ban đầu, nhưng không có ANDROID_HOME xuất bản dựng của bạn có thể sẽ bị lỗi tại một số điểm.

1

Một cách khác là đặt biến môi trường thành cấu hình chạy cho tệp pom.xml.

Đi tới trình đơn Chạy cấu hình, chọn Chạy cấu hình được sử dụng cho dự án của bạn.xml và chọn Môi trường Tab và chọn "New", sau đó chèn:

  • ANDROID_HOME vào tên Dòng
  • đường dẫn đến sdk của bạn vào trường giá trị

Nó hoạt động, và trong đó cách Biến được thiết lập chỉ khi bạn khởi động cấu hình maven cho projec đã chọn, và bạn cũng có thể thiết lập đường dẫn khác nhau cho các dự án khác nhau, và bạn không cần phải thay đổi .bashrc của bạn. Nó cũng hoạt động trong các cửa sổ.

5

Nếu bạn đang sử dụng Linux, xuất khẩu ANDROID_HOME trong .bashrc có thể không hoạt động.

export ANDROID_HOME=/home/toro/etc/android-sdk-linux 

Đối với tôi nó chỉ hoạt động khi tôi xuất ANDROID_HOME trong file /etc/environment như thế này:

ANDROID_HOME=/home/toro/etc/android-sdk-linux 

Bạn phải khởi động lại máy tính để có được nó hoạt động.

Bạn chỉ cần đăng xuất và đăng nhập lại để biến môi trường được áp dụng trên toàn hệ thống. Tùy chọn, bạn có thể chỉ cần nguồn nó tại địa phương để kiểm tra nó ra trước khi bạn làm điều đó: $source /etc/environment

+0

Nói chung không đặt envs như thế này (tức là bạn muốn sử dụng từ các ứng dụng máy tính để bàn) trong .bashrc - đó là lý do tại sao nó không hoạt động cho bạn. Ví dụ, trong Debian, tôi cuối cùng đã đóng gói nó để tìm nguồn cung cấp tệp .bash_env cho các hệ thống ENV rộng từ .xsessionrc - đây là nguồn * một lần * khi đăng nhập và tất cả các hàng xuất khẩu được thừa kế bởi các thiết bị đầu cuối khác. Nếu bạn muốn các giá trị này cũng có sẵn trong các shell đăng nhập (ví dụ: ssh'ing in), bạn sẽ nguồn giống nhau .bash_env từ .bash_profile của bạn (không có nguồn gốc khi đăng nhập và không ảnh hưởng đến các ENV của máy tính để bàn). – RichieHH

+0

không cần đăng xuất trong linux Env, chỉ cần nguồn .bash_profile. trong MAC: nguồn .profile. – issamux

3

trên dòng lệnh của bạn, hãy chạy:

mvn clean install -- Dandroid.sdk.path="/Applications/Android Studio.app/sdk/"

không ai trong số các phương pháp khác thực sự làm việc. (Thiết ANDROID_HOME không làm gì cả)

1

Từ các tài liệu

Bạn có thể cấu hình nó trong phần android-maven-plugin cấu hình trong pom.xml tập tin sử dụng <sdk><path>...</path></sdk> hay <properties><android.sdk.path>...</android.sdk.path></properties> hoặc trên dòng lệnh sử dụng -Dandroid.sdk.path=... hoặc bởi môi trường thiết biến số ANDROID_HOME.

Giải pháp 1

tôi đã xác định một biến hệ điều hành Android SDK gọi ANDROID_SDK (thay vì ANDROID_HOME) và tham chiếu nó trong pom.xml của tôi theo cách này:

<groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <version>...</version> 
    <packaging>apk</packaging> 
    <name>...</name> 
    <description>...</description> 

    <properties> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    ... 
    </properties> 

Giải pháp 2

Thay vào đó bạn cũng có thể cấu hình nó trong phần android-maven-plugin:

<plugin> 
<extensions>true</extensions> 
<groupId>com.jayway.maven.plugins.android.generation2</groupId> 
<artifactId>android-maven-plugin</artifactId> 
<version>${android-maven-plugin.version}</version> 
<configuration> 
    <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
    <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
    <resourceDirectory>${project.basedir}/res</resourceDirectory> 
    <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
    <sdk> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    <platform>16</platform> 
    </sdk> 
    <undeployBeforeDeploy>true</undeployBeforeDeploy> 
</configuration> 
</plugin> 

Giải pháp 3

Là một lựa chọn thứ ba bạn có thể đặt SDK từ dòng lệnh thông qua một cuộc tranh cãi để Maven:

mvn clean install -Dandroid.sdk.path="C:\\Program Files (x86)\\Android\\android-sdk"

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