如何在 linux 上设置 android SDK 以进行命令行开发?
Posted
技术标签:
【中文标题】如何在 linux 上设置 android SDK 以进行命令行开发?【英文标题】:How to set up android SDK for command line development on linux? 【发布时间】:2011-01-26 19:55:49 【问题描述】:我正在尝试设置 android SDK 以在 Linux (Ubuntu 9.10) 的命令行上开发一个简单的程序。我试过 eclipse,但它知道在 Ubuntu 上运行有问题,所以我放弃了。这是我到目前为止所做的:
-
从http://developer.android.com/sdk/index.html下载了android-sdk_r05-linux_86.tgz
tar xvzf android-sdk_r05-linux_86.tgz
ln -s android-sdk-linux_86 android
在 .tcshrc 中添加了 setenv PATH .....:/home/user/android/tools
源.tcshrc
运行“机器人”。这打开了一个gui。在可用包下:我安装了所有东西,然后退出了 gui。
运行 'android list targets' 并列出了这些:
可用的 Android 目标:
id: 1 或“android-3” 名称:安卓1.5 类型:平台 API等级:3 修订:1 皮肤:HVGA-P、HVGA(默认)、QVGA-P、QVGA-L、HVGA-L
id:2 或“Google Inc.:Google APIs:3” 名称:Google API 类型:附加组件 供应商:谷歌公司 修订:3 说明:Android + Google API 基于 Android 1.5(API 级别 3) 图书馆: * com.google.android.maps (maps.jar) 谷歌地图 API 皮肤:QVGA-P、HVGA-L、HVGA(默认)、QVGA-L、HVGA-P
id: 3 或“android-4” 名称:安卓1.6 类型:平台 API等级:4 修订:1 皮肤:HVGA(默认)、WVGA800、WVGA854、QVGA
id:4 或“Google Inc.:Google APIs:4” 名称:Google API 类型:附加组件 供应商:谷歌公司 修订:2 说明:Android + Google API 基于 Android 1.6(API 级别 4) 图书馆: * com.google.android.maps (maps.jar) 谷歌地图 API 皮肤:WVGA854、HVGA(默认)、QVGA、WVGA800
id: 5 或“android-6” 名称:安卓2.0.1 类型:平台 API等级:6 修订:1 皮肤:WQVGA432、HVGA(默认)、WVGA800、WVGA854、WQVGA400、QVGA id:6 或“谷歌公司:谷歌 API:6” 名称:Google API 类型:附加组件 供应商:谷歌公司 修订:1 说明:Android + Google API 基于 Android 2.0.1(API 级别 6) 图书馆: * com.google.android.maps (maps.jar) 谷歌地图 API 皮肤:WQVGA400、WVGA854、HVGA(默认)、WQVGA432、QVGA、WVGA800
id: 7 或“android-7” 名称:安卓2.1 类型:平台 API等级:7 修订:1 皮肤:WQVGA432、HVGA(默认)、WVGA800、WVGA854、WQVGA400、QVGA
id:8 或“Google Inc.:Google APIs:7” 名称:Google API 类型:附加组件 供应商:谷歌公司 修订:1 说明:Android + Google API 基于 Android 2.1(API 级别 7) 图书馆: * com.google.android.maps (maps.jar) 谷歌地图 API 皮肤:WQVGA400、WVGA854、HVGA(默认)、WQVGA432、QVGA、WVGA800
我想为我的摩托罗拉机器人创建一个简单的 hello world 程序。我应该使用这些目标中的哪一个?
我如何查看皮肤?
如果我从命令行运行“android”,它会说没有虚拟设备。虚拟设备是否与目标相同?
如何获得机器人皮肤和/或机器人目标和/或机器人虚拟设备?
我认为我需要运行类似“android create avd --target 2 --name my_avd”的东西,但不确定。是否有关于如何在某处执行此操作的分步列表?
谢谢, 鲍勃
稍后:
我发现我必须像这样创建目标(=虚拟设备):
android 创建 avd -t 1 -n myavd1 ....... android 创建 avd -t 8 -n myavd8
当我从命令行运行“android”时,这在 gui 中为我提供了 8 个虚拟设备。
有谁知道 Droid 使用什么 api 级别/平台?在哪里可以买到合适的皮肤?对于 Droid 开发,我需要了解任何硬件规格吗?
最后,有没有从命令行(linux)创建一个hello world应用并在模拟器上运行然后在真手机上运行的步骤列表?
鲍勃
【问题讨论】:
【参考方案1】:很抱歉没有直接回答您的问题,但是您在 Ubuntu 上使用 Eclipse 有什么问题?我已经运行 Ubuntu 多年了,我是 Eclipse 的重度用户,并且对这个设置没有任何问题。
编辑:这要求澄清,因此应该是评论,但当时我没有足够的代表来发布 cmets。
【讨论】:
答案如何?此外,Eclipse 在任何平台上都有问题,而不仅仅是 Ubuntu Ognian,用户292344 写道:“我尝试了eclipse,但它知道在Ubuntu 上运行有问题,所以我放弃了它。”这太含糊了(就像您对未指定的 Eclipse 问题的评论一样)。这确实是题外话,所以请坚持可能有助于 OP 的事实。 是的.. Ubuntu 和 Eclipse 对我来说完全没有问题... +1 用于 Ubuntu 和 Eclipse... 如果他能解释他的问题是什么,那么我们可以解决它..或尝试解决它...我的设置.. Ubuntu 10.10,Eclipse Helios,所有软件和 SDK 工具的最新更新...它是我的主要构建环境。 -1 Eclipse 速度慢、笨重且臃肿。你喜欢它……酷……你也喜欢寿司吗?猫怎么样..你对猫有什么看法?狗人?现在,你知道如何在命令行上设置 android dev 了吗?是的.. 很酷,你告诉我们怎么样。【参考方案2】:尝试坚持使用 eclipse,如果你在那里遇到问题,尝试在命令行上做事情会更糟。 log cat 和调试器等内置工具非常有价值。
【讨论】:
【参考方案3】:想创建一个简单的hello world 我的摩托罗拉机器人程序。哪一个 我应该使用这些目标中的哪一个?
Droid 的库存版本为 2.0 (API 6),但截至 2011 年 3 月 14 日,其版本为 2.2.2 (FRG83G)。您应该以 2.0 为目标,因为并非所有机器人都是 2.2.2。
我如何查看皮肤?
如何获得机器人皮肤和/或机器人目标和/或机器人虚拟设备?
您需要为 Motorola Droid 安装 Skins。 在此处查看 MotoDev 网站..
http://developer.motorola.com/docstools/tools/
如果我从命令运行“android” 行它说没有 虚拟设备。是虚拟设备 和目标一样吗?
没有目标和虚拟设备不同。您需要从目标创建虚拟设备。
有谁知道什么api级别/ 用于 Droid 的平台?和 哪里可以买到合适的皮肤?有没有 任何硬件规格,即 我需要了解 Droid 开发?
API 级别:应该使用 6 或更高,因为并非所有设备都已更新。
规格:见这里http://developer.motorola.com/products/droid/
最后,有没有步骤列表 从 命令行 (Linux) 并在 模拟器,然后在真机上运行 电话?
选择 Eclipse + Ubuntu.. 设置皮肤和插件也更容易。插件与物理设备最匹配。其他选择是使用繁琐的开发(对于像你这样的初学者)。在此处询问您的疑问或作为单独的问题发布。你肯定会得到回应。
HTC 最近为开发人员制作了一个小指南,以帮助使用命令行工具。 请看这里http://htcdev.com/devcenter/opensense-sdk/quick-guide#building
你也可以使用 Eclipse+ MotoDev studio...
http://developer.motorola.com/docstools/motodevstudio/
【讨论】:
【参考方案4】:一旦构建了 AVD,就从命令行构建而言,我发现这两个链接最有用:
http://developer.android.com/guide/developing/projects/projects-cmdline.html
http://developer.android.com/guide/developing/building/building-cmdline.html
如果您按照“创建 Android 项目”中所述创建示例项目,那么它会为您创建目录结构,最有用的是 build.properties 和 build.xml。即使您不熟悉 Ant,使用 Ant 构建它也非常容易,而且它几乎可以使用它自动生成的 build.xml 为您完成所有工作。该过程在第二个链接中详细描述。唯一乏味的是应用程序的签名。链接没有告诉您的一件事是,如果您在 build.properties 中添加两行,例如:
key.store.password=YourPassword
key.alias.password=YourOtherPassword
然后签名也会自动完成。
示例应用程序本身几乎就是一个 Hello World。如果您想将其推送到真实设备上,您只需要签署该应用程序。对于模拟器,您只需调用 Ant 的“调试”和“安装”目标,它们将构建应用程序并将其推送到模拟器
【讨论】:
【参考方案5】:我在 ubuntu 10.10 上为 android dev 运行 eclipse,我一点问题都没有。不要放弃日食。我建议您询问有关您在 Eclipse 中遇到问题的问题。
如果问题是在 eclipse 中你得到“?????????”当您尝试在手机上运行它时作为设备 ID,您只需在 eclipse 打开时在终端中运行sudo adb kill-server
和sudo adb start-server
。您可能还需要以 root 身份登录才能将 adb(来自您的 android sdk)添加到您的 PATH 环境变量中。
【讨论】:
【参考方案6】:虽然我经常使用 IDE(或 GUI 包装器)进行开发,但我发现 Android 的 CLI 尤其令人不快。
我最近开始将我所有的 Android 项目转换为 Maven 管理。有一个growing community 使用这种方法,它可以是相当愉快的。
这个想法是围绕maven-android-plugin 构建的,它完成了所有繁重的工作。 samples 展示了各种用例(非 Java 语言、多模块项目等)。繁琐的 CLI 任务,例如使用 proguard 缩小 APK 大小、签署 APK 和压缩对齐 APK 有 all been automated。
还有一种自定义格式 .apklib
,用于通过 Maven 存储库分发 Android library projects。
当您将所有这些功能与 Maven 提供的现有优势(自动测试、模块支持、依赖管理、自动发布、maven 站点生成等)结合起来时,您会真正获得一个非常简化的工作流程。
哦,它也可以control 和deploy 模拟器!
【讨论】:
【参考方案7】:使用android list target
列出可用目标。这将包含以下信息:
-Target ID :每个目标都有不同的 id,应该在所有其他命令中使用。
-Skin:每个目标都包含支持的皮肤列表
-API 级别:特定目标的 API 级别
创建 avd:
android create avd --target 8 --name DROID_EMULATOR --sdcard 128M --skin WVGA854
创建一个 HelloWorld 项目:
android create project --name "HelloWorld" --target 8 --package com.test.helloworld --activity HelloWorld --path HelloWorld
这将在当前目录中创建一个 HelloWorld 目录。它还将在当前目录中创建一个 build.xml。
您可以使用ant compile
编译项目,使用ant install
编译和安装项目。这将在可用的模拟器或设备上安装应用程序。您可以使用ant
查看可用的不同构建目标。
HTH!
PS:我正在使用 Android SDK 工具,修订版 9 和平台工具,修订版 3。
【讨论】:
试过 "android create avd --target 8 --name DROID_EMULATOR --sdcard 128M --skin WVGA854" 得到 "jenkins@ip-172-31-22-20:~/pp_files$ $ANDROID_HOME /tools/android create avd --target 8 --name DROID_EMULATOR --sdcard 128M --skin WVGA854 Valid ABIs: no ABIs. Error: This platform has more ABIs. Please specify one using --abi.jenkins@ip- 172-31-22-20:~/pp_files$ $ANDROID_HOME/tools/android 创建 avd --target 8 --name DROID_EMULATOR --sdcard 128M --skin WVGA854 "以上是关于如何在 linux 上设置 android SDK 以进行命令行开发?的主要内容,如果未能解决你的问题,请参考以下文章
如何在命令行上安装 Android SDK Build Tools?