无头Linux上的“ android update sdk”


77

有没有人成功在无头Linux服务器上更新/安装Android SDK平台?我得到的只是以下错误:

似乎实际上不支持动作“ update 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)

更新:前一段时间不支持无头更新时,有人问了这个问题。现在可以只做一个了android update sdk --no-ui。谢谢大家!


Answers:


52

无头自动更新Android SDK的方法是自动安装sdk的安装方法


4
还有更多。
Jim McKeeth

2
值得注意的是:android update sdk --no-ui将安装从甜点到棉花糖的所有平台。为防止这种情况,您android update sdk --no-ui --filter 1,2仅需对平台工具和sdk工具(如adb和fastboot)使用--filter参数。有关过滤器的完整列表,请运行android list sdk tools.android.com/recent/updatingsdkfrom命令行-Ray
Foss

78

您可以使用以下--no-ui选项:

android update sdk --no-ui

如果您想使其自动化,则可以通过将该expect工具与该hack一起使用来接受所有许可证(该--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 2013年

@Snicolas您是否有消息来源?我看到的参考资料似乎要求使用特定的许可证号作为参数,并且可能仅供内部使用。
真想

:您可以在github在这里找到一个例子github.com/embarkmobile/android-sdk-installer/blob/master/...
Snicolas

@Snicolas没有尝试echo,但是两次提示我,所以它肯定行不通。
tishma

7

我只是遇到了同样的问题。我找到了解决方法。

第一个是cop-out:在带头系统上下载平台,只需将平台子目录复制到android sdk / platforms目录中。

如果像我一样,您不能立即访问另一个负责任的android开发环境,则可以转到Google的SDK归档文件并下载包含平台的其他SDK之一。这种方式意味着您只能针对Android 1.1和1.5进行开发。

用于Linux系统的下载文件是其Android 1.5 r3。当然,Google的sdk下载页面不是对Lynx友好的,因此我不得不从另一个GUI系统获得直接链接。

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"

这将使用您指定的名称和目录为1.5平台创建一个AVD。请注意,avd目录不应该存在。如果要覆盖,请在命令中添加--force。

到此为止,已经安装了平台并创建了AVD。不幸的是,由于我运行的是64位服务器,而Google仅发布32位工具,因此在这一点上尝试构建失败。

我在这个stackoverflow问题的可接受答案中找到了解决方案,并sudo apt-get install ia32-libs启用了运行32位工具的能力。

然后,您应该能够使用CLI上的android工具将eclipse项目(1.5或更低版本)转换为具有ant构建系统,或者您可以让它创建一个新项目供您开始使用。

希望这可以帮助!


3

是的,它可以工作,但是您需要安装GUI库,并且需要将DISPLAY设置为要显示的X服务器。我现在在CentOS 5.4上运行它,不得不使用“服务器-GUI”和“服务器”安装选项。然后,我只在要显示它的系统中使用“ ssh -X”。


您能提供一个更具体的例子吗?
Matthias 2010年

3

我刚刚创建了一个小的命令行工具,该工具可以在任何环境(GUI或非GUI)中进行更新。没有机会对其进行广泛的测试,但据我所知,它应该执行什么操作。

命令行工具会使用所有当前可用的平台,加载项,附加功能,文档,示例和工具来更新预安装的基本Android SDK。对于构建服务器来说,这应该足够了(我在使用Maven进行Hudson CI安装时需要它)。

请前往此处了解更多详细信息:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.