build.gradle文件詳解<三>
阿新 • • 發佈:2017-09-14
服務器 mea target rule ttr github -1 ply dot
參考:http://blog.csdn.net/baidu_31093133/article/details/51860637
- build.gradle配置參數詳解
- //聲明是Android程序
- apply plugin: ‘com.android.application‘
- android {
- //程序在編譯的時候會檢查lint,有任何錯誤提示會停止build,我們可以關閉這個開關
- lintOptions {
- abortOnError false
- //即使報錯也不會停止打包
- checkReleaseBuilds false
- //打包release版本的時候進行檢測
- }
- compileSdkVersion 23
- //編譯sdk的版本,也就是API Level,例如API-19、API-20、API-21等等。
- buildToolsVersion ‘23.0.2‘
- //build tools的版本,其中包括了打包工具aapt、dx等等。
- //這個工具的目錄位於你的sdk目錄/build-tools/下
- aaptOptions.cruncherEnabled = false
- aaptOptions.useNewCruncher = false
- //關閉Android Studio的PNG合法性檢查的
- defaultConfig {
- applicationId "com.xiaopao.activity"
- //應用包名
- minSdkVersion 15
- //最小sdk版本,如果設備小於這個版本或者大於
- //maxSdkVersion(一般不用)將無法安裝這個應用
- targetSdkVersion 22
- //目標sdk版本,如果設備等於這個版本那麽android平臺
- //就不進行兼容性檢查,運行效率會高一點
- versionCode 15
- //版本更新了幾次,第一版應用是1,以後每更新一次加1
- versionName ‘1.411‘
- //版本信息,這個會顯示給用戶,就是用戶看到的版本號
- archivesBaseName = "weshare-$versionName"
- //指定打包成Jar文件時候的文件名稱
- ndk {
- moduleName "xiaopaowifisafe" //設置庫(so)文件名稱
- ldLibs "log", "z", "m", "jnigraphics", "android"
- //引入庫,比如要用到的__android_log_print
- abiFilters "armeabi", "x86", "armeabi-v7a" //, "x86" 顯示指定支持的ABIs
- cFlags "-std=c11 -fexceptions" // C11
- stl "gnustl_static"
- }
- multiDexEnabled true
- //當方法數超過65535(方法的索引使用的是一個short值,
- //而short最大值是65535)的時候允許打包成多個dex文件,動態加載dex。這裏面坑很深啊
- }
- //默認的一些文件路徑的配置
- sourceSets {
- main {
- assets.srcDirs = [‘assets‘] //資源文件
- jni.srcDirs ‘src/main/jni‘ //jni文件
- jniLibs.srcDir ‘src/main/jniLibs‘ //jni庫
- }
- }
- //multiDex的一些相關配置,這樣配置可以讓你的編譯速度更快
- dexOptions {
- preDexLibraries = false
- //讓它不要對Lib做preDexing
- incremental true
- //開啟incremental dexing,優化編譯效率,這個功能android studio默認是關閉的。
- javaMaxHeapSize "4g" //增加java堆內存大小
- }
- buildTypes {
- release { //release版本的配置
- zipAlignEnabled true //是否支持zip
- shrinkResources true // 移除無用的resource文件
- minifyEnabled true //是否進行混淆
- proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
- //release的Proguard默認為Module下的proguard-rules.pro文件.
- debuggable false //是否支持調試
- //ndk的一些配置
- ndk {
- // cFlags "-std=c11 -fexceptions -O3 -D__RELEASE__" // C11
- // platformVersion = "19"
- moduleName "xiaopaowifisafe" //設置庫(so)文件名稱
- ldLibs "log", "z", "m", "jnigraphics", "android"
- //引入庫,比如要用到的__android_log_print
- abiFilters "armeabi", "x86", "armeabi-v7a"//, "x86"
- cFlags "-std=c11 -fexceptions" // C11
- 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 Date().format(‘yyyyMMddHH‘);
- def fileName = "WeShare-${defaultConfig.versionName}" + "-" + timeStamp + "-lj-" + ".apk";
- output.outputFile = file("${outputFile.parent}/${fileName}")
- }
- }
- }
- jniDebuggable false //關閉jni調試
- }
- debug {//debug版本的配置
- minifyEnabled false
- zipAlignEnabled true
- shrinkResources true // 移除無用的resource文件
- proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
- debuggable true
- // jniDebuggable true
- ndk {
- cFlags "-std=c11 -fexceptions -g -D DEBUG" // C11
- }
- jniDebuggable true
- }
- }
- compileOptions {
- //在這裏你可以進行 Java 的版本配置,
- //以便使用對應版本的一些新特性
- }
- productFlavors {
- //在這裏你可以設置你的產品發布的一些東西,
- //比如你現在一共軟件需要發布到不同渠道,
- //且不同渠道中的包名不同,那麽可以在此進行配置;
- //甚至可以設置不同的 AndroidManifest.xml 文件。
- xiaopao {
- }
- googlePlay {
- }
- solo {
- }
- }
- productFlavors.all {
- flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
- }
- //所謂ProductFlavors其實就是可定義的產品特性,
- //配合 manifest merger 使用的時候就可以達成在一次編譯
- //過程中產生多個具有自己特性配置的版本。
- //上面這個配置的作用就是,為每個渠道包產生不同的 UMENG_CHANNEL_VALUE 的值。
- }
- //一些依賴的框架
- dependencies {
- compile ‘com.jakewharton:butterknife:7.0.1‘
- compile ‘com.android.support:appcompat-v7:23.4.0‘
- compile ‘com.android.support:support-v4:23.4.0‘
- compile ‘com.github.pwittchen:reactivenetwork:0.1.3‘
- compile ‘de.hdodenhof:circleimageview:2.0.0‘
- compile ‘com.android.support:design:23.4.0‘
- compile ‘pl.tajchert:waitingdots:0.2.0‘
- }
- //聲明是要使用谷歌服務框架
- 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()
- }
build.gradle文件詳解<三>