Android 中的Gradle
来源:互联网 发布:老王python培训 编辑:程序博客网 时间:2024/06/06 15:35
翻译自stackoverflow
转载请注明
一个最基本的build.gradle 文件
这是一个默认的一个模块的build.gradle
apply plugin: 'com.android.application'android { signingConfigs { applicationName { keyAlias 'applicationName' keyPassword 'password' storeFile file('../key/applicationName.jks') storePassword 'anotherPassword' } } compileSdkVersion 24 buildToolsVersion '24.0.1' defaultConfig { applicationId 'com.company.applicationName' minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName '1.0' signingConfig signingConfigs.applicationName } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.android.support:design:24.1.1' testCompile 'junit:junit:4.12'}
DSL(domain-specific language)
在这个文件里的每一个块成为一个DSL
Plugins
第一行,apply plugin: 'com.android.application'
应用安卓插件G绕到了去构建项目,使得android {}
可以去指定安卓构建选项
android {…}
这个模块是也是一个安卓DSL,这个DSL包含了你的项目的信息。它的子模块defaultConfig
,持有了你的清单文件的默认值。你可以稍后重写它。
Dependencies
这个dependencies
指定了你的应用里想引入哪些外部的库(通常是Android库,当然了Java库也可以,比如说Gson)。Gradle会自动下载这些依赖,你只需要加上compile
当你想使用别的库。例子
`compile ‘com.android.support:design:24.1.1’
`
这一行就好像在说“给我的安卓应用加上设计支持库”。Gradle会保证这个库下载,并且可以使用。它的代码也会引入到你的app里。
如果一熟悉Maven,Maven的语法是 GroupId:ArtifactId:版本号,可以让你完全控制享用那个版本。
当然你也可以指定artifact的版本通过使用+号,但现实是最好不要这样做,因为有可能库会会更新,有些更新你可能还不知道,这就会导致问题。
注意:v7是appcompat-v7
compile 'com.android.support:appcompat-v7:24.1.1
最简单的意思就是这个库(Appcompat)在Api7以后才行。
指定不同构建方式的依赖
你可以指定一个依赖,这个依赖只能在特定的构建方式下才能用(比如debug,test或者release)。可以通过使用debugCompile, testCompile or releaseCompile而不是通用的compile
这个可以保证你的app尽可能的小,并且任何debug的信息都不能被用作去获得你app的核心信息。
签名配置
signingConfig 允许你为Gradle配置包含keystore的信息,保证在构建应用的时候会使用这些配置,然后正确的签名。
注意:不推荐在你的Gradle文件里写签名的配置。
在你的签名配置中你可以指定:
- storeFile:keystore文件
- storePassword:keystore的密码
- keyAlias:key 的别名
- keyPassword:key别名的密码
可以定义signingConfigs 块去 配置
android { signingConfigs { myConfig { storeFile file("myFile.keystore") storePassword "myPasswork" keyAlias "aKeyAlias" keyPassword "myAliasPassword" } } //....}
附录:通过示例代码深入理解Dsl
/** * 不说了,上面有 */apply plugin: 'com.android.application'/** * 在android {} block 里去配置所有构建的选项。 */android { /** * compileSdkVersion 之情了Gradle需要使用的API版本去编译你的app,这意味着你的app可以使用Api版本以及以下的功能。 * * buildToolsVersion 指定了SDK build tools的版本,命令行工具以及Gradle将会使用的编译器。你需要通过SKD Manager去下载build tools */ compileSdkVersion 23 buildToolsVersion "23.0.3" /** * 在defaultConfig {} 里包含了默认的设置和所有构建变量的实体,可以动态的重写清单文件的一些属性。,你可以为了你的不同版本去配置product flavor去重写这些值。 */ defaultConfig { /** * 应用唯一的id,在打包和发布时候会用到。你的代码应该是定义在清单文件中的包名 */ applicationId 'com.example.myapp' // 最小的版本. minSdkVersion 14 // 测试版本 targetSdkVersion 23 // 版本号 versionCode 1 // 用户看到的版本号 versionName "1.0" } /** * 在 buildTypes {} 这里你可以配置多个build type。默认的,构建系统定义了两种模式:debug和release。debug迷失不是显示的展示默认的构建参数,但包含了debugging工具和debug key。release版本应用Proguard 设置,默认没有被签名 */ buildTypes { /** * 默认的, Android Studio 配置的是release,确保代码的压缩,使用minifyEnabled,之情proguard设置文件 */ release { minifyEnabled true // 确保代码的压缩 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } /** * 在 productFlavors {} 模块 你可以配置多个productFlavors ,这个允许你可以创建不同版本的app,这些app可以分别重写 各自的defaultConfig {}。productFlavors 是可选项,编译系统不会默认的去创建他们,下面的例子创建了一个free and paid flavor。每一个 profuct flavor之情了各自的application Id,所以他们都能存在在Google Play 商店、安卓设备上。 */ productFlavors { free { applicationId 'com.example.myapp.free' } paid { applicationId 'com.example.myapp.paid' } }}/** * dependencies {} 在module层的配置只指定了这个模块所需要的依赖 */dependencies { compile project(":lib") compile 'com.android.support:appcompat-v7:24.1.0' compile fileTree(dir: 'libs', include: ['*.jar'])}
- Android 中的Gradle
- Android中的Gradle
- Android中的Gradle详解
- 理解Android中的Gradle
- Android Studio 中的 gradle 详解
- 初识Android Studio中的Gradle
- Android Studio中的Gradle介绍
- Android Studio 中的 gradle 详解
- Android Studio 中的 gradle 详解
- android中的build.gradle详解
- Android studio 中的gradle粗解
- Android gradle实用教程(一):Android studio中的gradle
- Gradle in Android Studio (3) - 项目中的Gradle
- Gradle,Groovy与Android Studio中的Gradle详解
- Android Gradle 是项目中的构建神器
- Android Gradle 中的使用maven私有仓库
- android gradle引入nexus中的jar包
- Android Studio中的Gradle相关小知识点
- Linux系统日志及日志分析
- Android context.getSystemService()浅析
- HDU 4417 Super Mario(2012杭州网络赛 H 离线线段树)
- 完美覆盖
- 折腾树莓派(一)系统安装与初始化
- Android 中的Gradle
- 【郑轻】[1841]so easy!麻麻再也不用担心我的数学了!
- stl源码剖析之空间配置器
- React-Native学习十九:组件之间的通信-1
- 五种方法交换两个整数
- 折腾树莓派(二)使用Samba进行局域网共享
- Java Executor 框架学习总结
- dagger
- linux CentOS x64 里php源码编译出错参见情况及解决办法