使用gradle構建android項目(續(xù))

在幾個月之前隐砸,我已經寫過一篇使用gradle構建android項目的博客了http://blog.isming.me/2014/05/20/android4gradle/,那篇文章已經介紹了如何使用gradle進行項目構建累澡,以及為谷歌會推薦使用gradle聋迎。當時android的gradle插件是0.11.0,現(xiàn)在插件的版本已經是0.14.3了腕唧,對于一些老的方法和api唤殴,有一些已經被移除档痪,無法使用枢里。因此有必要再寫一篇博客介紹這些被移除的部分和替代方案绑榴。同時由于個人學識原因哪轿,當時沒有介紹的一些技巧,其他功能翔怎,也會在本文中進行介紹窃诉。

android studio 最新閃屏

和上一篇文章相比不兼容的地方

沒有看過我另一篇文章的,建議去看一下赤套。

以下這些屬性改名飘痛,原先的不能用:

runProguard -> minifyEnabled (是否混淆)
zipAlign -> zipALignEnabled (是否zip對齊)
packageName -> applicationId
jniDebugBuild-> jniDebuggable
renderscriptDebug->renderscriptDebuggable
renderscriptSupportMode->renderscriptSupportModeEnabled
renderscriptNdkMode->renderscriptNdkModeEnabled
Variant.packageApplication/zipAlign/createZipAlignTask/outputFile/processResources/processManifest使用variant.out代替,具體使用容握,看后面代碼

這些被移除替換的宣脉,在最新版的gradle插件中,已經不會提示過時唯沮,直接報錯脖旱,請警惕啊=轵取!H芡省币旧!

新功能

multiDexEnabled 多dex支持

shrinkResources 移除未使用的資源

支持定義BuildConfig值和res的值,比如:

applicationVariants.all { variant ->
    variant.buildConfigField "int", "VALUE", "1"
    variant.resValue "string", "name", "value"
}

還可以在defaultConfig,buildType,productFlavors中定義,比如:

buildTypes {
        debug {
            applicationIdSuffix ".debug"
            signingConfig signingConfigs.myConfig

            buildConfigField "String", "FOO", "\"bar1\""
            buildConfigField "String", "FOO", "\"bar\""

            resValue "string", "foo", "foo2"

        }
    }

通過這樣,我們可以對我們生成的最終程序猿妈,進行多樣劃的定制了吹菱。

Manifest文件內容占位符

這樣可以打包的時候巍虫,對Manifest進行自定義配置,使用方法:

  1. 在Manifest文件中定義一個占位符,比如以我們之前寫的umeng打包的例子為例鳍刷,${UMENG_CHANNEL}占遥,這種格式.

  2. 在gradle配置文件中加替換,可以在defaultConfig,buildType,productFlavors中配置,比如:

defaultConfig {
    manifestPlaceholders = [ UMENG_CHANNEL:"defaultName"]
}

同時输瓜,還可以直接在Manifest文件中加包名的替換瓦胎,直接使用${applicationId}即可。

其他技巧免費附送

如果使用過程中經常出現(xiàn)OOM,那么在gradle.properties文件中增加一下內存尤揣,讓gradle可以使用更多內存:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError

如果因為中文問題搔啊,出現(xiàn)錯誤,最好在org.gradle.jvmargs后面再加上-Dfile.encoding=UTF-8,那么這個時候和在一起就是:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

如果北戏,因為一些錯誤负芋,不得不終止,再進來之后嗜愈,無法進行編譯,去projectpath/.gradle/<gradle-version>/taskArtifacts/目錄下看有沒有*.lock的文件旧蛾,刪掉再重試。

關于android studio和gradle

android studio(以下簡稱as)今天發(fā)布了1.0RC版蠕嫁,意味著正式版本的即將到來蚜点,同時在社區(qū),QQ群也可以看到越來越多的人開始在使用android studio拌阴。經常也有很多人會問到升級的時候會遇到一些問題绍绘,主要原因就是android studio的一些大版本升級后,一般有一個推薦gradle插件的版本,比如,as0.9要求0.14.+版本迟赃,as0.8要求0.12+版本陪拘。兩者是互相依賴的,gradle插件的版本同時對于as也有最低版本要求纤壁。這樣左刽,我們升級as后也必須修改gradle的配置文件,提高插件版本酌媒,同時一些不能向下兼容的配置也需要修改欠痴。

