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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章