Android (简体中文)

From ArchWiki
Revision as of 06:36, 20 January 2013 by Jobinson99 (talk | contribs) (Archlinux 环境下开发 Android: 英文部分也是我改的,此部分以中文为准。)
Jump to navigation Jump to search
翻译状态: 本文是英文页面 Android翻译,最后翻译时间:2013-01-06,点击这里可以查看翻译后英文页面的改动。

Archlinux 环境下开发安卓

共有三个环境需要构建:核心组件——》特定平台组件——》开发平台

建立安卓平台

在开发安卓程序之前,至少需要一个安卓平台。可以从 AUR 安装核心 SDK 组件:

  1. android-sdkAUR
  2. android-sdk-platform-toolsAUR

默认会安装到 /opt/android-sdk,一般需要设置该目录的读写权限,参看上面自动安装的目录权限设置部分.


注意: 如果运行 Arch64,需要启用 multilib 源 才能通过pacman安装需要的依赖软件包。


在安装完核心组件后,还需要构建特定系统的平台,也就是安装特定组件,方法有三种:自动、从AUR安装、手工安装。


自动安装

打开 Android SDK:

android

或者执行(假设环境变量$PATH中包含了 Android SDK tools 的目录):

./<path_to_android-sdk>/tools/android

然后选择所需要的组件,进行安装。如果安装出错,需要用更高的权限运行 android 工具,或者改变安装目录的读写权限,比如赋予 root 权限:

 chown -R USER /opt/android-sdk

如果要改变目录的组ID(多个用户使用时推荐这个方法),首先创建一个组,可以称它为 android,把你添加到这个组中:

 groupadd android
 gpasswd -a USER android

然后,改变目录的权限:

 chgrp -R android /opt/android-sdk
 chmod -R g+w /opt/android-sdk
 find /opt/android-sdk -type d -exec chmod g+s {} \;

最后一个命令在所有子目录上设置了 setgid 标志,这样所有这些目录中新创建的文件也会继承适当的组 ID。

一步一步的安装参见: 安装 SDK 组件

从 AUR 中安装

AUR 目前包含了多个安卓平台的包,不过有些重复,而且一些文件的权限设置得不正确,可以搜索android查看。


手动安装

  1. 下载需要开发的平台版本, 此网站提供了许多 Android SDK 组件的下载链接。
  2. 解压到 /<path_to_android-sdk>/platforms

现在应该能够在 Android SDK 和设备管理器中看到安装的平台了。


搭建开发平台

安卓开发工具有很多种,每个人根据自己习惯不同,可以用的方法很多。


常用的有:使用 Eclipse 作为 IDE,需要安装 ADT 插件和相关软件包。如果有不满足依赖关系提示,需要手动安装 Java 并重试。另外,可以使用 Netbeans 作为开发环境,根据 这些 指导来安装和更新插件。

使用Eclipse

在 Eclipse 中开发 Android 需要的大部分软件 AUR 已经有了:

谷歌官方插件 – Eclipse ADT:

  1. eclipse-androidAUR

依赖:

  1. eclipse-emfAUR
  2. eclipse-gefAUR
  3. eclipse-wtp-wstAUR
注意: 作为替代,你可以通过 eclipse 内置的 "add new software" 方法来安装 ADT,详见 ADT 网站的帮助。
注意: 如果你碰到了问题,可以去下载 Android SDK 并使用它捆绑的 Eclipse。这样应该不会有问题了。

在下面设置中设置 Android SDK 路径:

Windows -> Preferences -> Android

使用Netbeans

如果想用 Netbeans 作为 Android 开发 IDE,需要下载 nbandroid:

Tools -> Plugins -> Settings

添加如下 URL: http://kenai.com/projects/nbandroid/downloads/download/updatecenter/updates.xml

然后到 Available Plugins 安装 IDE 版本对应的 AndroidAndroid Test Runner 插件

如果你在 Netbeans 7.2 中碰到了 "org.netbeans.modules.gsf.testrunner was needed and not found." 的问题,请移除 AndroidAndroid Test Runner插件,然后更改 nbandroid 的 url 为: http://nbandroid.org/release72/updates/updates.xml,更新源之后,你只需要安装 Android

安装后到:

Tools -> Options -> Miscellaneous -> Android

设置 SDK 安装路径。 这样就行了,现在你可以在 Netbeans 里面创建和开发新的 Android 项目。


Android Debug 调试桥 (ADB) - 连接设备

要通过 Android Debug Bridge (ADB) 在 Arch下连接设备,必须为 /dev/ 添加udev规则。

使用现有规则

安装 AUR 软件包 android-udevAUR 可以获得常见 vendor ID 列表。如果 ADB 可以找到设备(在IDE中可以看见和访问),这项就完成了;否则,见下面的内容。

