【问题标题】:Command line "Android update sdk" on headless Linux无头 Linux 上的命令行“Android 更新 sdk”
【发布时间】:2011-01-10 13:19:22
【问题描述】:

如何在无头 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)

当不支持无头更新时问这个问题。从 2012 年开始,现在可以只使用 android update sdk --no-ui

【问题讨论】:

标签: android


【解决方案1】:

我刚刚遇到了同样的问题。不过我找到了解决方法。

第一个是逃避:在有头系统上下载平台,然后简单地将平台子目录复制到您的 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

然后,只需解压缩存档,并将平台子目录移动到较新的 SDK 平台目录即可。

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

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

到目前为止,已经安装了一个平台并创建了一个 AVD。不幸的是,此时尝试构建对我来说失败了,因为我运行的是 64 位服务器,而 Google 只发布了 32 位工具。

我在this Stack Overflow question 的公认答案中找到了解决方案,并使用sudo apt-get install ia32-libs 来启用运行 32 位工具的能力。

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

【讨论】:

    【解决方案2】:

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

    android update sdk --no-ui
    

    如果您想自动化它,您可以使用带有此 hack 的 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
    }
    '
    

    【讨论】:

    • 自动接受许可,下一版本将添加--accept-license 标志。同时你可以echo "y" | android update sdk --no--ui
    • @Snicolas 你有这方面的资料吗?我看到的参考资料使它看起来需要一个特定的许可证号作为参数,并且可能是供内部使用的。很想错...
    • 你可以在 github 上找到一个例子:github.com/embarkmobile/android-sdk-installer/blob/master/…
    • @Snicolas 没有尝试回显,但我被提示了两次,所以它肯定行不通。
    【解决方案3】:

    Stack Overflow 问题 Is there a way to automate the Android SDK installation? 中描述了无头自动更新 Android SDK。

    【讨论】:

    • 大注释:android update sdk --no-ui 将安装所有平台,从 eclair 到 marshmallow。为防止出现这种情况,您需要为平台工具和 sdk 工具(如 adb 和 fastboot)使用 --filter 参数(如 android update sdk --no-ui --filter 1,2)。对于过滤器的完整列表运行android list sdktools.android.com/recent/updatingsdkfromcommand-line
    【解决方案4】:

    是的,它可以工作,但您需要安装 GUI 库,并且您需要将 DISPLAY 环境变量设置为您希望它显示的 X 服务器。

    我现在可以在 CentOS 5.4 上运行它,并且必须使用“服务器 - GUI”和“服务器”安装选项。然后我只使用我希望它显示的系统中的“ssh -X”。

    【讨论】:

    • 你能提供一个更具体的例子吗?
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

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

      请到这里了解更多详情:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-12
        • 2017-10-03
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多