Android 項(xiàng)目開發(fā)必備-建立屬于你的build.gradle文件

timg (1).jpg

開發(fā)一個(gè)Android項(xiàng)目不僅僅需要你會(huì)寫java/kotlin代碼芭毙,而且你還要了解各種配置文件筋蓖。例如。AndroidManifest.xml退敦,混淆文件粘咖,build.gradle等。這里面最難理解也是最重要的非build.gradle莫屬了侈百,接下來(lái)我們就講一講一個(gè)成熟的項(xiàng)目的build.gradle文件是怎么樣的:
首先我們建立一個(gè)新工程并打開build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "com.example.ljw.basedemo"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
}

這是AS默認(rèn)給我們生成的build.gradle瓮下,我們需要對(duì)它進(jìn)行一個(gè)改造:
如果你不需要單元測(cè)試我們可以刪掉這些文件:

  // testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    //androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    //    exclude group: 'com.android.support', module: 'support-annotations'
    //})
  // testCompile 'junit:junit:4.12'

ok,刪完了以后我們就可愉快的開始我們build.gradle的建立了翰铡,
首先,一個(gè)項(xiàng)目想要發(fā)布讽坏,簽名是必要的東西锭魔,所以我們要配置一下簽名文件:

    signingConfigs {
            storeFile file('../key/yourname.jks') //你的jks文件路徑
            storePassword "youstorepassword"
            keyAlias "youAlias"
            keyPassword "yourpassword"
    }

如果你的項(xiàng)目夠大那這句話是必須的

    // dex突破65535的限制
            multiDexEnabled true

接下來(lái)是配置我們的buildTypes,具體解釋見(jiàn)注釋

  buildTypes {
        debug {
            // 顯示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled false
            //Zipalign優(yōu)化
            zipAlignEnabled false
            // 移除無(wú)用的resource文件
            shrinkResources false
            signingConfig null
        }

        release {
            // 不顯示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            minifyEnabled true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 輸出apk名稱為ljw_v1.0__baidu.apk
                        def fileName = "ljw_v${variant.productFlavors[0].versionName}_${variant.name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }

為gradle添加UTF-8支持

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

最后就是多渠道打包了

    productFlavors {
        liuliang {//這里你可以給不同渠道的包設(shè)置不同的版本號(hào),名稱路呜,甚至applicationId迷捧,若是你設(shè)置不同的applicationId了,那你的不同渠道的包就可以同時(shí)存在在一個(gè)手機(jī)上胀葱。 }
        xiaomi { }
        wandoujia {}
        OPPO {}
        Lenovo { }
        Unicom {}
        qh360 { }
        VIVO {  }
        sougou { }
        anzhi { }
        leshi { }
        ppzhushou { }
        _91zhushou { }
        yingyonghui {  }
        baidu {}
        yingyongbao { }
        huawei { }
        meizu {  }
  
}

ok漠秋,基本上一個(gè)項(xiàng)目的build.gradle文件差不多就配置好了,如果有特殊需要你們?cè)谧约杭訓(xùn)|西抵屿。
下一篇文章預(yù)告-Android 項(xiàng)目開發(fā)必備-為你的項(xiàng)目選擇優(yōu)質(zhì)框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庆锦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晌该,更是在濱河造成了極大的恐慌肥荔,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朝群,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡中符,警方通過(guò)查閱死者的電腦和手機(jī)姜胖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淀散,“玉大人右莱,你說(shuō)我怎么就攤上這事〉挡澹” “怎么了慢蜓?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)郭膛。 經(jīng)常有香客問(wèn)我晨抡,道長(zhǎng),這世上最難降的妖魔是什么则剃? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任耘柱,我火速辦了婚禮,結(jié)果婚禮上棍现,老公的妹妹穿的比我還像新娘调煎。我一直安慰自己,他們只是感情好己肮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布士袄。 她就那樣靜靜地躺著悲关,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娄柳。 梳的紋絲不亂的頭發(fā)上寓辱,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音西土,去河邊找鬼讶舰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛需了,可吹牛的內(nèi)容都是我干的跳昼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肋乍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鹅颊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起墓造,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤堪伍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后觅闽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帝雇,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年蛉拙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尸闸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孕锄,死狀恐怖吮廉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畸肆,我是刑警寧澤宦芦,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站轴脐,受9級(jí)特大地震影響调卑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜豁辉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一令野、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徽级,春花似錦气破、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)低匙。三九已至,卻和暖如春碳锈,著一層夾襖步出監(jiān)牢的瞬間顽冶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工售碳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留强重,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓贸人,卻偏偏與公主長(zhǎng)得像间景,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子艺智,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,074評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理倘要,服務(wù)發(fā)現(xiàn),斷路器十拣,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)封拧,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,131評(píng)論 8 72
  • Gradle對(duì)于很多開發(fā)者來(lái)說(shuō)有一種既熟悉又陌生的感覺(jué),他是離我們那么近夭问,以至于我每天做項(xiàng)目都需要他泽西,但是他又是離...
    阿_希爸閱讀 9,575評(píng)論 10 199
  • 最近突然感覺(jué)時(shí)間就像清風(fēng)一樣,悄悄地吹走了我的耿直缰趋,帶來(lái)了世故尝苇,吹走了理想,帶來(lái)了現(xiàn)實(shí)埠胖,吹走了自由,帶來(lái)了拘束淳玩。也...
    云之城閱讀 212評(píng)論 0 0