手动查找设备ID

每一个手机供应商都提供了usb厂商ID和产品ID;比如 HTC EVO 为:

vendor id: 0bb4
product id: 0c8d

使用usb连接ArchLinux(使用充电模式),在终端上运行:

# lsusb

应该会出现类似的结果:

Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.

添加 udev 规则

使用 Android developer 的规则,或者使用下面的模板,用你的 [VENDOR ID] 和 [PRODUCT ID] 替换里面的值。然后把这些规则复制到 /etc/udev/rules.d/51-android.rules

/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0666"
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_adb"
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"

然后加载我们定义的规则,运行:

# udevadm control --reload-rules

它有效吗?

配置了 udev 规则之后,拔掉设备然后重新连接

再运行:

$ adb devices

可以看到类似的结果:

List of devices attached 
HT07VHL00676    device

如果没有 adb 程序(通常位于/opt/android-sdk/platform-tools/),可能是没有安装平台工具。

如果列表为空(设备没有找到),可能是因为设备上没有启用 USB 调试。可以到 设置 => 应用程序 => 开发 (Settings => Applications => Development) 或者 设置 => 开发者选项 (Settings => Developer options) 中启用 USB 调试。Android 4.2 (Jelly Bean) 隐藏了开发者选项菜单,到 设置 => 关于手机 (Settings => About phone),然后点击 Build 版本号 7 次来启用它。

Tip: 请确保用户属于 adbusers 组:
 # gpasswd -a username adbusers

注意:在 systemd 下不需要重新载入 udev 规则,这是由于它会自动处理任何规则变化。

NVIDIA Tegra 平台专用工具

如果应用程序的目标平台是 NVIDIA Tegra 平台,可以安装 NVIDIA 提供的工具、文档和示例。NVIDIA 移动开发者 区提供了两个软件包 - Tegra Android 开发包,AUR 提供了 tegra-devpackAURTegra Toolkit,AUR 软件包是 tegra-toolkitAUR

tegra-toolkitAUR 软件包提供了工具(大部分是 CPU 和 GPU 优化相关),示例和文档。tegra-devpackAUR 软件包提供了 NVIDIA Debug Manager 及文档,主要和 Eclipse ADT 相关。

网络共享

Android_Tethering

构建 Android

构建 Android 时需要安装这些软件包:

32位或64位系统

git gnupg flex bison gperf sdl wxgtk squashfs-tools curl ncurses zlib schedtool openjdk6 perl-switch zip unzip

仅64位系统(还需要)

lib32-zlib lib32-ncurses lib32-readline gcc-libs-multilib gcc-multilib lib32-gcc-libs

并且,你需要把默认的 python 从 3.X 版切换到 2.X 版:

# rm /usr/bin/python
# ln -s /usr/bin/python2 /usr/bin/python

下载 repo 工具:

$ mkdir ~/bin
$ export PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

创建一个用于构建的目录:

$ mkdir ~/android
$ cd ~/android

与源同步:

$ repo init -u https://android.googlesource.com/platform/manifest (checkout the master)
$ repo sync

等待很久。 同步完成之后,开始构建:

$ source build/envsetup.sh
$ lunch full-eng
$ make -j4

如果你不添加任何参数运行 lunch,它会询问你想要创建什么样的 build。 使用 -j 并添加一个数字,它介于你CPU的核数到2倍核数之间。

这个过程要花很长时间。 完成之后,运行最终的映像。

$ emulator

技巧和提示

调试时出现 "Source not found"

一般这时调试器正在单步进入(Step into) Java 代码。而 Android SDK 并不提供 Java 源代码,所以导致了错误。最好的解决方法是设置单步过滤器,不要跳转到 Java 源代码。单步过滤器默认没有启动,通过如下方式设置:

Window -> Preferences -> Java -> Debug -> Step Filtering

可以全选,此外还可以添加 android.* 软件包。下面贴子有更详细信息: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml

在 sd 卡上安装 Linux 发行版

可以参照这篇贴子安装 Debian,archlinuxarm.org上有 Arch linux 安装方法的详细介绍。

Arch 64 上的 Android SDK

在 64 位系统上使用 Android SDK 和 Eclipse 插件时,模拟器总是出现段错误而崩溃,请采取如下措施: 在 /usr/share/zoneinfo/localtime 中提供 localtime 文件:

# cp /usr/share/zoneinfo/Europe/Berlin /usr/share/zoneinfo/localtime

更好的 MTPFS 支持

如果有不支持 UMS 的 Android 设备,mtpfs 会很慢,可以使用 AUR 中的 jmtpfsAUR