nền tảng cordova thêm android không hoạt động trong khi liệt kê các mục tiêu Android


76

Tôi gặp sự cố khi muốn thêm nền tảng Android vào ứng dụng phoneGap của mình. Tôi nhận được thông báo này trong CLI của mình khi thực hiện lệnh cordova nền tảng thêm android:

Checking Android requirements... (Error: An error occurred while listing Android targets)

Tôi đã cố gắng thêm vị trí sdk android của mình trong biến đường dẫn.

Làm ơn giúp tôi ! : D

Tôi làm việc trên Windows 7 64 bit, tôi cài đặt Android API 17, 18 và 19 với Android SDK. Tôi đang sử dụng phiên bản 3.2 phoneGap.


Bạn đã cài đặt Ant và cấu hình nó đúng cách chưa?
Purus

Câu trả lời:


167

Để hoạt động, lệnh cordova này cần sử dụng một số chương trình nằm trong sdk/toolsthư mục của bạn . Bạn cũng cần phải cài đặt kiến apache .

Sau đó, bạn phải thêm các thư mục này vào PATHbiến hệ thống của mình :

Lý lịch:

  • giả sử bạn đã cài đặt SDK Android của mình vào c:\sdk\androidthư mục
  • bạn đã cài đặt bạn kiến Apache vào c:\tools\apache-antthư mục

Sau đó, bạn phải tạo hai biến hệ thống:

  1. ANDROID_HOMEvới c:\sdk\androidgiá trị
  2. ANT_HOMEvới c:\tools\apache-antgiá trị

Cuối cùng, bạn phải sửa đổi PATHbiến và thêm hai biến đó vào cuối PATHgiá trị ':

;%PATH%\tools;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

GHI CHÚ: đối với những người sử dụng Linux, hướng dẫn sẽ khác một chút.

Tài liệu khác có sẵn tại đây .


66
Gees, tôi không hiểu tại sao nhóm dự án mã nguồn mở lại khó bỏ chút công sức để có tài liệu tốt. Nó luôn tạo ra một khoảng cách lớn giữa một sản phẩm khá tốt và người dùng của nó, khiến người dùng phải dò dẫm và mất thời gian cho đến khi người có kinh nghiệm sáng tỏ.
Marshal

4
Tôi hiểu bạn. Tôi nghĩ rằng những năm qua, các dự án phần mềm mở đã giảm chất lượng. Đó có thể là mốt mới nhất: mỗi ngày, có 5 dự án được đánh dấu sao trên github và dường như mọi người đều tập trung để nhận dự án phổ biến cuối cùng. Tuy nhiên, trong trường hợp của chúng tôi (Cordova), tôi nghĩ đây là một vấn đề về quy hoạch. Họ phải nhanh chóng phát hành một số phiên bản mới để khắc phục một số vấn đề với Androïd Kit Kat. Tôi cho rằng đội bóng muốn ổn định phiên bản này trong một mục tiêu chính, và sau đó, họ có thể sẽ hoàn thành phần tài liệu ...
l.cotonea

Tôi đồng ý với @Marshal, đối với một lập trình viên tầm thường, điều này gần với khoa học tên lửa. Tôi thực sự không hiểu tại sao có khoảng trống trong tài liệu (như bản ghi điện thoại) mà những người bình thường gặp phải vấn đề lớn :(
Cammy

Tôi đang gặp một lỗi tương tự. tuy nhiên tất cả các biến của tôi đều được xác định, bạn có thể xem ở đây. stackoverflow.com/questions/23422961/…
Barış Akkurt

2
Tôi đã có thể làm việc này lần đầu tiên nếu tôi nhớ đóng và mở lại cửa sổ nhắc lệnh của mình. Lãng phí khoảng 15 phút trước khi tôi nhận ra.
0x6C77

42

Đối với những người được chọn, những người thích môi trường phát triển Linux

Yêu cầu

Trước hết, bạn sẽ cần một vài thứ để bắt đầu. Đó là: Android SDKApache Ant. Tất nhiên, bạn sẽ cần Java SDKcài đặt (JDK).

Để SDK Android hoạt động cho tất cả người dùng, bạn cần sửa đổi /etc/environmenttệp và sau đó khởi động lại PC của mình. Nhưng nếu bạn không muốn theo cách khó khăn đó - theo tôi, hãy nghĩ mình là người dùng PC duy nhất. Và sử dụng /home/YOUR_USERNAME/.bashrctệp để chỉnh sửa.

Hãy nhớ lại con đường nhà của bạn một lần để ngăn chặn các đường dài thêm. Thêm cái này vào /home/YOUR_USERNAME/.bashrc:

export HOME="/home/YOUR_USERNAME"

Sau đó, chúng tôi sẽ sử dụng $HOMEký hiệu khi chúng tôi muốn nói " /home/YOUR_USERNAME directory".

Thiết lập SDK Android

Tải xuống kho lưu trữ SDK Android và giải nén nó ở đâu đó. Giả sử, bạn có thư mục chính của bạn , $HOME/adt-bundle/.

Thêm những dòng này vào $HOME/.bashrc:

export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"

Thiết lập Ant

Cũng giống như với Android SDK, tải xuống bản lưu trữ và giải nén nó vào thư mục chính của bạn. Sau đó, thêm chúng vào .bashrc:

export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"

Tôi đã cài đặt một cái thông qua apt-getcái này nên điều này không ảnh hưởng đến cái của tôi .bashrc.

Áp dụng các thay đổi

Để làm cho những thay đổi này hoạt động, bạn nên làm việc trong một cửa sổ đầu cuối mới (được mở sau khi thay đổi) hoặc chạy source ~/.bashrcđể thực hiện các thay đổi có sẵn trong cửa sổ đầu cuối hiện tại.

Kết thúc

Cuối cùng, bạn sẽ có:

  1. Hai thư mục tại thư mục chính của bạn - antandroid-bundle
  2. Một vài dòng, được thêm vào .bashrc:

    export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
    export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
    export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
    
    export ANT_HOME="$HOME/ant"
    export PATH="$PATH:$ANT_HOME/bin"
    

2
Làm rõ: điều này sẽ chuẩn bị cho một hệ thống để không cần mod môi trường PATH cho kiến: sudo apt-get install ant ant-Contrib ant-option ant-
gcj

@ deinerson1 nhưng bạn có chắc, kho lưu trữ Debian / Ubuntu chứa đúng phiên bản Ant được yêu cầu không? ;)
shybovycha

