Кордова платформа add android не працює під час перерахування цілей Android


76

У мене виникає проблема, коли я хочу додати платформу android до свого додатку phoneGap. Я отримав це повідомлення в своєму CLI, коли я виконую команду cordova platform add android:

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

Я вже намагаюся додати своє розташування android sdk до змінної шляху.

Будь ласка, допоможи мені ! : D

Я працюю на 64-бітній системі Windows 7, я встановлюю API Android 17, 18 і 19 за допомогою Android SDK. Я на версії 3.2 phoneGap.


Ви встановили Ant і правильно його налаштували?
Пурус,

Відповіді:


167

Для роботи цій команді cordova потрібно використовувати деякі програми, розташовані у вашому sdk/toolsкаталозі. Вам також потрібно встановити apache ant .

Потім ви повинні додати ці каталоги у свою PATHсистемну змінну:

Передумови:

  • припустимо, ви встановили ваш Android SDK до c:\sdk\androidкаталогу
  • Ви встановили свого Apache Ant до c:\tools\apache-antкаталогу

Тоді ви повинні створити дві системні змінні:

  1. ANDROID_HOMEзі c:\sdk\androidзначенням
  2. ANT_HOMEзі c:\tools\apache-antзначенням

Нарешті, ви повинні змінити PATHзмінну і додати ці дві в кінець PATHзначення ':

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

ПРИМІТКА: для тих, хто використовує Linux, інструкція дещо відрізняється.

Більше документації доступно тут .


66
Гіс, я не розумію, чому команді проектів з відкритим кодом так важко докласти зусиль для отримання якісної документації. Це завжди створює великий розрив між досить хорошим продуктом та його користувачами, залишаючи користувачів метушитися і витрачати час, поки досвідчене не проллє світло.
Маршал

4
Я вас розумію. Я думаю, що за останні роки відкриті програмні проекти втратили якість. Це, можливо, остання примха: щодня під Github існує 5 зіркових проектів, і всі, схоже, намагаються взяти останній популярний проект. Однак у нашому випадку (Кордова), я думаю, це проблема планування. Вони повинні швидко випустити деякі нові версії, щоб вирішити проблему з Androïd Kit Kat. Я припускаю, що команда хоче стабілізувати цю версію в першочерговій меті, а після цього, ймовірно, закінчить частину документації ...
l.cotonea

Я згоден з @Marshal, для посереднього програміста це близько до ракетної науки. Мені справді незрозуміло, чому в документації є прогалини (наприклад, фонегапи), з якими у звичайних людей виникають великі проблеми :(
Кеммі

Я отримую ту ж помилку. проте всі мої змінні визначені, ви можете побачити тут. stackoverflow.com/questions/23422961 / ...
Барис Akkurt

2
Я б працював із цим вперше, якби пам’ятав закрити та знову відкрити вікно командного рядка. Змарновані приблизно 15 хвилин, перш ніж я зрозумів.
0x6C77

42

Для тих, хто віддав перевагу середовищу розробки Linux

Вимоги

Перш за все, для початку вам знадобиться кілька речей. Це: Android SDKі Apache Ant. Звичайно, вам знадобиться встановлений Java SDK(JDK).

Щоб Android SDK працював для всіх користувачів, вам потрібно змінити /etc/environmentфайл, а потім перезавантажити ПК. Але якщо ви не хочете цього важкого шляху - йдіть за мною, думайте про себе як про єдиного користувача ПК. І використовуйте /home/YOUR_USERNAME/.bashrcфайл для редагування.

Давайте згадаємо ваш домашній шлях один раз, щоб не допустити подальших довгих черг. Додайте це до свого /home/YOUR_USERNAME/.bashrc:

export HOME="/home/YOUR_USERNAME"

Потім ми будемо використовувати $HOMEпозначення, коли хочемо сказати " /home/YOUR_USERNAME directory".

Налаштування Android SDK

Завантажте архів Android SDK і десь розпакуйте його. Скажімо, ваш домашній каталог $HOME/adt-bundle/.

Додайте ці рядки до свого $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"

Налаштування Ant

Як і у випадку з Android SDK, завантажте архів та розпакуйте його у свій домашній каталог. Потім додайте їх до свого .bashrc:

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

Я встановив один через, apt-getтак що це не вплинуло на мій .bashrc.

Застосування змін

Щоб ці зміни працювали, вам слід або працювати в новому вікні терміналу (відкритому після змін), або запустити, source ~/.bashrcщоб зробити зміни доступними у поточному вікні терміналу.

Підведенню

В кінці ви отримаєте:

  1. Два каталоги у вашому домашньому каталозі - antіandroid-bundle
  2. Кілька рядків, доданих до вашого .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
Пояснення: це повинно підготувати систему до того, що не потрібно модів середовища PATH для ant: sudo apt-get install ant ant-contrib ant-optional ant-gcj
deinerson1

@ deinerson1, але ви впевнені, що сховища Debian / Ubuntu містять правильну або необхідну версію Ant? ;)
шибовича

1
Ця команда відображає версію в репозиторіях ubuntu / debian, щоб допомогти перевірити сумісність (Версія: 1.9.2-1 станом на цей коментар): apt-cache show ant
deinerson1

@ deinerson1 різні версії Ubuntu використовують різні набори пакетів. Так, наприклад, Ubuntu 10.04 LTS не буде містити останню версію Ant у своїх репозиторіях. Я уніфікував цей процес. Ах, так, і gcjне є oracle-java7чи що завгодно. Це різні компілятори Java;)
шибовича

