您的位置:首页 > 产品设计 > UI/UE

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中看到下图界面,选择不同的版本就能使用不同的资源下面简单介绍下gralde使用Croovy语言来实现  http://www.groovy-lang.org/api.html类似 Maven

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息