无头linux上的“android update sdk”

时间:2010-01-28 18:56:47

标签: android

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

似乎实际上不支持“更新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。谢谢大家!

6 个答案:

答案 0 :(得分:77)

您可以使用--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
}
'

答案 1 :(得分:52)

is-there-a-way-to-automate-the-android-sdk-installation

中描述了无头自动更新Android SDK

答案 2 :(得分:7)

我遇到了同样的问题。我发现了一个解决方法。

第一个是警察:在头部系统上下载平台,只需将平台子目录复制到你的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位服务器,谷歌只发布32位工具。

我在this stackoverflow question的已接受答案中找到了解决方案,并使用sudo apt-get install ia32-libs启用了运行32位工具的功能。

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

希望这有帮助!

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

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

请到这里了解更多详情:

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

答案 5 :(得分:0)

我不得不使用 strace -f -v -s1024 -o/tmp/android.log ./android 对其进行分析。我发现所需的库正在自动创建,并在 /tmp/swtlib-64/ 下找到。但是,我仍然收到上述错误。深入研究 /tmp/android.log,我发现 libgtk-x11-2.0.so.0 被找到。因此,在 sudo apt install libgtk2.0-0 之后,我可以使用 ssh -X 以图形方式运行 android 安装程序到无头服务器。