“Android update sdk” на безголовому Linux


77

Чи вдалося комусь оновити / встановити платформи Android SDK на безголовому сервері Linux? Я отримав лише таку помилку:

Здається, дія "оновити sdk" насправді не підтримується?

~/android-sdk-linux_86/tools$ ./android --verbose update sdk
No command line parameters provided, launching UI.
See 'android --help' for operations from the command line.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3550 or swt-pi-gtk in swt.library.path, java.library.path or the jar file
        at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
        at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(Unknown Source)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
        at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
        at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.open(UpdaterWindowImpl.java:93)
        at com.android.sdkuilib.repository.UpdaterWindow.open(UpdaterWindow.java:110)
        at com.android.sdkmanager.Main.showMainWindow(Main.java:281)
        at com.android.sdkmanager.Main.doAction(Main.java:251)
        at com.android.sdkmanager.Main.run(Main.java:92)
        at com.android.sdkmanager.Main.main(Main.java:81)

Оновлення : запитання було задане деякий час тому, коли оновлення без голови не підтримувалось. Тепер можна зробити лише a android update sdk --no-ui. Спасибі люди!


Відповіді:


52

Оновлення Android SDK без голови та автоматично описано в інструкції is-there-a-to-to- automatize -the-android-sdk


2
Величезна нотатка: android update sdk --no-uiвстановить ВСІ платформи, від еклеру до зефіру. Щоб запобігти цьому, вам потрібно використовувати параметр --filter, наприклад, android update sdk --no-ui --filter 1,2лише для інструментів платформи та інструментів sdk, таких як adb та fastboot. Повний список фільтрів запустіть android list sdk tools.android.com/recent/updatingsdkfromcommand-line
Ray Foss

78

Ви можете використовувати --no-uiопцію:

android update sdk --no-ui

Якщо ви хочете автоматизувати його, ви можете прийняти всі ліцензії, скориставшись expectінструментом із цим хаком ( --accept-licenseопція наразі не повністю інтегрована в androidінструмент):

expect -c '
set timeout -1;
spawn android - update sdk --no-ui;
expect {
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'

9
щоб автоматично прийняти ліцензію, наступна версія додасть --accept-licenseпрапор. Тим часом ти можешecho "y" | android update sdk --no--ui
Сніколас

@Snicolas у вас є джерело для цього? Посилання, які я бачив, роблять це, здається, вимагає певного номера ліцензії як параметр, і, ймовірно, для внутрішнього використання. Я хотів би помилитися ...
Матеор,

Ви можете знайти приклад тут на github: github.com/embarkmobile/android-sdk-installer/blob/master/…
Snicolas

@Snicolas Не пробував відлуння, але мені запропонували двічі, тож це точно не спрацює.
tishma

7

Я просто зіткнувся з тією ж проблемою. Однак я знайшов обхідний шлях.

Перший з них - це копіювання: завантажте платформи в очолювану систему та просто скопіюйте підкаталоги платформи у свій каталог android sdk / платформ

Якщо, як і я, у вас немає негайного доступу до іншого головного середовища для розробників Android, ви можете перейти до архівів SDK Google і завантажити один із інших SDK, що включав платформи. Цей спосіб означає, що ви можете розробляти лише для Android 1.1 та 1.5.

Завантажити для систем Linux є їх Android 1.5 r3. Звичайно, сторінки завантаження google sdk не є зручними для рисі, тому мені довелося отримати пряме посилання з іншої системи графічного інтерфейсу.

wget http://dl.google.com/android/archives/android-sdk-linux_x86-1.5_r3.zip

Тоді справа просто в розпакуванні архіву та переміщенні sibdirs платформи до нової директорії платформи SDK.

android create avd -t 3 -p path/to/avd/dir -n "name"

Це створює AVD для платформи 1.5 із зазначеним іменем та каталогом. Зверніть увагу, що avd dir не повинен існувати. Якщо ви хочете перезаписати, додайте --force до команди.

Досягнувши цього, вже встановлена ​​платформа і створюється AVD. На жаль, наразі спроба побудови для мене не вдалася, оскільки я працюю на 64-бітному сервері, а Google випускає лише 32-бітні інструменти.

Я знайшов рішення для цього у прийнятій відповіді на це запитання щодо stackoverflow і використовував його, sudo apt-get install ia32-libsщоб дозволити можливість запускати 32-бітні інструменти.

Тоді ви зможете скористатися інструментом android на CLI, щоб або перетворити проект затемнення (для 1,5 або нижче) на систему побудови мурашок, або ви можете запропонувати йому створити новий проект, над яким можна почати працювати.

Сподіваюся, це допомагає!


3

Так, це працює, але вам потрібні встановлені бібліотеки графічного інтерфейсу, і вам потрібно, щоб ваш DISPLAY був встановлений для того, який X-сервер ви хочете, щоб він відображався. У мене зараз це працює на CentOS 5.4, і мені довелося скористатися опцією встановлення "Сервер - графічний інтерфейс" у вірші "Сервер". Тоді я просто використовую "ssh -X" із системи, де я хочу, щоб він відображався.


Ви можете навести більш конкретний приклад?
Маттіас

3

Я щойно створив невеликий інструмент командного рядка, який виконує оновлення в будь-якому середовищі (графічному або не графічному інтерфейсі). Не мав можливості широко його перевірити, але, наскільки я можу сказати, він робить те, що повинен.

Інструмент командного рядка оновлює попередньо встановлений базовий Android SDK з усіма доступними на даний момент платформами, доповненнями, додатками, документами, зразками та інструментами. Цього має бути достатньо для сервера збірки (мені це потрібно для моєї інсталяції Hudson CI з Maven).

Будь ласка, перейдіть сюди для отримання детальної інформації:

http://code.google.com/p/android-sdk-tool

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