Я тебе люблю. ти врятуєш мій день
尤川豪

21

Запустіть команду "android" з папки adt \ sdk \ tools та встановіть найновіші Інструменти та SDK. Також переконайтеся, що ваш PATH має правильні змінні.

Для цього вам знадобиться встановити ANT, встановити JAVA JDK та Android SDK

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

ANT_HOME ({мурашине місце} \ apache \ apache-ant)

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

Додайте їх до своєї змінної PATH, наприклад% ANT_HOME% / bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools;% JAVA_HOME% \ bin

Закрийте та знову відкрийте ваш cmd і запустіть свою команду знову.

Подібно до PhoneGap / Cordova Android Розробка


3
Стисле рішення для платформи Windows. Чудово!
swdev

1
Ця відповідь дала мені підказку в LINUX, оскільки я також можу запустити androidкоманду, щоб відкрити Android SDK Manager і встановити Andrid SDK Build-tools 19.0.2. До цього я також встановив Android SDK з їхнього сайту та додав export PATH=${PATH}:/home/YOUR_USER_HERE/adt-bundle/sdk/platform-tools:/home/YOUR_USER_HERE/adt-bundle/sdk/toolsдо ~/.bash_profile. Після цього все встановлюється нормально.
ziiweb

4

Я не впевнений, що це ваша проблема, але я стикався з подібними помилками, коли кеш бібліотеки cordova забруднюється чимось пошкодженим. Щоб це виправити, вам просто потрібно видалити кеш-пам’ять кордови, і він буде автоматично заповнений наступного разу, коли ви використовуватимете „кордова”.

В OS X цей каталог ~ / .cordova. У Windows я вважаю, що це - .cordova у домашньому каталозі ваших користувачів все ще.


4

Відповідь - "Усе вищезазначене". Зробіть, як було згадано зі змінними середовища, проте зробіть і це:

C: \ Users {YOUR_NAME} .cordova \ lib \ android \ cordova \ 3.5.0 \ framework відредагуйте файл project.properties і змініть target = android-19 на target = android-20.

Імовірно, це потрібно буде змінити для наступної версії android sdk, а поки ця маленька проблема не буде вирішена.


3

У мене була та сама проблема, хоча змінні шляху були встановлені точно відповідно до інструкцій. Після перегляду декількох файлів я нарешті вирішив. Для мене (64-розрядна версія Windows 7) мені довелося змінити check_reqs.js та create.js з папки "C: \ Users \ .cordova \ lib \ android \ cordova \ 3.5.0 \ bin \ lib \", щоб включити абсолютний шлях для android.bat. Мій андроїд SDK знаходиться в розділі "C: \ Android \ android-sdk".

У check_reqs.js я змінив

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

до

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

У create.js я змінив оператор

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

до

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

Також не забувайте про подвійні "\\" в абсолютному шляху


2

після тривалої боротьби, зробивши всі вищезазначені пропозиції більше одного разу із зростаючим відчаєм, я просто відкрив свій cmd як адміністратор. це спрацювало. Я думаю, що я просто звик до "судо", перш ніж я отримав цей комп'ютер.


2

Для тих, хто стикався з цією проблемою, я додаю щось додаткове, що може бути корисним, у моєму випадку всі змінні були належним чином налаштовані, і це все ще не могло додати платформу Android, і я відключив свій антивірус avast та puff! все текло гладко, те, що відбувалося, було те, що антивірус блокував створення платформи.

Для мене також важливим було перезавантаження ПК. ;)

З повагою.


Те саме для Комодо ... [>. <]
Джеффрі Ніколсон Карре

1

Я помітив проблему з Cygwin / Windows 7. Проблема пов'язана з дещо різними способами використання оболонок Cygwin та MS-DOS до файлів .bat.

Під час "додавання платформи" Кордова викликає "android":

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

Де він називає "цілі списку Android" (у рядку 73)

"android" має перейти до /xx/android-sdk/tools/android.bat або xx: \ android-sdk \ tools \ android.bat. (І насправді це так, я можу запустити "android" на командній оболонці MS-DOS - але не в оболонці Cygwin. Там мені потрібно додати ".bat".)

"android" без ".bat" не працює в оболонці Cygwin, оскільки android.exe не існує (існує лише .bat). Зміна рядка 73 для виклику "цілей списку android.bat" вирішить вашу проблему (або дасть розумне повідомлення про помилку).

Ще одне робоче рішення - запустити кордову в оболонці MS-DOS замість оболонки Cygwin.


0

У нас тут є список рішень, тому я додаю своє. Для мене це було незрозуміло, поки я просто не спробую. Вам слід додати% ANT_HOME% \ bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools до змінної USER PATH, а не до системної. Системна змінна PATH автоматично об’єднає змінну USER PATH та переведе змінні у її значення. Сподіваюся, це комусь допоможе. PS Моя ОС Win 7x64


0

Ця проблема зазвичай є причиною того, що для Android SDK не встановлено змінну PATH.

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"

У мене ця і все та ж помилка. У мене немає $ ANT_HOME, однак, оскільки на osx немає директорії для сміття? $ which ant / usr / local / bin / ant $ ls / usr / local / bin / ant / usr / local / bin / ant $ ant -v Apache Ant (TM) версія 1.9.4, складена 29 квітня 2014 року $ cordova - -версія 4.0.0
mylord

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.