# Manifest 属性
通过 DSL 可以配置以下 manifest 属性:
- minSdkVersion
- targetSdkVersion
- versionCode
- versionName
- applicationId(有效的包名--查看 [ApplicationId 与 PackageName](#) 了解更多信息)
- testApplicationId(测试应用的包名)
- testInstrumentationRunner(Instrumentation 的 test runner)
例子:
~~~
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
versionCode 12
versionName "2.0"
minSdkVersion 16
targetSdkVersion 16
}
}
~~~
在 **android** 元素中的 **defaultConfig** 定义了所有的配置。
Android Plugin 的早期版本使用`packageName`来配置 manifest 的 `packageName` 属性。从 0.11.0 版本开始,你应该在 `build.gradle` 中使用 `applicationId` 来配置 manifest 的 `packageName` 属性。这是为了消除应用程序的 packageName(程序的 ID )和 java 包名所引起的歧义。
在构建文件中定义的强大之处在于它是动态的。 例如,可以从一个文件中或者其它自定义的逻辑代码中读取版本信息:
~~~
def computeVersionName() {
...
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
versionCode 12
versionName computeVersionName()
minSdkVersion 16
targetSdkVersion 16
}
}
~~~
> 注意: 不要使用在给定范围内同名的 getter 方法,否则可能引起冲突。例如,在 `defaultConfig{...}` 中调用 `getVersionName()` 将会自动调用 defaultConfig.getVersionName() 方法,你自定义的 getVersionName() 方法就不会被调用。
如果没有使用 DSL 来设置属性的值,则会使用默认的属性值。下表是可能用到的值:
| 属性名 | 在 DSL 对象中的默认值 | 默认值 |
|-----|-----|-----|
| **versionCode** | -1 | 从 manifest 中读取 |
| **versionName** | null | 从 manifest 中读取 |
| **minSdkVersion** | -1 | 从 manifest 中读取 |
| **targetSdkVersion** | -1 | 从 manifest 中读取 |
| **applicationId** | null | 从 manifest 中读取 |
| **testApplicationId** | null | applicationId + “.test” |
| **testInstrumentationRunner** | null | android.test.InstrumentationTestRunner |
| **signingConfig** | null | null |
| **proguardFile** | N/A (set only) | N/A (set only) |
| **proguardFiles** | N/A (set only) | N/A (set only) |
如果你在构建脚本中使用代码获取这些属性,那么第二列的值将非常重要。例如,你可能会写:
~~~
if (android.defaultConfig.testInstrumentationRunner == null) {
// assign a better default...
}
~~~
如果值一直为 `null`,那么在构建的时候将被替换成第 3 列的默认值,但是在 DSL 中没有包含该值,所以你无法查询到该值。除非真的有必要去设置属性的值,否则错误的值可能会阻碍 Gradle 解析应用的 manifest 文件。
- 译者序
- 简介
- 新构建系统的目标
- 为什么使用 Gradle?
- 配置要求
- 基础项目
- 构建文件示例
- 项目结构
- 配置项目结构
- 构建任务
- 通用任务
- Java 项目的 Task
- Android Tasks
- 基本的构建定制
- Manifest 属性
- 构建类型
- 签名配置
- 运行 ProGuard
- 清理资源
- 依赖、Library 和多项目
- 包依赖
- 本地包依赖
- 远程包依赖
- 多项目设置
- Library 项目
- 创建 Library 项目
- 普通项目和 Library 项目的区别
- 引用 Library 项目
- Library 项目发布
- 测试
- 单元测试
- 基本知识和配置
- 运行测试
- 测试 Android Library 项目
- 测试报告
- 独立项目
- 多项目报告
- Lint 支持
- 构建 Variants(变种)版本
- 产品定制
- 构建类型+产品定制=构建变种版本
- 产品定制的配置
- 源组件和依赖
- 构建和任务
- 测试
- 多定制的变种版本
- 高级构建的自定义
- 构建选项
- Java 编译选项
- aapt 选项
- dex 选项
- 操作 task
- 构建类型和产物定制的属性引用
- 使用sourceCompatibility 1.7
- 附录
- ApplicationId 与 packageName