关于Android Studio里的Gradle文件
生活随笔
收集整理的這篇文章主要介紹了
关于Android Studio里的Gradle文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// 聲明是Android程序
//apply plugin是最新gradle版本的寫法,以前的寫法是apply plugin: 'android', 如果還是以前的寫法,請改正過來
apply plugin: 'com.android.application'
//自定義函數 用于在打包時 命名APK 生成當前日期字符串
def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
} android { //說明要運行該源碼,你必選已經安裝了android API 23 compileSdkVersion 23 // 說明要運行該源碼,你必須已經安裝了 android sdk build-tools 23.0.3 buildToolsVersion "23.0.3" //動態的在build時配置AndroidManifest.xml里的項目 // defaultConfig里的配置可以覆蓋manifest里的配置 defaultConfig { applicationId "test.com.yu" //表示向下低至android API 14,即androd 4.0和4.0以上的版本都可以運行該工程 minSdkVersion 14 //表示采用的目標android API是 API 23即 android 5.0 targetSdkVersion 23 versionCode 1 versionName "1.0" //dex突破65535的限制 突破64k需要的設置 //需要compile 'com.android.support:multidex:' //需要Application中相關配置 multiDexEnabled true // 默認是umeng的渠道 UMENG_CHANNEL_VALUE需要與AndroidManifest中的對應位置的命名一致 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"] } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } //簽名文件配置 signingConfigs { debug { // No debug config //storeFile file("C:/Users/Administrator/.android/debug.keystore") } release { storeFile file("../yourapp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } } //配置如何構建和打包你的App,默認有debug和release兩個類型。 // debug類型包含調試時的信息,并且有debug key簽名。release默認是不含簽名的 buildTypes { //調試版本 debug { // 顯示Log buildConfigField "boolean", "LOG_DEBUG", "true" //混淆配置 minifyEnabled false signingConfig signingConfigs.debug versionNameSuffix "-debug" zipAlignEnabled false shrinkResources false } //發布版本 release { // 不顯示Log buildConfigField "boolean", "LOG_DEBUG", "false" /*是否開啟混淆,新版本是minifyEnabled不再是 runProguard true * ProGuard的作用是在byte級別對你的app進行分析優化,使得你的App變得更小,更快 * 設置minifyEnabled true,就會在打包的時候進行代碼混淆處理. * 其中proguard-android.txt不用管,在sdk目錄里面,主要是配置了proguard.cfg文件。 * 直接在android studio創建項目不會有這個文件,而是 proguard-rules.pro文件 * 其實一樣的,因為項目是從eclipse遷移過來的,之前在eclipse上混淆是 proguard.cfg文件*/ minifyEnabled false /*加載默認混淆配置文件及自定義混淆的配置 * proguardFiles這部分有兩段,前一部分代表系統默認的android程序的混淆文件,該文件已經包含了基本的混淆聲明,免去了我們很多事 * 這個文件的目錄在 <sdk目錄>/tools/proguard/proguard-android.txt * 后一部分是我們項目里的自定義的混淆文件,目錄就在 app/proguard-rules.txt , * 如果你用Studio 1.0創建的新項目默認生成的文件名是 proguard-rules.pro * 這個名字沒關系,在這個文件里你可以聲明一些第三方依賴的一些混淆規則*/ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //配置發布版本的簽名文件 signingConfig signingConfigs.release zipAlignEnabled true shrinkResources true // 移除無用的resource文件,這個東西依賴于minifyEnabled,所以minifyEnabled也要為true才行。有可能導致android.content.res.Resources$NotFoundException: File applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 輸出apk名稱為boohee_v1.0_2015-01-15_wandoujia.apk def fileName = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } } } } // 友盟多渠道打包 productFlavors { wandoujia {} _360 {} baidu {} xiaomi {} tencent {} taobao {} } // 友盟多渠道打包 UMENG_CHANNEL_VALUE需要與AndroidManifest中的對應位置的命名一致 productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } //執行lint檢查,有任何的錯誤或者警告提示,都會終止構建,我們可以將其關掉。 lintOptions { abortOnError false disable "ignore", "IgnoreResLayout", "InvalidPackage", "MissingRegistered" } dexOptions { preDexLibraries = false //似乎和構建加速有關 //Out of memory 問題 Error:Execution failed for task ':app:dexDebug'. java.lang.OutOfMemoryError: GC overhead limit exceeded incremental = true; javaMaxHeapSize "2g" } //dex突破65535的限制 突破64k需要的設置 遇到java.lang.NoClassDefFoundError android.applicationVariants.all { variant -> task "fix${variant.name.capitalize()}TestMultiDexList" << { logger.info "Fixing keep manifest for $variant.name" def keepManifest = new File("$buildDir/intermediates/multi-dex/test/$variant.flavorName/$variant.buildType.name/manifest_keep.txt") keepManifest.append '\n-keep class *.** { *; }\n' logger.debug "Updated keepManifest for ${keepManifest.getAbsolutePath()}\n$keepManifest.text" } } tasks.whenTaskAdded { task -> android.applicationVariants.all { variant -> if (task.name == "collect${variant.name.capitalize()}TestMultiDexComponents") { task.finalizedBy "fix${variant.name.capitalize()}TestMultiDexList" } } }
}
//dependencies里指明的就是一些需要用到的第三方庫
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:multidex:1.0.0' compile 'com.google.code.gson:gson:2.3.1' //ORM 對象型數據庫框架 操作本地db compile 'com.google.code.gson:gson:2.3.1' //json解析 compile 'com.nineoldandroids:library:2.4.0' // compile 'com.android.support:recyclerview-v7:23.0.1' //RecyclerView引入 /* compile project(path: ':moalib') //自定義module 包含一些列控件 compile project(path: ':jni') //本地Jni compile project(path: ':myjni')//自己定義的jni*/ //aar包:【復制aar到libs】 // 【build.gradle repositories flatDir{ dirs 'libs' }】 【dependencies { compile (name:'XXXXXXX', ext:'aar') }】 compile(name: 'ormlite4.8', ext: 'aar') compile(name:'jni', ext:'aar') compile(name:'moalib', ext:'aar') compile(name:'myjni', ext:'aar') compile files('libs/conceal_android.jar') //第三方加密解密 compile files('libs/libconceal.jar') //第三方加密解密 compile files('libs/umeng-analytics-v5.2.4.jar') //Umeng分析 }
總結
以上是生活随笔為你收集整理的关于Android Studio里的Gradle文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AndroidStudio设置背景颜色,
- 下一篇: Android Studio 打包、生成