android studio build.gradle配置
2017-05-11 10:24
357 查看
直接看代码:
apply plugin: 'com.android.application' // 声明是Android程序 //apply plugin: 'com.android.library'// 声明是Library程序 def buildingDay(){ return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC")) } android { compileSdkVersion 25 //编译SDK buildToolsVersion "25.0.0" //build tools版本 // /* 关闭Android Studio的PNG合法性检查*/ aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig { applicationId "com.ai.cwf.timer"// 应用的包名 minSdkVersion 11//兼容最小SDK targetSdkVersion 25//最高SDK versionCode 1//软件内部版本号 versionName "1.0"//版本名称 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true //开启多个dex,解决一部分方法超过65536问题 //必须添加,否则会报错 //flavorDimensions "versionCode" flavorDimensions "default" } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } //不同编译类型设置 buildTypes { debug { debuggable true minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' manifestPlaceholders = [keyone: "12345678", keytow: "00000"] buildConfigField "String", "name", '\"this shi a string\"' buildConfigField "String", "ip", '\"192.168.100.10\"' } release { //是否开启代码debug debuggable false // 是否进行混淆 minifyEnabled true // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // AndroidManifest.xml 可使用的配置参数 /* 例: <meta-data android:name="key" android:value="${keyone}"/>*/ manifestPlaceholders = [keyone: "12345678", keytow: "00000"] // 代码中可使用的参数 /* 例: BuildConfig.name*/ buildConfigField "String", "name", '\"this shi a string\"' buildConfigField "String", "ip", '\"192.168.100.10\"' } } //签名设置 设置后可通过选择编译版本,直接run,生成用对于key签名的APK signingConfigs { debug { storeFile file("debug.keystore") storePassword "debug" keyAlias "debug" keyPassword "debug" } //gradle assembleRelease release { storeFile file("test.keystore") storePassword "test" keyAlias "test" keyPassword "test" v1SigningEnabled true // jar sign v2SigningEnabled true // full apk sign 是针对7.0以后应用的优化 } } // 移除lint检查的error // 用gradle build命令时,经常由于lint错误终止,这些错误又经常是第三方库中的,我们可以跳过这些错误,继续编译 lintOptions { abortOnError false } //一个实验性的功能 优化编译速度 AS默认关闭 dexOptions { //开启缓存 incremental true //缓存大小 javaMaxHeapSize "4g" } sourceSets { /*加入这个可使老的eclipse格式的项目直接在AS中运行*/ main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] jniLibs.srcDirs = ['src/main/jniLibs'] jni.srcDirs = [] //不自动编译JNI目录,使用ndk-build手动编译 } /* 名称.root:产品不同的配置信息, 在编译和打包的时候可供选择 名称对应productFlavors中的配置,也可以不配置,直接在src下有对应productFlavors名称命名的目录也可以,如存在src/qq目录 'src/main' : 产品不同资源的目录,使用相同名称、字符等,可以直接更改为不同的资源*/ qq.root 'src/main' wexi.root 'src/main' } //不同产品个性化配置 productFlavors { qq { manifestPlaceholders = [keyone: "qq1234", keytow: "qq"] buildConfigField "String", "ip", '\"192.168.100.22\"' dimension "default" } wexi { manifestPlaceholders = [keyone: "qq1234", keytow: "wexi"] buildConfigField "String", "ip", '\"192.168.100.33\"' } } repositories { flatDir { //设置本地.aar文件目录 dirs 'libs' //this } } // 修改编译生成app名称 task changeApkName() { android.applicationVariants.all { variant -> variant.outputs.all { if (outputFileName.endsWith('.apk')) { //最终生成的文件为app_release/debug + flavor名称 + versionName + versionCode + 当前编译日期 def fileName = "app_release_${variant.productFlavors[0].name}_v${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_${buildingDay()}.apk" if (outputFileName.contains("-debug")) { fileName = "app_debug_${variant.productFlavors[0].name}_v${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_${buildingDay()}.apk" } outputFileName = fileName } } } } } dependencies { // 编译libs目录下的所有jar包 compile fileTree(include: ['*.jar'], dir: 'libs') //test环境 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12' // 第三方开源库 compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' //额外的本地库 compile project(':mylibrary') //额外的本地aar文件,lib编译获取,可以减少编译时间 compile(name: 'mylibrary-release', ext: 'aar') }设置不同产品后,可在Build Variants中看到下图界面,选择不同的版本就能使用不同的资源
Gradle的官网: http://gradle.org/
文档位置:https://docs.gradle.org/current/release-notes掌握大体流程,然后根据SDK+API来完成的参考文章: http://www.cnblogs.com/davenkin/p/gradle-learning-1.html maven学习: http://www.cnblogs.com/davenkin/p/advanced-maven-multi-module-vs-inheritance.html重要概念:闭包class中的变量可以直接设置和读取,实际 gradle为每个变成创建了get和set方法class GroovyBeanExample { private String name } def bean = new GroovyBeanExample() bean.name = 'this is name' println bean.name
动态设置参数
task showCommandLieProperties << {println property3}
可以通过-P 在cmd设置Property
gradle -P property3="this is ha ha ha" showCommandLieProperties
可以通过-D在cmd设置整个project的Property
gradle -D org.gradle.project.property3="this is another property3" showCommandLieProperties通过环境变量设置Property
export ORG_GRADLE_PROJECT_property3="this is yet another property3"
gradle showCommandLieProperties
相关文章推荐
- android studio build.gradle配置文件详解
- Android开发之深入理解Android Studio构建文件build.gradle配置
- Android开发之深入理解Android Studio构建文件build.gradle配置
- Android开发之深入理解Android Studio构建文件build.gradle配置
- Android Studio Build.gradle详细配置说明
- Android studio build.gradle配置,debug下使用正式签名,重命名apk
- Android开发之深入理解Android Studio构建文件build.gradle配置
- AndroidStudio1.4创建项目的build.gradle(Module:app)中的配置
- Android开发之深入理解Android Studio构建文件build.gradle配置
- 深入理解Android Studio构建文件build.gradle配置
- Android studio 通过build.gradle 配置打包签名文件,生成 xxx.apk
- Android Studio builde.gradle 配置说明
- android studio build.gradle怎么配置
- Android开发之深入理解Android Studio构建文件build.gradle配置
- android studio build.gradle 中的dependencies 的 compile jar文件
- Android studio bulid.gradle 配置
- android android studio使用教程(五)gradle环境配置
- android-studio的gradle plugin配置相关的一些记录
- Android Studio Gradle Build Running 特别慢的问题
- Error -1Cause: org/gradle/api/publication/maven/internal Android studio配置android-maven-gradle-plugin