在升級gradle和插件版本后,一般都會重新下載gradle秒咨,這樣會消耗你一點時間喇辽。

最后,福利

奉上我最近的妹子圖的gradle配置:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.+'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 3
        versionName "1.1.1"
        multiDexEnabled false
        manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"default_channel" ]
        buildConfigField "boolean", "ISDEBUG", "true"
    }

    lintOptions {
        abortOnError false
    }

//簽名
    signingConfigs {
        debug {
            //storeFile file("/home/sam/.android/debug.keystore")
        }

        //你自己的keystore信息
        release {
            //storeFile file("/home/sam/sangmingming.keystore")
            //storePassword ""
            //keyAlias "sam"
            //keyPassword ""
        }
    }

    buildTypes {

        debug {
            signingConfig signingConfigs.debug
            buildConfigField "boolean", "ISDEBUG", "true"
        }

        release {
            buildConfigField "boolean", "ISDEBUG", "true"
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    //渠道Flavors雨席,我這里寫了一些常用的菩咨,你們自己改
    productFlavors {
        //GooglePlay{}
        //NDuo{}
        xiaomi {}
        umeng {}
    }


    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
    }

    applicationVariants.all { variant ->

        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }
}



dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.+'
    compile 'com.android.support:support-v4:21.+'
    compile 'com.android.support:cardview-v7:21.+'
    compile 'com.android.support:recyclerview-v7:21.+'
}

然后,我把谷歌最新的gradle配置的示例也拿回來了,分享給大家:點擊下載

參考資料:http://tools.android.com/tech-docs/new-build-system

原文地址:http://blog.isming.me/2014/11/21/use-gradle-new/抽米,轉載請注明出處特占。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市云茸,隨后出現(xiàn)的幾起案子是目,更是在濱河造成了極大的恐慌,老刑警劉巖标捺,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懊纳,死亡現(xiàn)場離奇詭異,居然都是意外死亡宜岛,警方通過查閱死者的電腦和手機长踊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萍倡,“玉大人身弊,你說我怎么就攤上這事×星茫” “怎么了阱佛?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戴而。 經常有香客問我凑术,道長,這世上最難降的妖魔是什么所意? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任淮逊,我火速辦了婚禮,結果婚禮上扶踊,老公的妹妹穿的比我還像新娘泄鹏。我一直安慰自己,他們只是感情好秧耗,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布备籽。 她就那樣靜靜地躺著,像睡著了一般分井。 火紅的嫁衣襯著肌膚如雪车猬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天尺锚,我揣著相機與錄音珠闰,去河邊找鬼。 笑死缩麸,一個胖子當著我的面吹牛铸磅,可吹牛的內容都是我干的赡矢。 我是一名探鬼主播杭朱,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼阅仔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弧械?” 一聲冷哼從身側響起八酒,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刃唐,沒想到半個月后羞迷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡画饥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年衔瓮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抖甘。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡热鞍,死狀恐怖,靈堂內的尸體忽然破棺而出衔彻,到底是詐尸還是另有隱情薇宠,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布艰额,位于F島的核電站澄港,受9級特大地震影響,放射性物質發(fā)生泄漏柄沮。R本人自食惡果不足惜回梧,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祖搓。 院中可真熱鬧狱意,春花似錦、人聲如沸棕硫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哈扮。三九已至纬纪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滑肉,已是汗流浹背包各。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靶庙,地道東北人问畅。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親护姆。 傳聞我的和親對象是個殘疾皇子矾端,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評論 25 707
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項,請點擊這里進行查閱:DSL參考 1.1新構建系統(tǒng)...
    Chuckiefan閱讀 12,122評論 8 72
  • 參考 中文官網(wǎng)構建指南:https://developer.android.google.cn/studio/bu...
    FinalSky閱讀 5,321評論 0 16
  • Android Studio正式版早已經發(fā)布了卵皂,默認使用Gradle構建秩铆,GitHub上80%的Android項目...
    流哲羽閱讀 2,863評論 1 13
  • 今天和朋友去看了深海浩劫,很震撼灯变,想說些什么殴玛,卻覺得欲言又止,我已經不知道自己是應該寫一則影評還是來一則人生感悟添祸,...
    小啤酒肚閱讀 186評論 0 0