【问题标题】:Compiling Android .apk on Linux Server在 Linux 服务器上编译 Android .apk
【发布时间】:2011-04-19 20:14:16
【问题描述】:

我希望能够在我的 Ubuntu 10.04 i386 服务器上使用 ant 以编程方式构建给定 Android 项目(文件夹、.java、.xml 等文件)的 .apk 文件。我没有使用 Eclipse 甚至 GUI。

1) 我已经按照以下说明操作:http://source.android.com/source/initializing.html

2) 我在这里下载/解压了 Android Linux SDK:http://developer.android.com/sdk/index.html

3) 现在,当我导航到 /home/myusername/www/android-sdk-linux_x86/tools 并输入 ./android 时,我收到此错误:

myusername@myserver:~/www/android-sdk-linux_x86/tools$ ./android
Starting Android SDK and AVD Manager
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.sdkmanager.Main.showMainWindow(Main.java:297)
    at com.android.sdkmanager.Main.doAction(Main.java:281)
    at com.android.sdkmanager.Main.run(Main.java:99)
    at com.android.sdkmanager.Main.main(Main.java:88)

对出了什么问题有任何想法吗?

【问题讨论】:

  • 你的路径是什么版本的java? java版本? JAVA_HOME 是否设置为您环境中的任何内容?
  • 在这里查看答案:stackoverflow.com/questions/2157089/…
  • @slund 在运行java -version 时显示“1.5.0_22”,即使我安装了 1.6。我该如何解决这个问题?
  • @Aleadam 看起来非常相似,谢谢!抱歉,我之前没有找到这个......我很抱歉
  • @lollercoaser 不用担心。我没有将其标记为欺骗,因为它是相同的错误,但情况不同。我刚刚把它和你联系起来了。有帮助吗?

标签: java android linux compiler-construction ant


【解决方案1】:

当您运行不带参数的 ./android 二进制文件时,它会尝试打开一个 GUI 窗口。

从您提供的输出来看,./android 二进制文件似乎运行良好,但由于您运行的是无头服务器,因此它崩溃了。

以下是构建 Android .apk 的命令行步骤:

  1. android create project --name ExampleProj --activity ExampleProj --path ./ --package com.example.project --target 2
  2. ant debug

这将创建一个 ExampleProj-debug.apk

一个很好的帮助来源是 ./android 二进制文件的 --help 参数,以及您要执行的操作。例如:

android --help create project

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    如果您希望运行 headless android,请发出一些命令行选项,例如 --help

    但是,如果这不是您的意图,并且您想使用显示器显示 android GUI,请使用 ssh -X 启用 X11 转发,请安装 libswt-gtk-3.5-java 并将 ANDROID_SWT 设置为 /usr/lib/java

    【讨论】:

    • 哦,我明白了。所以当我 ssh 进入我的服务器时,我可以使用 -X 标志启用 GUI 功能。很酷。
    • 我该如何设置 ANDROID_SWT?
    • 您的目标不只是构建 .apks 吗?仅当您想玩模拟器时,启用 X11 转发才有意义。
    • ANDROID_SWT 应该在您的环境中设置。
    • @nunaxe,是的,我的目标只是构建应用程序。我可以不关心模拟器
    【解决方案3】:

    感谢 dtmilano,我设法找到了解决方案。首先,如果没有安装,如果在debian机器上安装libswt-gtk-3.5-java,如果在archlinux上安装swt。如果在 i686 机器上,在终端输入:

    export ANDROID_SWT=path-to-android-sdk/tools/lib/x86
    

    如果在 x86_64 上(您可能需要一些额外的 32 位库,我不知道)

    export ANDROID_SWT=path-to-android-sdk/tools/lib/x86_64
    

    然后android将运行。如果你想让它永久化,一种简单的方法是将上面的行放到你的 ~/.bashrc 中。登录/注销后,更改将是永久性的:)

    【讨论】:

      【解决方案4】:

      另外 - 抱歉,我挖得更深了,在这里发现了一个非常相似的线程: "android update sdk" on headless linux

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 2020-08-24
        相关资源
        最近更新 更多