你准备好接受移动挑战了吗?你的电脑开着吗,鼠标和键盘插上了吗,屏幕照亮了你的桌子吗?那我们就不要再等了!
开发安卓应用需要一套特定的工具。您可能已经了解了纯 Java 应用的安卓软件开发工具包。然而,要充分利用安卓设备的能力,还需要更多:安卓原生开发套件。
设置一个合适的安卓环境并没有那么复杂,但是可能会相当棘手。事实上,安卓仍然是一个不断发展的平台,最近增加的内容,如 Android Studio 或 Gradle,在 NDK 的开发中并没有得到很好的支持。尽管有这些烦恼,任何人都可以在一小时内拥有一个随时可以工作的环境。
在第一章中,我们将:
- 安装必备软件包
- 设置安卓开发环境
- 启动安卓模拟器
- 连接安卓设备进行开发
人类与动物的区别在于工具的使用。安卓开发者,你属于的正宗物种,没什么不同!
要在安卓上开发应用,我们可以使用以下三种平台中的任何一种:
- 微软视窗(XP 及更高版本)
- 苹果 OS X(版本 10.4.8 或更高版本)
- Linux(使用 GLibc 2.7 或更高版本的发行版,如 Ubuntu 的最新版本)
除了 Windows XP(仅 32 位)之外,这些系统在 32 位和 64 位版本的 x86 平台(即采用英特尔或 AMD 等处理器的电脑)上都支持。
这是一个好的开始,但是除非你能够读写二进制代码以及说你的母语,否则拥有一个原始的操作系统是不够的。我们还需要专门用于安卓开发的软件:
- A JDK ( Java 开发工具包)
- 安卓软件开发工具包
- 安卓 NDK(原生开发套件)
- 一个 IDE ( 集成开发环境)比如 Eclipse 或者 Visual Studio(或者是硬核程序员的 vi)。Android Studio 和 IntelliJ 还不太适合 NDK 开发的,尽管它们为本地代码提供了基本支持。
- 一个很好的旧命令行外壳来操作所有这些工具。我们将使用 Bash。
现在我们知道了使用 Android 需要哪些工具,让我们从安装和设置过程开始。
以下部分专门介绍 Windows。如果你是苹果或者 Linux 用户,你可以跳转到设置 OS X 或者设置 Linux 部分。
在安装必要的工具之前,我们需要设置 Windows 来正确托管我们的安卓开发工具。虽然它不是最自然适合安卓开发的,但 Windows 仍然提供了一个功能齐全的环境。
下一节说明如何在 Windows 7 上设置必备软件包。对于 Windows XP、Vista 或 8,过程是相同的。
为了在 Windows 上开发安卓 NDK,我们需要设置几个先决条件:Cygwin,一个 JDK 和 Ant。
-
前往http://cygwin.com/install.html下载适合你环境的 Cygwin 设置程序。下载后,执行它。
-
In the installation window, click on Next and then Install from Internet.
遵循安装向导屏幕。考虑选择一个下载网站,在你的国家从那里下载 Cygwin 包。
然后,当提出时,包括开发、制造、炮弹和重击包:
按照安装向导进行操作,直到结束。这可能需要一些时间,具体取决于您的互联网连接。
-
从甲骨文网站http://www . Oracle . com/technetwork/Java/javase/downloads/index . html下载甲骨文 JDK 7(或 JDK 8,尽管在撰写本书时并未得到官方支持)。启动并跟随安装向导直到结束。
-
从位于http://ant.apache.org/bindownload.cgi的蚂蚁网站下载蚂蚁,并将其二进制包解压缩到您选择的目录中(例如
C:\Ant
)。 -
After installation, define JDK, Cygwin, and Ant locations in environment variables. To do so, open Windows Control Panel and go to the System panel (or right-click on the Computer item in the Windows Start menu and select Properties).
然后,进入高级系统设置。出现系统属性窗口。最后,选择高级选项卡,点击环境变量按钮。
-
In the Environment Variables window, inside the System variables list, add:
- 以
Cygwin
安装目录为值的CYGWIN_HOME
变量(例如,C:\Cygwin
- 以 JDK 安装目录为值的
JAVA_HOME
变量 - 以蚂蚁安装目录为值的
ANT_HOME
变量(例如,C:\Ant
)
在你的
PATH
环境变量的开头加上%CYGWIN_HOME%\bin;%JAVA_HOME%\bin;%ANT_HOME%\bin;
,中间用分号隔开。 - 以
-
Finally, launch a Cygwin terminal. Your profile files get created on the first launch. Check the
make
version to ensure Cygwin works:make –version
您将看到以下输出:
-
Ensure JDK is properly installed by running Java and checking its version. Check carefully to make sure the version number corresponds to the newly installed JDK:
java –version
您将在屏幕上看到以下输出:
-
From a classic Windows terminal, check the Ant version to make sure it is properly working:
ant -version
您将在终端上看到以下内容:
Windows 现在已经安装了托管安卓开发工具所需的所有软件包:
-
Cygwin, which is an open source software collection, allows the Windows platform to emulate a Unix-like environment. It aims at natively integrating software based on the POSIX standard (such as Unix, Linux, and so on) into Windows. It can be considered as an intermediate layer between applications originated from Unix/Linux (but natively recompiled on Windows) and the Windows OS itself. Cygwin includes
Make
, which is required by the Android NDK compilation system to build native code.即使安卓 NDK R7 引入了不需要 Cygwin 运行时的原生 Windows 二进制文件,出于调试目的,仍然建议安装后者。
-
A JDK 7, which contains the runtime and tools necessary to build Java applications on Android and run the Eclipse IDE as well as Ant. The only real trouble that you may encounter when installing a JDK is some interferences from a previous installation, such as an existing Java Runtime Environment (JRE). Proper JDK use can be enforced through the
JAVA_HOME
andPATH
environment variables.不需要定义
JAVA_HOME
环境变量。然而,JAVA_HOME
是 Java 应用中流行的约定,Ant 就是其中之一。它首先在JAVA_HOME
(如果已定义)中查找java
命令,然后在PATH
中查找。如果您稍后在另一个位置安装最新的 JDK,不要忘记更新JAVA_HOME
。 -
Ant,这是一个基于 Java 的构建自动化实用程序。虽然不是必需的,但它允许从命令行构建安卓应用,正如我们将在第 2 章、启动原生安卓项目中看到的。建立持续的集成链也是一个很好的解决方案。
下一步包括设置安卓开发工具包。
安卓需要特定的开发套件来开发应用:安卓软件开发工具包和 NDK。希望谷歌考虑过开发者社区,并免费提供所有必要的工具。
在接下来的部分,我们将安装这些套件,开始在 Windows 7 上开发原生安卓应用。
Android Studio 捆绑包已经包含了安卓 SDK。让我们安装它。
-
Open your web browser and download the Android Studio bundle from http://developer.android.com/sdk/index.html.
运行下载的程序,按照安装向导进行操作。需要时,安装所有安卓组件。
然后,选择 Android Studio 的安装目录和安卓软件开发工具包(例如
C:\Android\android-studio
和C:\Android\sdk
)。 -
Launch Android Studio to ensure it is properly working. If Android Studio proposes to import settings from a previous installation, select your preferred option and click on OK.
接下来应该会出现 Android Studio 欢迎屏幕。关上它。
-
去http://developer.android.com/tools/sdk/ndk/index.html下载安卓 NDK(不是 SDK!)适合你的环境。提取您选择的目录内的档案(例如
C:\Android\ndk
)。 -
To easily access Android utilities from the command line, let's declare the Android SDK and NDK as environment variables. From now on, we will refer to these directories as
$ANDROID_SDK
and$ANDROID_NDK
.打开环境变量系统窗口,就像我们之前做的那样。在系统变量列表中,添加以下内容:
- 带有 SDK 安装目录的
ANDROID_SDK
变量(例如,C:\Android\sdk) - 带有 NDK 安装目录的
ANDROID_NDK
变量(例如,C:\Android\ndk)
前置
%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;
,全部用分号隔开,在你的PATH
环境变量的开头。 - 带有 SDK 安装目录的
-
All Windows environment variables should be imported automatically by Cygwin when launched. Open a Cygwin terminal and list the Android devices connected to your computer (even if none are currently) with
adb
to check whether SDK is working. No error should appear:adb devices
-
Check the
ndk-build
version to ensure that NDK is working. If everything works, theMake
version should appear:ndk-build -version
-
Open Android SDK Manager, located in the ADB bundle directory's root.
在打开的窗口中,点击新建选择所有软件包,然后点击安装软件包...按钮。接受出现的弹出窗口中的许可证,点击安装按钮开始安装安卓开发包。
几分钟后,所有软件包都被下载,并出现一条确认消息,表明安卓软件开发工具包管理器已经更新。
验证并关闭经理。
Android Studio 现在安装在系统上。虽然它现在是官方的安卓集成开发环境,但我们不会在整本书中大量使用它,因为它缺乏 NDK 的支持。然而,使用 Android Studio 进行 Java 开发是绝对可能的,使用命令行或 Eclipse 进行 C/C++ 开发也是绝对可能的。
安卓软件开发工具包已经通过 Android Studio 包建立。另一个解决方案是手动部署谷歌提供的独立软件开发工具包。另一方面,安卓 NDK 已经从其档案中手动部署。由于一些环境变量,SDK 和 NDK 都可以通过命令行使用。
为了获得一个功能齐全的环境,所有安卓软件包都已下载,这要归功于安卓软件开发工具包管理器,该管理器旨在管理通过软件开发工具包提供的所有平台、来源、示例和仿真功能。当新的软件开发工具包应用编程接口和组件发布时,该工具大大简化了您的环境更新。没有必要重新安装或覆盖任何东西!
然而,安卓软件开发工具包管理器不管理 NDK,这解释了为什么我们单独下载它,以及为什么你将来需要手动更新它。
安装所有安卓软件包并不是绝对必要的。只有应用所针对的 SDK 平台(可能还有谷歌 API)版本才是真正需要的。不过,安装所有软件包可以避免在导入其他项目或示例时遇到麻烦。
你的安卓开发环境的安装还没有结束。我们还需要一件事来与 NDK 舒适地发展。
这是专门介绍 Windows 安装程序的部分的结尾。以下部分专门介绍操作系统 x。
苹果电脑以简单易用著称。我必须说,当谈到安卓开发时,这句格言相当正确。事实上,作为一个基于 Unix 的系统,OS X 非常适合运行 NDK 工具链。
下一节将解释如何在苹果操作系统 X 优胜美地上设置必备软件包。
要在 OS X 用安卓 NDK 开发,我们需要设置几个先决条件:一个 JDK、开发者工具和蚂蚁。
-
A JDK is preinstalled on OS X 10.6 Snow Leopard and below. On these systems, Apple's JDK is in version 6. Since this version is deprecated, it is advised to install an up-to-date JDK 7 (or JDK 8, although it is not officially supported at the time this book is written).
另一方面,OS X 10.7 Lion 及以上版本没有默认安装 JDK。因此,安装 JDK 7 是强制性的。
为此,请从甲骨文网站下载甲骨文 JDK 7。启动
DMG
,按照安装向导进行,直到结束。检查 Java 版本以确保正确安装了 JDK。
java -version
要知道是否安装了 JDK 6,请通过转到 Mac 上的应用 | 实用程序来检查 Java Preferences.app 的位置。如果你有 JDK 7,检查你是否有系统偏好设置下的 Java 图标。
-
All Developer Tools are included in the XCode installation package (Version 5, at the time this book is written). XCode is provided on the AppStore for free. Starting from OS X 10.9, the Developer Tools package can be installed separately from a terminal prompt with the following command:
xcode-select --install
然后,从出现的弹出窗口中,选择安装。
-
To build native code with the Android NDK, whether XCode or the single Developer Tools package is installed, we need
Make
. Open a terminal prompt and check theMake
version to ensure that it correctly works:make –version
-
On OS X 10.9 and later, Ant must be installed manually. Download Ant from its website at http://ant.apache.org/bindownload.cgi and unzip its binary package in the directory of your choice (for example,
/Developer/Ant
).然后,创建或编辑文件
~/.profile
,并通过附加以下内容使 Ant 在系统路径上可用:export ANT_HOME="/Developer/Ant" export PATH=${ANT_HOME}/bin:${PATH}
从当前会话注销,然后再次登录(或重新启动计算机),并通过命令行检查 Ant 的版本来检查 Ant 是否安装正确:
ant –version
我们的 OS X 系统现已安装了托管安卓开发工具所需的软件包:
- JDK 7,它包含了在安卓系统上构建 Java 应用以及运行 Eclipse IDE 和 Ant 所必需的运行时和工具。
- 开发人员工具包,它打包各种命令行实用程序。它包括 Make,这是 Android NDK 编译系统构建本机代码所必需的。
- Ant,这是一个基于 Java 的构建自动化实用程序。虽然不是必需的,但它允许从命令行构建安卓应用,正如我们将在第 2 章、启动原生安卓项目中看到的。建立持续的集成链也是一个很好的解决方案。
下一步包括设置安卓开发套件。
安卓需要特定的开发套件来开发应用:安卓软件开发工具包和 NDK。希望谷歌考虑过开发者社区,并免费提供所有必要的工具。
在接下来的部分,我们将安装这些工具包,开始在 Mac OS X Yosemite 上开发原生安卓应用。
Android Studio 捆绑包已经包含了安卓 SDK。让我们安装它。
-
打开你的网页浏览器,从http://developer.android.com/sdk/index.html下载 Android Studio 包。
-
Run the downloaded
DMG
file. In the window that appears, drag the Android Studio icon into Applications and wait for Android Studio to be fully copied on the system. -
Run Android Studio from Launchpad.
如果出现错误 【找不到有效的 JVM】(因为 Android Studio 在启动时无法找到合适的 JRE),您可以从命令行运行 Android Studio 如下(使用合适的 JDK 路径):
export STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk open /Applications/Android\ Studio.apps
为了解决 Android Studio 的启动问题,你也可以安装苹果提供的前 JDK 6 软件包。当心!这个版本已经过时,因此不推荐使用。
如果 Android Studio 建议从以前的安装中导入设置,选择您喜欢的选项并点击确定。
在出现的下一个 设置向导画面中,选择标准安装类型并继续安装。
完成安装,直到出现 Android Studio 欢迎屏幕。然后,关闭 Android Studio。
-
去http://developer.android.com/tools/sdk/ndk/index.html下载安卓 NDK(不是 SDK!)适合您环境的归档。将其提取到您选择的目录中(例如,
~/Library/Android/ndk
)。 -
为了从命令行轻松访问安卓实用程序,让我们将安卓软件开发工具包和 NDK 声明为环境变量。从现在开始,我们将这些目录称为
$ANDROID_SDK
和$ANDROID_NDK
。假设使用默认的Bash
命令行 shell,创建或编辑.profile
(这是一个隐藏文件!)并附加以下说明(根据您的安装调整路径):export ANDROID_SDK="~/Library/Android/sdk" export ANDROID_NDK="~/Library/Android/ndk" export PATH="${ANDROID_SDK}/tools:${ANDROID_SDK}/platform-tools:${ANDROID_NDK}:${PATH}"
-
Log out from your current session and log in again (or restart your computer). List the Android devices connected to your computer (even if none currently are) with
adb
to check whether Android SDK is working. No error should appear:adb devices
-
Check the
ndk-build
version to ensure that NDK is working. If everything works, theMake
version should appear:ndk-build -version
-
Open a terminal and start the Android SDK manager with the following command:
android
在打开的窗口中,点击新建选择所有软件包,然后点击安装软件包...按钮。接受弹出窗口中的许可证,点击安装按钮开始安装所有安卓软件包。
几分钟后,所有包都被下载,并出现一条确认消息,表示安卓 SDK 管理器已经更新。
验证并关闭经理。
Android Studio 现在安装在系统上。虽然它现在是官方的安卓 IDE,但我们不会在整本书中大量使用它,因为它缺乏 NDK 的支持。然而,使用 Android Studio 进行 Java 开发是绝对可能的,使用命令行或 Eclipse 进行 C/C++ 开发也是绝对可能的。
安卓软件开发工具包是通过 Android Studio 包建立的。另一种解决方案包括手动部署谷歌提供的 SDK 独立包。另一方面,安卓 NDK 已经从其档案中手动部署。由于一些环境变量,SDK 和 NDK 都可以通过命令行获得。
谈到环境变量,OS X 很棘手。对于从终端启动的应用,可以很容易地在.profile
中声明它们,就像我们刚刚做的那样。也可以使用图形用户界面应用的environment.plist
文件来声明它们,图形用户界面应用不是从聚光灯启动的。
为了获得一个功能齐全的环境,所有安卓软件包都已下载,这要归功于安卓软件开发工具包管理器,该管理器旨在管理通过软件开发工具包提供的所有平台、来源、示例和仿真功能。当新的软件开发工具包应用编程接口和组件发布时,该工具大大简化了您的环境更新。没有必要重新安装或覆盖任何东西!
然而,安卓软件开发工具包管理器并不管理 NDK,这解释了为什么我们单独下载它,以及为什么你将来需要手动更新它。
安装所有安卓软件包并不是绝对必要的。只有应用所针对的 SDK 平台(可能还有谷歌 API)版本才是真正需要的。安装所有软件包可以避免导入其他项目或示例的麻烦。
你的安卓开发环境的安装还没有结束。我们还需要一件事来与 NDK 舒适地发展。
这是 OS X 设置部分的结尾。下一节专门介绍 Linux。
Linux 自然适合安卓开发,因为安卓工具链是基于 Linux 的。事实上,作为一个基于 Unix 的系统,Linux 非常适合运行 NDK 工具链。但是,请注意,安装软件包的命令可能会因您的 Linux 发行版而异。
下一节将解释如何在 Ubuntu 14.10 Utopic 独角兽上设置必备包。
要在 Linux 上用安卓 NDK 开发,我们需要设置几个先决条件:Glibc、Make、OpenJDK 和 Ant。
-
From Command Prompt, check whether Glibc (the GNU C standard library) 2.7 or later, usually shipped with Linux systems by default, is installed:
ldd -–version
-
Make
is also required to build native code. Install it from the build-essential package (requires administrative privilege):sudo apt-get install build-essential
运行以下命令,确保
Make
安装正确,此时显示其版本:make –version
-
On 64-bit Linux systems, install the 32-bit libraries compatibility package, as Android SDK has binaries compiled for 32 bits only. To do so on Ubuntu 13.04 and earlier, simply install the
ia32-libs
package:sudo apt-get install ia32-libs
在 Ubuntu 13.10 64 位及更高版本上,此包已被删除。因此,手动安装所需的软件包:
sudo apt-get install lib32ncurses5 lib32stdc++ 6 zlib1g:i386 libc6-i386
-
Install Java OpenJDK 7 (or JDK 8, although it is not officially supported at the time this book is written). Oracle JDK is also fine:
sudo apt-get install openjdk-7-jdk
通过运行 Java 并检查其版本,确保 JDK 安装正确:
java –version
-
Install Ant with the following command (requires administrative privilege):
sudo apt-get install ant
检查蚂蚁是否正常工作:
ant -version
我们的 Linux 系统现在已经准备好了托管安卓开发工具的必要包:
- 构建必备包,它是在 Linux 系统上编译和打包的最小工具集。它包括 Make,这是 Android NDK 编译系统构建本机代码所必需的。 GCC (也包括 GNU C 编译器)但不是必需的,因为安卓 NDK 已经包含了自己的版本。
- 64 位系统的 32 位兼容性库,因为 Android SDK 仍然使用 32 位二进制文件。
- 一个 JDK 7,它包含在安卓系统上构建 Java 应用和运行 Eclipse IDE 以及 Ant 所必需的运行时和工具。
- Ant,这是一个基于 Java 的构建自动化实用程序。虽然不是必需的,但它允许从命令行构建安卓应用,正如我们将在第 2 章、启动原生安卓项目中看到的。建立持续的集成链也是一个很好的解决方案。
下一步包括设置安卓开发套件。
安卓需要特定的开发套件来开发应用:安卓软件开发工具包和 NDK。希望谷歌考虑过开发者社区,并免费提供所有必要的工具。
在接下来的部分,我们将安装这些工具包,开始在 Ubuntu 14.10 Utopic Unicorn 上开发原生 Android 应用。
Android Studio 捆绑包已经包含了安卓 SDK。让我们安装它。
-
打开你的网络浏览器,从http://developer.android.com/sdk/index.html下载 Android Studio 包。将下载的档案提取到您选择的目录中(例如、
~/Android/Android-studio
)。 -
Run the Android Studio script
bin/studio.sh
. If Android Studio proposes to import settings from a previous installation, select your preferred option and click on OK.在接下来出现的设置 向导画面中,选择一个标准安装类型,继续安装。
完成安装,直到 Android Studio 欢迎屏幕。然后,关闭 Android Studio。
-
去http://developer.android.com/tools/sdk/ndk/index.html下载安卓 NDK(不是 SDK!)档案适合你的环境。将其提取到您选择的目录中(例如,
~/Android/Ndk
)。 -
为了从命令行轻松访问安卓实用程序,让我们将安卓软件开发工具包和 NDK 声明为环境变量。从现在开始,我们将这些目录称为
$ANDROID_SDK
和$ANDROID_NDK
。编辑你的.profile
文件(小心,因为这是一个隐藏的文件!)并在最后添加以下变量(根据您的安装目录调整它们的路径):export ANDROID_SDK="~/Android/Sdk" export ANDROID_NDK="~/Android/Ndk" export PATH="${ANDROID_SDK}/tools:${ANDROID_SDK}/platform-tools:${ANDROID_NDK}:${PATH}"
-
Log out from your current session and log in again (or restart your computer). List the Android devices connected to your computer (even if none currently are) with
adb
to check whether Android SDK is working. No error should appear:adb devices
-
Check the
ndk-build
version to ensure that NDK is working. If everything works, theMake
version should appear:ndk-build -version
-
Open a terminal and start the Android SDK manager with the following command:
android
在打开的窗口中,点击新建选择所有软件包,然后点击安装软件包...按钮。接受弹出窗口中的许可证,点击安装按钮开始安装所有安卓软件包。
几分钟长时间后,所有包都被下载,并出现一条确认消息,表明安卓 SDK 管理器已经更新。
验证并关闭经理。
Android Studio 现在已经安装在系统上了。虽然它现在是官方安卓 IDE,但我们不会在整本书中大量使用它,因为它缺乏 NDK 的支持。然而,使用 Android Studio 进行 Java 开发是绝对可能的,而命令行或 Eclipse 用于 C/C++。
安卓软件开发工具包是通过 Android Studio 包建立的。另一种解决方案是手动部署谷歌提供的 SDK 独立包。另一方面,安卓 NDK 已经从其档案中手动部署。由于一些环境变量,SDK 和 NDK 都可以通过命令行获得。
为了获得一个功能齐全的环境,所有安卓软件包都已下载,这得益于安卓 SDK 管理器,该管理器旨在管理通过 SDK 提供的所有平台、来源、示例和仿真功能。这个工具在发布新的 SDK API 和组件时,大大简化了你的环境更新。没有必要重新安装或覆盖任何东西!
然而,安卓软件开发工具包管理器并不管理 NDK,这解释了为什么我们单独下载它,以及为什么你将来需要手动更新它。
安装所有安卓软件包并不是绝对必要的。只有应用所针对的 SDK 平台(可能还有谷歌 API)版本才是真正需要的。不过,安装所有包可以避免导入其他项目或示例时的麻烦。
不安装或者安卓开发环境还没有结束。我们还需要一件事来与 NDK 舒适地发展。
这是专门介绍 Linux 设置的部分的结尾。以下部分适用于所有操作系统。
由于 Android Studio 的限制,Eclipse 仍然是最适合在 Android 上开发原生代码的 ide 之一。但是不需要使用集成开发环境;命令行爱好者或者vi
狂热者可以跳过这部分!
在下一节中,我们将看到如何设置 Eclipse。
由于最新的安卓 SDK 发布,Eclipse 及其插件(ADT 和 CDT)需要手动安装。为此,请执行以下步骤:
-
Go to http://www.eclipse.org/downloads/ and download Eclipse for Java developers. Extract the downloaded archive in the directory of your choice (for example,
C:\Android\eclipse on Windows
,~/ Android/Eclipse
on Linux, and~/Library/Android/eclipse
on Mac OS X).然后,运行 Eclipse。如果 Eclipse 在启动时要求一个工作空间(包含 Eclipse 设置和项目),定义您选择的目录或保留默认设置,然后点击确定。
当 Eclipse 加载完毕后,关闭欢迎页面。将出现以下窗口:
-
Go to Help | Install New Software…. Enter
https://dl-ssl.google.com/android/eclipse
in the Work with: field and validate. After a few seconds, a Developer Tools plugin appears. Select it and click on the Next button.如果此步骤在访问更新站点时失败,请检查您的互联网连接。您可能已断开连接,也可能在代理后连接。在后一种情况下,您可以从 ADT 网页下载 ADT 插件作为单独的档案并手动安装,或者将 Eclipse 配置为通过代理连接。
遵循向导并接受询问的条件。在向导的最后一页,点击完成安装 ADT。可能会出现警告,指示插件内容未签名。忽略它,点击确定。完成后,按照要求重新启动 Eclipse 。
-
Go back to Help | Install New Software…. Open the Work with combobox and select the item containing the Eclipse version name (here, Luna). Then, check the Show only software applicable to target environment option. Find Programming Languages in the plugin tree and unfold it. Finally, check all C/C++ plugins and click on Next.
遵循向导并接受询问的条件。在向导的最后一页,点击完成。等待安装完成,然后重新启动 Eclipse。
-
Go to Windows | Preferences... (Eclipse | Preferences... on Mac OS X) and then select Android on the left tree. If everything is fine, the SDK Location should be filled with the Android SDK path.
然后,在同一个窗口,转到安卓 | NDK 。 NDK 位置字段应为空。用安卓 NDK 路径填充并验证。如果路径错误,Eclipse 会抱怨目录无效。
Eclipse 现在已经启动并运行,具有适当的 SDK 和 NDK 配置。由于 ADT 包不再由谷歌提供,所以安卓开发插件 ADT 和 C/C++ Eclipse 插件 CDT 必须在 Eclipse 中手动安装。
请注意,Eclipse 已经被谷歌弃用,取而代之的是 Android Studio。可悲的是,Android Studio C/C++ 和 NDK 的支持目前相当有限。构建原生代码的唯一方法是通过新的安卓构建系统 Gradle,它的 NDK 特性仍然不稳定。如果一个舒适的集成开发环境对你来说是必不可少的,你仍然可以使用 Android Studio 进行 Java 开发,使用 Eclipse 进行 C/C++ 开发。
如果你在 Windows 上工作,也许你是 Visual Studio 内行。在这种情况下,我建议您如下所示的几个项目将安卓 NDK 开发带到 Visual Studio:
- 安卓++,这是 Visual Studio 的免费扩展,可以在http://android-plus-plus.com/找到。虽然这本书写的时候还在 Beta 版,但是安卓++ 看起来还是挺有希望的。
- NVidia Nsight,可以通过开发者账号从位于https://developer.nvidia.com/nvidia-nsight-tegra的 NVidia 开发者网站下载(如果你有 Tegra 设备)。它将 NDK、一个稍微定制的 Visual Studio 版本和一个不错的调试器打包在一起。
- 可以在https://github.com/gavinpugh/vs-android找到的 VS-Android 是一个有趣的开源项目,它将 NDK 工具带到了 Visual Studio。
我们的发展环境现在差不多准备好了。最后一部分是缺少的:一个运行和测试我们的应用的环境。
安卓软件开发工具包提供了一个仿真器来帮助那些想要加快部署-运行-测试周期或者想要测试不同分辨率和操作系统版本的开发人员。让我们看看如何设置它。
安卓软件开发工具包提供了我们轻松创建新模拟器安卓虚拟设备 ( AVD )所需的一切:
-
通过运行以下命令从终端打开安卓软件开发工具包管理器:T0
-
Go to Tools | Manage AVDs.... Alternatively, click on the dedicated Android Virtual Device Manager button in the main toolbar of Eclipse.
然后,点击新建按钮,创建一个新的安卓模拟器实例。用以下信息填写表格,点击确定:
-
The newly created virtual device now appears in the Android Virtual Device Manager list. Select it and click on Start....
如果在 Linux 上出现与
libGL
相关的错误,打开命令提示符,运行以下命令安装 Mesa 图形库:sudo apt-get install libgl1-mesa-dev
。 -
The Launch Options window appears. Tweak the display size depending on your screen size if needed and then click on Launch. The emulator starts up and after some time, your virtual device is loaded:
-
默认情况下,仿真器 SD 卡是只读的。虽然这是可选的,但您可以通过从提示符发出以下命令将其设置为写入模式:
adb shell su mount -o rw,remount rootfs / chmod 777 /mnt/sdcard exit
安卓模拟器可以通过安卓虚拟设备管理器轻松管理。我们现在能够在一个有代表性的环境中测试我们将要开发的应用。更好的是,我们现在可以在几种条件和分辨率下测试它们,而不需要昂贵的设备。但是,如果仿真器是有用的开发工具,请考虑仿真并不总是完美的代表性,并且缺少一些功能,尤其是硬件传感器,这些功能可以部分仿真。
安卓虚拟设备管理器并不是我们唯一可以管理模拟器的地方。我们也可以使用安卓软件开发工具包提供的命令行工具模拟器。例如,要直接从终端提示符启动之前创建的 Nexus4 模拟器,请输入以下内容:
emulator -avd Nexus4
在创建Nexus4
AVD 时,敏锐的读者可能会惊讶地看到,我们将 CPU/ABI 设置为英特尔凌动(x86),而大多数安卓设备运行在 ARM 处理器上。事实上,由于 Windows、OS X 和 Linux 都在 x86 上运行,因此只有 x86 安卓仿真器映像可以从硬件和 GPU 加速中受益。另一方面,ARM ABI 没有它可以运行得相当慢,但它可能更能代表您的应用可能运行的设备。
要利用 X86 AVD 获得全面的硬件加速,您需要在您的 Windows 或 Mac OS X 系统上安装英特尔硬件加速执行管理器 ( HAXM )。在 Linux 上,可以改为安装 KVM。只有当您的中央处理器受益于虚拟化技术时,这些程序才能工作(现在大多数情况下都是这样)。
更敏锐的读者可能会更惊讶,我们没有选择最新的安卓平台。原因很简单,不是所有安卓平台都有 x86 镜像。
快照选项允许在关闭模拟器之前保存模拟器状态。可悲的是,这种开放与 GPU 加速不兼容。你必须选择任何一个。
最后要注意的是,在有限的硬件条件下创建自动车辆检测器来测试应用时,也可以定制其他选项,如全球定位系统、摄像头等。可通过 Ctrl + F11 和 Ctrl + F12 快捷键切换屏幕方向。有关如何使用和配置模拟器的更多信息,请访问安卓网站的http://developer.android.com/tools/devices/emulator.html。
尽管仿真器可能有所帮助,但与真实设备相比,它们显然算不了什么。所以,拿着你的安卓设备,打开它,让我们试着把它连接到我们的开发平台上。根据您的制造商和电话语言,以下任何步骤可能会有所不同。因此,有关具体说明,请参考您的设备文档。
设备配置取决于您的目标操作系统。为此:
-
在操作系统上配置设备驱动程序(如果适用):
- 如果使用 Windows,开发设备的安装是特定于制造商的。更多信息可以在http://developer.android.com/tools/extras/oem-usb.html找到,有完整的设备制造商列表。如果你的安卓设备有驱动光盘,你可以使用。注意安卓 SDK 在
$ANDROID_SDK\extras\google\usb_driver
下也包含了一些 Windows 驱动。具体说明可在http://developer.android.com/sdk/win-usb.html获得谷歌开发手机、Nexus One 和 Nexus S。 - 如果你使用 OS X,简单地把你的开发设备连接到你的苹果电脑上就足够了!您的设备应该立即被识别,而无需安装任何东西。Mac 的易用性不是传说。
- 如果你是一个 Linux 用户,将你的开发设备连接到你的发行版(至少在 Ubuntu 上)应该足以让它工作!
- 如果使用 Windows,开发设备的安装是特定于制造商的。更多信息可以在http://developer.android.com/tools/extras/oem-usb.html找到,有完整的设备制造商列表。如果你的安卓设备有驱动光盘,你可以使用。注意安卓 SDK 在
-
If your mobile device runs Android 4.2 or later, from the application list screen, go to Settings | About phone and tap several times on Build Number at the end of the list. After some efforts, Developer options will magically appear in your application list screen.
在安卓 4.1 及更早版本的设备上,默认情况下开发者选项应该可见。
-
仍然在您的设备上,从应用列表屏幕,转到设置 | 开发者选项并启用调试和保持清醒。
-
Plug your device into your computer using a data connection cable. Beware! Some cables are charge-only cables and will not work for development! Depending on your device manufacturer, it may appear as a USB disk.
在安卓 4.2.2 及更高版本设备上,出现对话框允许 USB 调试?出现在手机屏幕上。选择始终允许从这台电脑永久允许调试,然后点击确定。
-
Open Command Prompt and execute the following:
adb devices
在 Linux 上,如果**?????????出现**而不是您的设备名称(很可能),则
adb
没有适当的访问权限。解决办法可能是以 root 用户身份重启adb
(风险自负!):sudo $ANDROID_SDK/platform-tools/adb kill-server sudo $ANDROID_SDK/platform-tools/adb devices
可能需要另一个解决方案来查找您的供应商标识和产品标识。厂商 ID 是每个厂商的固定值,可以在http://developer.android.com/tools/device.html的安卓开发者网站上找到(比如 HTC 就是
0bb4
)。使用lsusb
命令的结果可以找到设备的产品标识,在该命令中,我们查找供应商标识(例如,这里 0c87 是 HTC Desire 产品标识):lsusb | grep 0bb4
然后,使用 root 权限,用您的供应商标识和产品标识创建一个文件
/etc/udev/rules.d/51-android.rules
,并将文件权限更改为 644:sudo sh -c 'echo SUBSYSTEM==\"usb\", SYSFS{idVendor}==\"<Your Vendor ID>\", ATTRS{idProduct}=\"<Your Product ID>\", GROUP=\"plugdev\", MODE=\"0666\" > /etc/udev/rules.d/52-android.rules' sudo chmod 644 /etc/udev/rules.d/52-android.rules
最后,重启
udev
服务和adb
:sudo service udev restart adb kill-server adb devices
-
Launch Eclipse and open the DDMS perspective (Window | Open Perspective | Other...). If working properly, your phone should be listed in the Devices view.
Eclipse 是许多视图的组合,例如包资源管理器视图、调试视图等等。通常,它们中的大多数已经可见,但有时却不可见。在这种情况下,通过导航到窗口 | 显示视图 | 其他… 通过主菜单打开它们。Eclipse 中的视图分组在透视图中,存储工作空间布局。可以通过窗口 | 打开视角 | 其他… 打开。请注意,某些上下文菜单可能仅在某些视角下可用。
我们的安卓设备已经切换到开发模式,并通过安卓调试桥守护程序连接到我们的工作站。亚行在第一次被调用时会自动启动,无论是从 Eclipse 还是命令行。
我们还启用了保持清醒选项,在手机充电时或用它开发时停止自动关机!而且,比什么都重要的是,我们发现 HTC 的意思是高科技计算机!除了笑话,连接过程在 Linux 上可能很棘手,尽管现在应该很少遇到麻烦。
还在纠结不情愿的安卓设备?这可能意味着以下任何情况:
-
亚行出现故障。在这种情况下,请重新启动 ADB deamon 或以管理权限执行它。
-
您的开发设备工作不正常。在这种情况下,请尝试重新启动设备或禁用并重新启用开发模式。如果还是不行,那就再买一个或者使用模拟器。
-
Your host system is not properly set up. In that case, check your device manufacturer instructions carefully to make sure the necessary driver is correctly installed. Check hardware properties to see whether it is recognized and turn on USB storage mode (if applicable) to see whether it is properly detected. Please refer to your device documentation.
当仅充电模式激活时,SD 卡文件和目录对安装在您手机上的安卓应用可见,但对您的电脑不可见。另一方面,当磁盘驱动器模式被激活时,这些只能从您的计算机上看到。当应用无法访问 SD 卡上的资源文件时,请检查您的连接模式。
ADB 是一个多方面的工具,用作开发环境和设备之间的中介。它由以下部分组成:
- 在模拟器和设备上运行的后台进程,用于接收来自工作站的订单或请求。
- 工作站上的后台服务器与连接的设备和仿真器通信。列出设备时,会涉及到 ADB 服务器。调试时,涉及到 ADB 服务器。当任何与设备的通信发生时,都会涉及到 ADB 服务器!
- 在您的工作站上运行的客户端,通过 ADB 服务器与设备通信。亚行客户端是我们用来列出设备的交互工具。
亚行提供了许多有用的选项,其中一些选项如下表所示:
|命令
|
描述
|
| --- | --- |
| adb help
| 获取所有可用选项和标志的详尽帮助 |
| adb bugreport
| 要打印整个设备状态 |
| adb devices
| 列出当前连接的所有安卓设备,包括仿真器 |
| adb install [-r] <apk path>
| 安装应用包。追加-r
以重新安装已经部署的应用并保留其数据 |
| adb kill-server
| 终止亚行守护程序 |
| adb pull <device path> <local path>
| 要将文件传输到计算机 |
| adb push <local path> <device path>
| 要将文件传输到设备或模拟器 |
| adb reboot
| 以编程方式重启安卓设备 |
| adb shell
| 在安卓设备上启动 shell 会话(更多信息请参见第 2 章、启动原生安卓项目) |
| adb start-server
| 启动亚行守护程序 |
| adb wait-for-device
| 休眠,直到设备或仿真器连接到您的计算机(例如,在脚本中) |
当多个设备同时连接时,ADB 还提供可选标志来定位特定设备:
| `-s ` | 按名称定位特定设备(设备名称可在 adb 设备中找到) | | `-d` | 如果只连接了一个物理设备(或出现错误消息),则以当前物理设备为目标 | | `-e` | 如果只连接了一个仿真器(或出现错误消息),则以当前运行的仿真器为目标 |例如,要在设备同时连接时转储仿真器状态,请执行以下命令:
adb -e bugreport
这只是亚行能做什么的概述。更多信息可以在http://developer.android.com/tools/help/adb.html安卓开发者网站上找到。
设置我们的安卓开发平台有点繁琐,但希望一劳永逸!
总之,我们在系统上安装了所有的必备软件包。其中一些是特定于目标操作系统的,例如 Windows 上的 Cygwin、OS X 上的开发者工具或 Linux 上的构建必备包。然后,我们安装了 Android Studio 捆绑包,它包含 Android Studio 集成开发环境和安卓软件开发工具包。安卓 NDK 必须单独下载和安装。
即使我们在本书中不会经常使用它,Android Studio 仍然是纯 Java 开发的最佳选择之一。它保证由谷歌维护,当 NDK 的集成变得更加成熟时,它可能会成为一个很好的选择。
同时,最简单的解决方案是使用 Eclipse 进行 NDK 开发。我们用 ADT 和 CDT 插件安装了 Eclipse。这些插件很好地集成在一起。它们允许将安卓 Java 和本机 C/C++ 代码的能力结合到一个集成开发环境中。
最后,我们启动了一个安卓模拟器,并通过安卓调试桥将一个安卓设备连接到我们的开发平台。
随着安卓 NDK 的“开放”,任何人都可以构建自己的版本。克里斯塔克斯 NDK 是一个由德米特里·莫斯卡丘克打造的特殊 NDK 套装。它带来了 NDK 不支持的高级功能(最新的工具链、开箱即用的 Boost 例外情况首先得到了 CrystaxNDK 的支持)。高级用户可以在 https://www.crystax.net/en/android/ndk 的 Crystax 网站上找到。
我们现在手中有必要的工具来塑造我们的移动想法。在下一章中,我们将驯服它们来创建、编译和部署我们的第一个安卓项目!