學習GRADLE

gradle
gradle

依賴最新版本

GRADLE可以做到不依賴具體某個版本的庫肤粱,而是每次從repo拉取最新的庫到本地做編譯。

dependencies {
    compile 'com.google.code.gson:gson:2.2.1'
}

如果不想依賴具體的庫抬驴,想每次拉取最新的庫炼七,那么,可以寫成這樣:

dependencies {
    compile 'com.google.code.gson:gson:2.2.+'
}

還可以這樣寫:

dependencies {
    compile 'com.google.code.gson:gson:+'
}

文件編碼配置

如果導入一個windows下編寫的項目布持,而代碼中有中文注釋豌拙,采用GBK, GB18030等編碼方式時,編譯會報錯题暖,可以采用如下方式統(tǒng)一項目的編碼

allprojects {
    repositories {
        jcenter()
    }

    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
}

配置簽名信息

簽名信息屬于敏感信息按傅,建議不要寫死放到gradle腳本中,而是寫到一個單獨的配置文件里胧卤,而且這個配置文件不要同步到版本管理系統(tǒng)上唯绍,而是由本地維護,防止在版本管理平臺上泄漏敏感信息枝誊。建議簽名信息內容寫到gradle.properties或者local.properties文件里况芒,這樣,gradle腳本可以直接引用叶撒,如果是放在一個自定義的文件中绝骚,gradle腳本需要提供相應的代碼來讀取文件的內容。 文件內容參考如下:

RELEASE_KEY_PASSWORD=android
RELEASE_KEY_ALIAS=androidreleasekey
RELEASE_STORE_PASSWORD=android
RELEASE_STORE_FILE=../resources/release.keystore
DEBUG_KEY_PASSWORD=android
DEBUG_KEY_ALIAS=androiddebugkey
DEBUG_STORE_PASSWORD=android
DEBUG_STORE_FILE=../resources/debug.keystore

gradle腳本引用代碼參考:

android {
    signingConfigs {
        debug {
            storeFile file(DEBUG_STORE_FILE)
            storePassword DEBUG_STORE_PASSWORD
            keyAlias DEBUG_KEY_ALIAS
            keyPassword DEBUG_KEY_PASSWORD
        }

        release {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }
}

如果簽名信息沒有放到gradle.properties或者local.properties文件里祠够,那就需要自己寫代碼讀取咯压汪,假設簽名信息放在signing.properties文件中, 文件內容可以參考上面,讀取文件的代碼放入gradle腳本中就可以了哪审,參考代碼如下

def File propFile = new File('signing.properties')
if (propFile.canRead()) {
    def Properties props = new Properties()
    props.load(new FileInputStream(propFile))

    if (props != null && props.containsKey('RELEASE_STORE_FILE') && props.containsKey('RELEASE_STORE_PASSWORD') &&
            props.containsKey('RELEASE_KEY_ALIAS') && props.containsKey('RELEASE_KEY_PASSWORD')) {

        android.signingConfigs.release.storeFile = file(props['RELEASE_STORE_FILE'])
        android.signingConfigs.release.storePassword = props['RELEASE_STORE_PASSWORD']
        android.signingConfigs.release.keyAlias = props['RELEASE_KEY_ALIAS']
        android.signingConfigs.release.keyPassword = props['RELEASE_KEY_PASSWORD']
        println 'all good to go'
    } else {
        android.buildTypes.release.signingConfig = null
        println 'signing.properties found but some entries are missing'
    }
} else {
    println 'signing.properties not found'
    android.buildTypes.release.signingConfig = null
}

構建參數設置

AndroidManifest占位符蛾魄,BuildConfig以及資源配置

根據版本類型和構建變種定義不同的變量值供程序引用

manifestPlaceholders = [APP_KEY:"release"]
buildConfigField "String", "EMAIL", "\"release@android.studio.com\""
resValue "string", "content_main", "Hello world from release!"

buildConfigField支持Java中基本數據類型,如果是字符串湿滓,記得加轉義后的雙引號 resValue支持res/values下的資源定義滴须,字符串無需加轉義后的雙引號

刪除unaligned apk

 applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 輸出apk名稱為yujia_v1.0_wandoujia.apk
                        def fileName = "yujia_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                    if (output.zipAlign != null) {
                        output.zipAlign.doLast {
                            output.zipAlign.inputFile.delete()
                        }
                    }
                }
            }

lint選項開關
lint會按默認選項會做嚴格檢查,遇到包錯誤會終止構建過程叽奥,可以用如下開關關掉這個選項扔水,不過最好是重視下lint的輸出,有問題及時修復朝氓,避免潛在問題

android {
    lintOptions {
        abortOnError false
    }
}

依賴庫按構建目標定制
不同的依賴庫可以按構建目標做定制魔市,比如freemium的變種集成了廣告,就可以這樣寫

dependencies {
freemiumCompile 'com.google.android.gms:ads:7.8.0'
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末赵哲,一起剝皮案震驚了整個濱河市待德,隨后出現的幾起案子,更是在濱河造成了極大的恐慌枫夺,老刑警劉巖将宪,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡较坛,警方通過查閱死者的電腦和手機印蔗,發(fā)現死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丑勤,“玉大人华嘹,你說我怎么就攤上這事》ň海” “怎么了耙厚?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爪喘。 經常有香客問我颜曾,道長纠拔,這世上最難降的妖魔是什么秉剑? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮稠诲,結果婚禮上侦鹏,老公的妹妹穿的比我還像新娘。我一直安慰自己臀叙,他們只是感情好略水,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劝萤,像睡著了一般渊涝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上床嫌,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天跨释,我揣著相機與錄音,去河邊找鬼厌处。 笑死鳖谈,一個胖子當著我的面吹牛,可吹牛的內容都是我干的阔涉。 我是一名探鬼主播缆娃,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瑰排!你這毒婦竟也來了贯要?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤椭住,失蹤者是張志新(化名)和其女友劉穎崇渗,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡显押,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年扳肛,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乘碑。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡挖息,死狀恐怖,靈堂內的尸體忽然破棺而出兽肤,到底是詐尸還是另有隱情套腹,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布资铡,位于F島的核電站电禀,受9級特大地震影響,放射性物質發(fā)生泄漏笤休。R本人自食惡果不足惜尖飞,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望店雅。 院中可真熱鬧政基,春花似錦、人聲如沸闹啦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窍奋。三九已至荐健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳袄,已是汗流浹背江场。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挚歧,地道東北人扛稽。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像滑负,于是被迫代替她去往敵國和親在张。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理矮慕,服務發(fā)現帮匾,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,111評論 25 707
  • 這一章主要針對項目中可以用到的一些實用功能來介紹Android Gradle痴鳄,比如如何隱藏我們的證書文件瘟斜,降低風險...
    acc8226閱讀 7,612評論 3 25
  • 微博上常常會看到這樣一些心靈雞湯:改變從現在開始螺句,做最好的自己從此刻開始虽惭,再不努力你拿什么去競爭。說實話蛇尚,當我看到...
    燭火顧盼閱讀 129評論 0 1