本文假定已下载并配置好android tools和gradle
查看所有android build target,如果有必要下载新的
使用如下命令查看targets:
~$ android list target
输出结果如下:
Available Android targets:
----------
id: 1 or "android-15"
Name: Android 4.0.3
Type: Platform
API level: 15
Revision: 5
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800
Tag/ABIs : no ABIs.
----------
id: 2 or "android-19"
Name: Android 4.4.2
Type: Platform
API level: 19
Revision: 4
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: 3 or "android-20"
Name: Android 4.4W.2
Type: Platform
API level: 20
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: 4 or "android-21"
Name: Android 5.0.1
Type: Platform
API level: 21
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : default/armeabi-v7a
----------
id: 5 or "android-22"
Name: Android 5.1.1
Type: Platform
API level: 22
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: 6 or "Google Inc.:Google APIs:21"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 1
Description: Android + Google APIs
Based on Android 5.0.1 (API level 21)
Libraries:
* com.android.future.usb.accessory (usb.jar)
API for USB Accessories
* com.google.android.media.effects (effects.jar)
Collection of video effects
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : google_apis/x86
targets代表了编译android项目代码,以及生成应用包目标运行环境。我们这里主要看type为“platform”的target。下面对target中的各个字段进行解释:
id: 区别target的唯一标识,创建android应用项目时需要指定,当然在开发过程中也可以随时更改,所以如果指定错误也不用担心。至于如何指定和更改,后文会做详细介绍。id的值可以是一个整数也可以是一个字符串,这个可根据自己的习惯来选择使用。
Name: 当前的target的描述性名称,对于type为platform的target来说,一般是“Android ”的格式。
Type: 代表当前target的类型,常见的有“Platform”, “Add-On”等。
API Level: 这个比较重要,它代表当前target的对应的运行环境的api level,虽然最终的应用可能运行在其他的level环境,但当前选定的target api level一般代表的最佳的运行环境。另外,一般来说它也是编译和测试的对应的主要api level。
Revision: 代表当前target的修订版本。
Skins: 代表当前target包含的针对一些屏幕分辨率的皮肤资源,这些皮肤资源并不是给应用运行用的,而是给android avd用的。这些资源的存放路径为:/platforms/android-/skins。比如我们创建屏幕分辨率为WVGA800的avd,然后将对应的skins目录下的button.png和key.png互换,运行时的效果如下:
关于各个分辨率的对应关系如下:
名称 | 分辨率 |
---|---|
QVGA | 240 * 320 |
WQVGA400 | 240 * 400 |
WQVGA432 | 240 * 432 |
FWQVGA | 240 * 432 |
HVGA | 320 * 480 |
WVGA800 | 480 * 800 |
WVGA854 | 480 * 854 |
FWVGA | 480 * 854 |
WXGA | 1280 * 800 |
Tag/ABIs: 代表当前target的对应的具有特定abi的系统镜像,需要通过android sdk manager 单独下载,这是创建avd必须的。如下图中的System image即为各个ABIs:
如果如上列表中并没有自己想要的版本,可以通过如下命令打开android sdk manager下载新的:
~$ android
创建应用
在合适的位置创建一个项目根目录并cd到该目录下,这里假定是”LearnStartup”。然后执行如下命令创建项目:
android create project -k com.zhanglong.test -p . -n LearnStartup -a MainActivity -g -v 2.3 -t 5
各个参数以及其他参数解释如下:
Usage:
android [global options] create project [action options]
Global options:
-s --silent : Silent mode, shows errors only.
-v --verbose : Verbose mode, shows errors, warnings and all messages.
--clear-cache: Clear the SDK Manager repository manifest cache.
-h --help : Help on a specific command.
Action "create project":
Creates a new Android project.
Options:
-n --name : Project name.
-a --activity : Name of the default Activity that is created.
[required]
-k --package : Android package name for the application. [required]
-v --gradle-version: Gradle Android plugin version.
-t --target : Target ID of the new project. [required]
-g --gradle : Use gradle template.
-p --path : The new project's directory. [required]
执行成功后生成的目录文件结构如下:
LearnStartup
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── src
├── androidTest
│ └── java
│ └── com
│ └── zhanglong
│ └── test
│ └── MainActivityTest.java
└── main
├── AndroidManifest.xml
├── java
│ └── com
│ └── zhanglong
│ └── test
│ └── MainActivity.java
└── res
├── drawable-hdpi
│ └── ic_launcher.png
├── drawable-ldpi
│ └── ic_launcher.png
├── drawable-mdpi
│ └── ic_launcher.png
├── drawable-xhdpi
│ └── ic_launcher.png
├── layout
│ └── main.xml
└── values
└── strings.xml
各个重点的目录和文件介绍如下:
build.gradle文件: 这个是真个项目的gradle编译脚本,是必须的。
gradle目录:这个是gradle脚本执行时自身需要的一些缓存,非必须。
gradlew文件和gradlew.bat文件:分别对应于类linux系统和windows系统的对于gradle软件的一个简单封装,这两个命令会根据需要自动下载必要的gradle软件,并且可以接收对应参数执行项目的编译。所以对于不像手动安装gradle的开发组来说,这两个命令可以简化gradle环境配置。非必须。
local.properties: 这个保存了本地环境的一些关于android sdk的配置信息,注意,这个文件不应该加入到版本控制中。如果没有或者删除该文件,那么需要配置ANDROID_HOME环境变量才能工作。
src目录:项目的主题源代码。
这里因为我们只使用本地自己安装的gradle,所以删除”gradle”,gradlew,gradlew.bat,实际生产环境中建议保留。
这个命令已经为我们生了一个类似”hello world”的界面,整个project实际上已经是个可编译运行的项目。
build并运行debug版
在项目的根目录(即build.gradle文件所在的目录)下执行如下gradle命令:
~$ gradle build
该命令会根据需要自动下载依赖的包,并执行编译和打包,并将生成的结果放到build目录下。如果build目录不存在,会自动创建。
build目录下outputs目录存放apk文件,lint结果等。
如果没有修改过“~/.android/debug.keystore”文件,那么此命令生成的apk几位debug版,可通过如下命令安装(假定手机已经连接上电脑):
~$ gradle installDebug
执行完后,应用安装成功,可以再手机或模拟器中打开。