Gradle - Manifest

简介:

Manifest

DSL提供了配置以下Manifest条目的功能:

minSdkVersion / targetSdkVersion / versionCode / versionName / applicationId / Instrumentation test runner

android {  
    compileSdkVersion 19  
    buildToolsVersion "19.0.0"  
  
  
    defaultConfig {  
        versionCode 12  
        versionName "2.0"  
        minSdkVersion 16  
        targetSdkVersion 16  
    }  
}  

android元素中的defaultConfig元素就是我们用来配置Manifest的地方。早期版本的Android插件使用packageName来配置manifest中的packageName属性,从0.11.0开始,使用applicationId来代替packageName。这样可以消除应用的包名(其实就是应用的id)和java的包名之间的混淆。

更强大的是build文件中描述的配置可以是动态的,比如可以从文件或者自定义的逻辑中获取版本名称。

def computeVersionName() {  
    ...  
}  
  
  
android {  
    compileSdkVersion 19  
    buildToolsVersion "19.0.0"  
  
  
    defaultConfig {  
        versionCode 12  
        versionName computeVersionName()  
        minSdkVersion 16  
        targetSdkVersion 16  
    }  
}  

注意:不要使用作用域中的getter方法名作为函数名,比如在defaultConfig{}作用域中调用getVersionName()将会自动调用defaultConfig.getVersionName(),而不会调用自定义的方法。

如果某个属性的值没有使用DSL设置,这个属性将会使用某些默认值,下表展示了默认值的处理过程。

属性名 DSL对象中的默认值 默认值
versionCode -1 value from manifest if present
versionName null value from manifest if present
minSdkVersion -1 value from manifest if present
targetSdkVersion -1 value from manifest if present
applicationId null value from manifest if present
testApplicationId null applicationId + “.test”
testInstrumentationRunner null android.test.InstrumentationTestRunner
signingConfig null null

如果你想在build脚本中使用自定义的逻辑来查询这些属性,第二列中的值就很重要。比如,你可以编写如下的代码:

if (android.defaultConfig.testInstrumentationRunner == null) {  
    // assign a better default...  
} 

如果属性的值仍然是null,那么在构建的时候,就会使用第三列的默认值,但是DSL元素中并不包含这些默认值,因此你不能在程序中查询这些值。这样做的目的是仅在必要的时候(构建时)才会去解析manifest内容。

我是天王盖地虎的分割线




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4821176.html,如需转载请自行联系原作者

相关文章
|
21天前
|
缓存 Java API
build.gradle文件介绍,gradle版本对应
build.gradle文件介绍,gradle版本对应
29 0
|
5月前
|
Java API Maven
Gradle使用总结
Gradle使用总结
112 0
|
9月前
|
缓存 Java Maven
gradle
Gradle 是一个现代化的构建工具,它可以帮助开发人员管理项目依赖、构建项目、运行测试、打包和部署项目等。与 Maven 类似,Gradle 也是一种基于约定的构建系统,它不仅可以管理 Java 项目,还可以管理 Android 应用程序、Kotlin 项目、Groovy 项目等。
983 1
|
前端开发 Java Maven
Gradle build.gradle 文件
Gradle build.gradle 文件
Gradle build.gradle 文件
|
XML 缓存 Java
Android项目中的build.gradle文件
Android项目中的build.gradle文件
366 0
Gradle Avoiding traps
Groovy script variables 4. Groovy 脚本变量 对于 Groovy DSL 的用户来说,了解 Groovy 如何处理脚本变量非常重要。 有两种类型的脚本变量。 一个具有本地作用域,另一个具有脚本范围。 Example: Variables scope: local and script wide 示例: 变量范围: 本地范围和脚本范围 scope.groovy String localScope1 = 'localScope1' def localScope2 = 'localScope2' scriptScope = 'scriptScope' println
100 0
|
Java Android开发
gradle配置 flavor和buildType小结
gradle配置 flavor和buildType小结
5751 0
|
XML 数据格式 Windows
什么是 .manifest 文件
恩,为了大家都能很方便的理解,我将尽量简单通俗地进行描述。[现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不正确,请重新安装程序……或者是MSVCR80D.dll 没有找到什么的(我记得不是很清楚,不过大致是这样的)[分析]看到这样的提示,当然不会傻到重装咯。
1834 0