Android Studio的APP目录下的build.gradle的配置说明

Build.gradle属性说明:
//声明是Android程序
apply plugin:"com.android.application"   
android{
//程序在编译的时候会检查lint, 有任何错误提示都会停止build
lintOptions{
abortOnError false                    //即使报错也不会停止打包
checkReleaseBuilds false            //打包release版本的时候进行检测
}

compileSdkVersion 23                     //项目编译的SDK的版本
buildToolsVersion '23.0.2'               //打包工具的版本(aapt, dx等)

aaptOptions.ceuncherEnable = false    关闭Android studio 的PNG的合法性检查
aaptoptions.useNewCruncher = false

defaultConfig{
applicationId "com.wesley.app" //应用包名
minSdkVersion 15                    //最小支持的SDK版本 (如果手机系统的版本低于这个版本则不能运行)
targetSdkVersion 23               //目标支持的SDK版本(如果手机系统的版本等于这个版本, 则不会进行兼容性检查, 运行效率会高一点)

versionCode 1                          //程序版本 第一次是1, 以后版本更新要增加
versionName 1.0                      //版本信息, 这个可以展示给用户查看

archivesBaseName = "wesleyJar" //指定打包成jar文件时候的文件名称

ndk{
moduleName "wesleyNdk"                                          //设置库(so)的名称
IdLibs "log", "z", "m", "jnigraphics", "android"              //引入库 比如要用到的_Android_log_print
abiFilters "armeabi", "x86", "armeabi-v7a"                  //显示支持的ABIs
cFlags "-std=c++11 -fexceptions"                                //C++11
stl "gnustl_static"                                                      
}

multiDexEnabled true                                                     //当方法数超过65535(方法索引使用的一个short值, 最大是65535)的时候允许打包成多个dex文件.

}

//默认的一些文件路径的配置
sourceSets{
main{
assets.srcDirs = ['assets']               //资源文件
jni.srcDirs 'src/main/jni'                //jni文件
jniLibs.srcDir 'src/main/jniLibs'      //jni库
}
}

//multiDex 的一些相关配置, 这样配置可以让你的编译速度更快
dexOptions{
preDexLibraries = false          //让它不要对Lib做preDexing
increamental true                   //开启increamental dexing, 优化编译效率, 这个功能Android studio默认是关闭的
javaMaxHeapSize  "4g"          //增加java堆内存大小
}

//签名配置
signingConfigs{
release{                                           //发布签名版本(正式版本, 上线使用)
storeFile file("fk.keystore")      //密钥文件路径
storePassword "123456"          //密钥文件密码
keyAlias "fk"                            //key别名
keyPassword "123456"             //key密码
}

debug{                                            //debug签名版本(测试使用)
storeFile file("fk.keystore")
storePassword "123456"
keyAlias "fk"
keyPassword "123456"
}
}

//指定生成安装文件的配置, release和debug两个版本, 直接运行的都是debug版本
buildTypes{
release{                                                                                                  //Release版本的配置
zipAlignEnabled true                      //是否支持zip                                                                                             
shrinkResources true                     //移除无用的resource文件
minifyEnabled true                        //是否进行混淆
//proguard-android.txt是所有项目通用的混淆规则, proguard-rules.pro是当前项目的混淆规则. release的proguard默认为Module下的proguard-rules.pro文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
debuggable true                            //是否支持调试

//ndk的一些配置
ndk{
//cFlags "-std=c++11 -fexceptions -g -D _DEBUG_"
//platformVersion = "19"
moduleName "wesleySo"                                          //设置so库的名称
IdLibs "log", "z", "m", "jnigraphics", "android"            //引入库 比如要用到的_Android_log_print
abiFilters "armeabi", "x86", "armeabi-v7a"                //显示支持的ABIS
cFlags "-std=c++11 -fexceptions"                              //C++11
stl "gnustl_static"
}

//采用动态替换字符串的方式生成不同的release.apk
applicationVariants.all{ variant ->
variant.outputs.each{ output ->
def outputFile = output.outputFile
if(outputFile != null && outputFile.name.endsWith('release.apk')){
def timeStamp = new Data().format('yyyyMMddHH');
def fileName = "wesley-${defaultConfig.versionName}" + "_" + timeStamp + "-lj" + ".apk";
output.outputFile = file("{$outputFile.parent}/${fileName}")
}
}
}
jniDebuggable false            //关闭jni调试
}

debug{                                                                                        //Debug版本配置
minifyEnabled false          
zipAlignEnabled true
shrinkResources true             //移除无用的resources文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable true
//jniDebuggable true
ndk{
cFlags "-std=c++11 -fexceptions -g -D _DEBUG_"
}
jniDebuggable true
}
}

/**
  * 在这里你可以进行java版本的配置, 一致使用对应版本的新的特性
  */
compileOptions{
}

/**
  * 在这里可以设置你的产品发布的一些东西, 
  * 比如你的应用要发不到不同的渠道, 且不同渠道的包名是不同的, 那么可以在这里进行设置, 
  * 甚至可以设置不同的 AndroidManifest.xml文件
  */
productFlavors{
xiaopao{}

googlePay{}

solo{}
}

/**
  * 所谓productFlavors其实即使可定义的产品特性
  * 配合manifest merger 使用的时候可以达成在一次编译过程中产生多个具有自己特性的配置版本
  * 上面这个配置的作用就是为每个渠道产生不同的UMENG_CHANNEL_VALUE的值
  */
productFlavors.all{
flavor -> flavor.manifestPlaceHolders = [UMENG_CHANNEL_VALUE:name]
}
}

/**
   * 指定当前项目的所有依赖关系: 本地依赖, 库依赖, 远程依赖
   * 本地依赖: 可以对本地jar包或目录添加依赖
   * 库依赖: 可以对项目中的库模块添加依赖关系
   * 远程依赖: 可以对jcenter库上的开源项目添加依赖
   * 标准的远程依赖格式是: 域名:组织名:版本号
   */
dependencies{
compile project(':eventbuslib')                                  //引用当前目录下的Android-library项目, 'eventbuslib'为项目的名称, 注意":" 一定要有
compile 'com.android.support:appcompat-v7:23.4.0'   //配置远程仓库中的jar包, 打包时, 检查本地没有则下载到本地,目录是: 项目名/build/intermediates/exploded-arr/
compile fileTree(dir: 'libs', include: '*.jar')                //加载本地目录下的jar包
compile fileTree(dir: 'libs/armeabi', include: '*/so')   //加载本地目录下的so库, 版本大于2.4的gradle可使用, 低版本添加.so
compile files('libs/android-support-v4.jar')               //直接指定依赖的包, 地址是当前工程为根目录
}

//声明是要使用google的服务框架
apply plugin: 'com.google.gms.google-services'

//第三方依赖库的本地缓存路径
task showMeCache << {
configurations.compile.each {println it}
}

/**
   * 使用Maven仓库, Android有两个标准的library文件服务器, 一个是jcenter, 一个是maven, 两者毫无关系
   * jcenter有的maven可能没有, 反之亦然
   * 如果要使用jcenter的话就把mavenCentral()替换成jcenter()
   */
repositories{
mavenCentral();
}

猜你喜欢

转载自blog.csdn.net/andcisco/article/details/79992800