在Linux服务器上编译Android .apk

问题描述:

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

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我得到这个错误:

[email protected]:~/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) 

有什么想法出错了?

+0

java的哪个版本在您的路径上?java -version? JAVA_HOME是否设置为env中的任何内容? – slund 2011-04-19 20:28:00

+0

这里检查答案:http://*.com/questions/2157089/android-update-sdk-on-headless-linux – Aleadam 2011-04-19 20:34:21

+0

@slund运行时,'Java的-version'它说:“1.5.0_22”即使我容易 - 安装1.6。我应该如何解决这个问题? – lollercoaster 2011-04-19 20:53:40

当您运行不带参数的./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

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

android --help create project 

希望这会有所帮助。

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

但是,如果这是不是你的意图和你想用你的显示器显示的Android GUI使用ssh -X,使X11转发,安装libswt-gtk-3.5-java并设置ANDROID_SWT/usr/lib/java

+1

哦,我明白了。所以当我进入我的服务器时,我可以使用-X标志启用GUI功能。凉。 – lollercoaster 2011-04-19 20:50:58

+0

但我该如何设置ANDROID_SWT? – lollercoaster 2011-04-19 20:51:19

+0

你的目标不仅仅是建立.apks吗?如果你想玩模拟器,启用X11转发才有意义。 – nunaxe 2011-04-19 21:01:43

而且 - 我的道歉,我挖得更深一些,在这里发现了一个非常类似的线程: "android update sdk" on headless linux

感谢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中。登录/注销后,更改将永久:)