1
Lệnh này hiển thị phiên bản trong repos ubuntu / debian để hỗ trợ xác thực khả năng tương thích (Phiên bản: 1.9.2-1 kể từ nhận xét này): apt-cache show ant
deinerson1 August

@ deinerson1 các phiên bản Ubuntu khác nhau sử dụng các bộ gói khác nhau. Vì vậy, ví dụ, Ubuntu 10.04 LTS sẽ không chứa phiên bản Ant mới nhất trong kho lưu trữ của nó. Tôi thống nhất quy trình này. À, có, và gcjkhông oracle-java7hoặc bất cứ điều gì. Đó là các trình biên dịch Java khác nhau;)
shybovycha

Tôi mến bạn. bạn tiết kiệm ngày của tôi
尤川豪

21

Chạy lệnh "android" từ thư mục adt \ sdk \ tools của bạn và cài đặt Công cụ và SDK mới nhất. Đồng thời đảm bảo rằng PATH của bạn có các biến phù hợp.

Đối với điều này, bạn sẽ cần phải cài đặt ANT, cài đặt JAVA JDK và Android SDK

JAVA_HOME (C: \ Program Files \ Java \ jdk)

ANT_HOME ({ant location} \ apache \ apache-ant)

ANDROID_HOME ({android sdk location} \ android-sdk)

Thêm những thứ này vào biến PATH của bạn như% ANT_HOME% / bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools;% JAVA_HOME% \ bin

Đóng và mở lại cmd của bạn và chạy lại lệnh của bạn.

Giống với Phát triển Android PhoneGap / Cordova


3
Giải pháp ngắn gọn cho nền tảng Windows. Tuyệt quá!
swdev

1
Câu trả lời này đã cho tôi gợi ý trong LINUX, vì tôi cũng có thể chạy androidlệnh để mở Trình quản lý SDK Android và cài đặt Andrid SDK Build-tools 19.0.2. Trước đó, tôi cũng đã cài đặt Android SDK từ trang web của họ và thêm export PATH=${PATH}:/home/YOUR_USER_HERE/adt-bundle/sdk/platform-tools:/home/YOUR_USER_HERE/adt-bundle/sdk/toolsvào ~/.bash_profile. Sau đó mọi thứ được cài đặt ok.
ziiweb

4

Tôi không chắc đây có phải là vấn đề của bạn hay không, nhưng tôi đã gặp phải các lỗi tương tự khi bộ nhớ cache của thư viện cordova bị ô nhiễm do có thứ gì đó bị hỏng. Để khắc phục, bạn chỉ cần xóa bộ nhớ cache của cordova và nó sẽ tự động tái tạo vào lần tiếp theo bạn sử dụng 'cordova'.

Trên OS X, thư mục này là ~ / .cordova. Trên Windows, tôi cho rằng đó vẫn là .cordova trong thư mục chính của người dùng.


4

Câu trả lời là "Tất cả những điều trên". Tuy nhiên, hãy thực hiện như đã đề cập với các biến môi trường:

