Android (简体中文)
浏览安卓设备
有多种方法浏览安卓设备:
更高阶的用法,开发、刷机等:
Archlinux 环境下开发安卓
在Archlinux中开发安卓程序,需如下三步:
- 安装 Android SDK 核心组件,
- 安装一个或数个 Android SDK 特定平台软件包,
- 安装一个兼容 Android SDK 的 IDE
安卓开发平台核心组件
在开发安卓程序之前,需要安装安卓平台,由下方三组软件包组成,均可从 AUR 安装:
软件包会安装到/opt/android-sdk
. 这个目录是 root 权限,所以需要以 root 执行 sdk. 否则无法安装和更新 /opt/android-sdk 中的内容。如果要一般用户访问,需要给用户读写权限。
获取 Android SDK 特定平台API
从AUR安装所需的 Android SDK 特定平台软件包:
- android-platformAUR (最新)
- android-platform-21AUR
- android-platform-20AUR
- android-platform-19AUR
- android-platform-18AUR
- android-platform-17AUR
- android-platform-16AUR
- android-platform-15AUR
- android-platform-14AUR
- android-platform-13AUR
- android-platform-12AUR
- android-platform-11AUR
- android-platform-10AUR
- android-platform-9AUR
- android-platform-8AUR
- android-platform-7AUR
- android-platform-7AUR
- android-platform-6AUR
- android-platform-5AUR
- android-platform-4AUR
- android-platform-3AUR
- android-platform-2AUR
开发环境
Android Studio 是新的开发环境,基于 IntelliJ IDEA。更传统的一个集成开发环境是不再支持的 ADT 插件 + Eclipse。另外,安装下述的插件之后,也可以使用 Netbeans 进行开发。
Android Studio
Android Studio 是基于 IntelliJ IDEA 的 Android 开发环境。类似于安装了 ADT 插件的 Eclipse,Android Studio 为开发和调试提供了集成的 Android 开发者工具。
你可以下载并安装 AUR 中的 android-studioAUR 软件包。若提示缺少 SDK,参考上节获取 Android SDK 特定平台API。
如果使用平铺窗口管理器,需要按 这里 进行处理。
Eclipse
在 Eclipse 中开发 Android 需要的大部分软件 AUR 已经有了:
谷歌官方插件 – Eclipse ADT:
依赖:
- eclipse-emfAUR
- eclipse-gefAUR
- eclipse-wtp-wstAUR
在下面设置中设置 Android SDK 路径:
Windows -> Preferences -> Android
如果插件未显示出来,可能是缓存过时。执行命令 sudo eclipse -clean
。如果还是不行,就删除 Eclipse 和插件,删除 /usr/share/eclipse
再重装。
Netbeans
如果想用 Netbeans 作为 Android 开发 IDE,需要下载 nbandroid:
Tools -> Plugins -> Settings
添加如下 URL: http://nbandroid.org/updates/updates.xml
然后到 Available Plugins 安装 IDE 版本对应的 Android 和 Junit 插件
安装后到:
Tools -> Options -> Miscellaneous -> Android
设置 SDK 安装路径。 这样就行了,现在你可以在 Netbeans 里面创建和开发新的 Android 项目。
连接一台真实设备 —— 安卓调试桥 (ADB)
要使用 安卓调试桥(ADB) 在 Arch下连接设备,必须:
- 在手机或设备上启用 USB 调试。 通常在
设置 --> 应用程序 --> 开发者 --> USB 调试
。勾选后重启手机,确保 USB 调试已启用 (若无此选项,此步可能不适用于你的安卓版本) - 安装软件包l android-udev,为设备在
/dev/
建立正确的节点。 - 将用户加入组 adbusers. (
gpasswd -a username adbusers
)
使用现有规则
从 官方软件仓库 安装 android-udev 可以获得常见 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 传输文件了。要传送文件到设备:
$ adb push <what-to-copy> <where-to-place>
要从设备获取文件:
$ adb pull <what-to-pull> <where-to-place>
如果没有 adb 程序(通常位于/opt/android-sdk/platform-tools/
),可能是没有安装平台工具。
如果列表为空(设备没有找到),可能是因为设备上没有启用 USB 调试。可以到 设置 => 应用程序 => 开发 (Settings => Applications => Development) 或者 设置 => 开发者选项 (Settings => Developer options) 中启用 USB 调试。Android 4.2 (Jelly Bean) 隐藏了开发者选项菜单,到 设置 => 关于手机 (Settings => About phone),然后点击 Build 版本号 7 次来启用它。
若仍有问题,比如 adb 显示 ???????? no permissions
,尝试使用 root 重启 adb 服务器。
# adb kill-server # adb start-server
配置 adb
除了使用 udev 规则之外,你也可以创建/编辑 ~/.android/adb_usb.ini,使它包含厂商 id 的列表。
$ cat ~/.android/adb_usb.ini 0x27e8
NVIDIA Tegra 平台专用工具
如果应用程序的目标平台是 NVIDIA Tegra 平台,可以安装 NVIDIA 提供的工具、文档和示例。NVIDIA 移动开发者 区提供了两个工具:
- Tegra 安卓开发包 提供了 NVIDIA 调试管理器及文档。
- Tegra Toolkit 提供了工具(大部分是 CPU 和 GPU 优化相关),示例和文档。
因为 NVIDIA 现在需要先注册登录才能下载,所以两者均无法再从 AUR 获取。
构建 Android
请注意如下说明文档是基于官方 AOSP 构建说明的。其他基于 Android 的系统,如 CyanogenMod,通常需要其他步骤。
OS 位数
只有安卓 2.2.x (Froyo) 和更早的版本需要在32位系统中构建。而2.3.x (Gingerbread) 之后,则需要64位系统。
需要的软件包
编译任意版本的安卓系统,都需要安装这些软件包:
- 32位和64位系统: gcc git gnupg flex bison gperf sdl wxgtk squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc
Java Development Kit
Android 5 (Lollipop) 可以使用 jdk7-openjdk 编译.
老的版本 需要 Oracle JDK 才能编译,不支持OpenJDK.
- Cupcake 到 Froyo (1.5 - 2.2), 需要 Java 5, Arch Linux 已经不再支持。
配置构建环境
下载 repo
工具。
$ mkdir ~/bin $ export PATH=~/bin:$PATH $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
创建一个用于构建的目录:
$ mkdir ~/android $ cd ~/android
你需要把默认的 python 从 3.X 版切换到 2.X 版:
$ virtualenv2 venv # 创建一个包含 Virtualenv 的目录 venv/
编译时可能报缺少 python 模块,可以通过链接 /usr/lib/python2.7/* 到 ~/android/venv/python2.7/ 进行解决,实际路径按照虚拟环境的路径确定。
激活 Virtualenv,使得 $PATH 指向 Python 2。
$ source venv/bin/activate
下载源代码
克隆整个代码库。你 仅 需在初次构建安卓或者切换分支时做一次。
-
repo
有一个-j
选项,用法与make
的相似。它决定了下载的线程数,你可以根据下载带宽进行调整。
- 你需要通过
-b
选项指定要检出的分支(安卓版本)。若不指定,会检出所谓的master 分支。
$ repo init -u https://android.googlesource.com/platform/manifest -b master $ repo sync -j4
静候多时。未编译的源代码,与这些代码的 .repo
、.git
目录,大小已经超过 10 GB。
开始构建
AOSP中需执行如下命令:
$ source build/envsetup.sh $ lunch full-eng $ make -j4
如果你不添加任何参数运行 lunch,它会询问你想要创建什么样的 build。 使用 -j 并添加一个数字,它介于CPU核数或线程数的1至2倍。
编译很耗时。
测试镜像
完成之后,运行并测试最终的映像。
$ emulator
创建可烧录镜像
make -j8 updatepackage
这个命令会在 out/target/product/hammerhead (hammerhead being the device name) 生成一个可烧录文件.
其它连接方法
AirDroid
AirDroid 可以通过网页浏览器访问设备。
FTP
可以在 Arch 上建立 FTP 并通过手机访问参阅 List of applications/Internet#FTP.
SSH 服务器
Android 上有很多 SSH 服务器,可以通过 scp
命令操作,参见 SSH.
Samba
See Samba.
技巧和提示
调试时出现 "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 安装方法的详细介绍。
文件处理
aapt: No such file or directory
安装工具包含 32 位程序,需要 32 位的库。如果是手动安装 SDK,需要安装 multilib/lib32-libstdc++5 和 multilib/lib32-zlib.