优雅的项目配置--常用库和版本管理

来源:互联网 发布:ubuntu安装run文件 编辑:程序博客网 时间:2024/06/04 01:18

欢迎Follow我的GitHub, 关注我的CSDN.

最近经常有人问我, 如何管理gradle版本, 我来统一讲解这些小技巧.

随着Android开发的成熟, 模块越来越多, 为了开发稳定的程序, 引入的库也随之增加, 如何确保所有项目使用相同的编译版本he库版本呢?

当然, Gradle的参数配置可以帮我们实现这些.

Gradle

主要 
(1) 常用库的展示与配置. 
(2) 统一管理项目和库的版本. 
(3) 设置项目的私有参数.


1. 常用库

编程三剑客, RxJava+Retrofit+Dagger. 
常用: ButterKnife依赖注解, Glide/Picasso图片处理. 
使用根项目(rootProject)的参数管理子项目的版本.

<code class="hljs bash has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'me.tatarka.retrolambda'</span>      // Lambda表达式apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.application'</span>     // Android应用apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.neenbedankt.android-apt'</span> // 编译时类apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.databinding'</span>     // 数据绑定def cfg = rootProject.ext.configuration // 配置def libs = rootProject.ext.libraries // 库android {    compileSdkVersion cfg.compileVersion    buildToolsVersion cfg.buildToolsVersion    defaultConfig {        applicationId cfg.package        minSdkVersion cfg.minSdk        targetSdkVersion cfg.targetSdk        versionCode cfg.version_code        versionName cfg.version_name        buildConfigField <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"String"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"MARVEL_PUBLIC_KEY"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"\"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${marvel_public_key}</span>\""</span>        buildConfigField <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"String"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"MARVEL_PRIVATE_KEY"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"\"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${marvel_private_key}</span>\""</span>    }    buildTypes {        release {            minifyEnabled <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">false</span>            proguardFiles getDefaultProguardFile(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'proguard-android.txt'</span>), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'proguard-rules.pro'</span>        }    }    compileOptions {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">source</span>Compatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }    // 注释冲突    packagingOptions {        exclude <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'META-INF/services/javax.annotation.processing.Processor'</span>    }}dependencies {    compile fileTree(dir: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'libs'</span>, include: [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'*.jar'</span>])    testCompile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'junit:junit:4.12'</span>    // Android    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support:design:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.supportVersion}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support:appcompat-v7:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.supportVersion}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support:cardview-v7:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.supportVersion}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support:recyclerview-v7:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.supportVersion}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support:palette-v7:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.supportVersion}</span>"</span>    // Retrofit    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.squareup.retrofit:retrofit:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.retrofit}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.squareup.retrofit:converter-gson:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.retrofit}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.squareup.retrofit:adapter-rxjava:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.retrofit}</span>"</span>    // ReactiveX    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"io.reactivex:rxjava:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.rxandroid}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"io.reactivex:rxandroid:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.rxandroid}</span>"</span>    // Dagger    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.google.dagger:dagger:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.dagger}</span>"</span>    apt <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.google.dagger:dagger-compiler:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.dagger}</span>"</span>    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"org.glassfish:javax.annotation:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.javax_annotation}</span>"</span>    // Others    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.jakewharton:butterknife:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.butterknife}</span>"</span> // 资源注入    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.github.bumptech.glide:glide:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.glide}</span>"</span> // 图片处理    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jp.wasabeef:recyclerview-animators:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.recycler_animators}</span>"</span> // Recycler动画    compile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"de.hdodenhof:circleimageview:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${libs.circleimageview}</span>"</span> // 头像视图}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li></ul>

项目版本: 
def cfg = rootProject.ext.configuration 
cfg.compileVersion 
库版本: 
def libs = rootProject.ext.libraries 
${libs.retrofit}


2. 参数管理

buildConfigField管理私有参数, 配置在gradle.properties里面.

<code class="hljs smalltalk has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">android {    defaultConfig {        buildConfigField <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"String"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"MARVEL_PUBLIC_KEY"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"\"</span><span class="hljs-char" style="box-sizing: border-box;">${</span>marvel_public_key}\<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">""</span>        buildConfigField <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"String"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"MARVEL_PRIVATE_KEY"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">"\"</span><span class="hljs-char" style="box-sizing: border-box;">${</span>marvel_private_key}\<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">""</span>    }}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>

设置参数的类型\变量名\位置三个部分.

<code class="hljs ini has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-setting" style="box-sizing: border-box;">marvel_public_key   = <span class="hljs-value" style="box-sizing: border-box;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">74129</span>ef99c9fd5f7692608f17abb88f9</span></span><span class="hljs-setting" style="box-sizing: border-box;">marvel_private_key  = <span class="hljs-value" style="box-sizing: border-box;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">281</span>eb4f077e191f7863a11620fa1865f2940ebeb</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

未指定路径, 默认是配置在gradle.properties中. 
两个地方可以配置参数, 一个是项目的build.gradle, 一个是gradle.properties.

项目中使用BuildConfig.xxx引入参数.

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">        MarvelSigningIterceptor signingIterceptor = new MarvelSigningIterceptor(                BuildConfig<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MARVEL</span>_PUBLIC_KEY, BuildConfig<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MARVEL</span>_PRIVATE_KEY)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

3. 版本管理

版本管理配置在项目的build.gradle中, 包含两个部分, 一个是项目的版本, 一个是库的版本. 把常用参数设置成为变量. 子项目使用rootProject.ext.xxx的形式引入.

<code class="hljs go has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">ext {    configuration = [            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">package</span>          : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"me.chunyu.spike.springrainnews"</span>,            buildToolsVersion: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"23.0.1"</span>,            compileVersion   :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;"> 23</span>,            minSdk           :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;"> 14</span>,            targetSdk        :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;"> 23</span>,            version_code     :<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;"> 1</span>,            version_name     : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"0.0.1"</span>,    ]    libraries = [            supportVersion    : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"23.1.1"</span>,            retrofit          : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"2.0.0-beta2"</span>,            rxandroid         : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"1.1.0"</span>,            dagger            : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"2.0"</span>,            javax_annotation  : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10.0-b28"</span>,            butterknife       : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"7.0.1"</span>,            glide             : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"3.6.1"</span>,            recycler_animators: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"2.1.0"</span>,            circleimageview   : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"2.0.0"</span>    ]}buildscript {    repositories {        jcenter()    }    dependencies {        classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.tools.build:gradle:2.0.0-alpha5'</span>        classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.neenbedankt.gradle.plugins:android-apt:1.8'</span>        classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'me.tatarka:gradle-retrolambda:3.2.4'</span>        classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.databinding:dataBinder:1.0-rc4'</span>    }}allprojects {    repositories {        jcenter()    }}task clean(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span>: Delete) {    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">delete</span> rootProject.buildDir}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li></ul>

通过这样的方式管理Android项目, 可以便捷的更改版本号, 所有模块统一.

OK, that’s all! Enjoy it!

0 0
原创粉丝点击