C: \ Users {YOUR_NAME} .cordova \ lib \ android \ cordova \ 3.5.0 \ framework chỉnh sửa tệp project.properties và thay đổi target = android-19 thành target = android-20.

Có lẽ điều này cũng sẽ cần phải được thay đổi cho phiên bản tiếp theo của android sdk cho đến khi vấn đề nhỏ này được giải quyết.


3

Tôi đã gặp vấn đề tương tự mặc dù các biến đường dẫn đã được đặt chính xác theo hướng dẫn. Sau khi xem qua nhiều tệp, cuối cùng tôi đã giải quyết được. Đối với tôi (Windows 7 doanh nghiệp 64 bit) Tôi đã phải sửa đổi check_reqs.jscreate.js từ "C: \ Users \ .cordova \ lib \ android \ cordova \ 3.5.0 \ bin \ lib \" thư mục để bao gồm đường dẫn tuyệt đối cho android.bat. SDK Android của tôi trong "C: \ Android \ android-sdk".

Trong check_reqs.js tôi đã sửa đổi

child_process.exec('android list targets', function(err, stdout, stderr) {

đến

child_process.exec('C:\\Android\\android-sdk\\tools\\android.bat list targets', function(err, stdout, stderr) {

Trong create.js, tôi đã sửa đổi câu lệnh

return exec('android update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

đến

return exec('C:\\Android\\android-sdk\\tools\\android.bat update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

Cũng đừng quên đôi "\\" trong đường dẫn tuyệt đối


2

sau một thời gian dài đấu tranh, sau khi thực hiện tất cả các đề xuất trên một lần nữa với sự tuyệt vọng ngày càng tăng, tôi chỉ cần mở cmd của mình với tư cách quản trị viên. nó đã làm việc. Tôi đoán tôi đã quá quen với "sudo" trước khi tôi có máy tính này.


2

Đối với những người gặp phải sự cố này, tôi bổ sung thêm một số thứ có thể hữu ích, trong trường hợp của tôi, tất cả các biến đã được định cấu hình đúng cách và điều này vẫn không thể thêm nền tảng android và tôi đã vô hiệu hóa phần mềm và phần mềm chống vi-rút avast của mình! mọi thứ trôi chảy, những gì đang xảy ra là phần mềm chống vi-rút đang chặn việc tạo nền tảng.

Cũng quan trọng đối với tôi là khởi động lại máy tính. ;)

Trân trọng.


Điều tương tự cho Comodo ... [> <.]
Jeffrey Nicholson Carré

1

Tôi nhận thấy vấn đề với Cygwin / Windows 7. Vấn đề bắt nguồn từ các cách hơi khác nhau giữa Cygwin và MS-DOS shell xử lý tệp .bat.

Trong quá trình "thêm nền tảng", cordova gọi "android":

C:\Users\xxx\.cordova\lib\android\cordova\3.4.0\bin\lib\check_reqs.js

Nơi nó gọi là 'mục tiêu danh sách android' (trên dòng 73)

"android" phải giải quyết thành /xx/android-sdk/tools/android.bat hoặc xx: \ android-sdk \ tools \ android.bat. (Và trên thực tế thì có, tôi có thể chạy "android" trên trình bao lệnh MS-DOS - nhưng không phải trong trình bao Cygwin. Ở đó tôi cần thêm ".bat".)

"android" không có ".bat" không thành công trong trình bao Cygwin vì android.exe không tồn tại (chỉ có .bat mới có). Thay đổi dòng 73 để gọi 'mục tiêu danh sách android.bat' sẽ giải quyết vấn đề của bạn (hoặc đưa ra thông báo lỗi hợp lý).

Một công việc khác là chạy cordova trong MS-DOS shell thay vì Cygwin shell.


0

Chúng tôi có một danh sách các giải pháp ở đây, vì vậy tôi thêm một giải pháp của mình. Điều đó không rõ ràng đối với tôi cho đến khi tôi cố gắng. Bạn nên thêm% ANT_HOME% \ bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools vào biến USER PATH, không phải vào biến Hệ thống. Biến PATH hệ thống sẽ tự động nối biến USER PATH và dịch các biến về giá trị của nó. Hy vọng điều đó sẽ giúp ai đó. PS Hệ điều hành của tôi là Win 7x64


0

Sự cố này thường là do biến PATH chưa được đặt cho Android SDK.

export HOME="/home/yourname"
export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"

Tôi có cái này và vẫn bị lỗi tương tự. Tuy nhiên, tôi không có $ ANT_HOME, vì không có bin dir trên osx? $ mà ant / usr / local / bin / ant $ ls / usr / local / bin / ant / usr / local / bin / ant $ ant -v Apache Ant (TM) phiên bản 1.9.4 được biên dịch vào ngày 29 tháng 4 năm 2014 $ cordova - -version 4.0.0
mylord

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.