声明: 此文为DevWiki原创,如有转载请注明原网址: http://blog.devwiki.net/index.php/2017/01/10/one-more-android-project-common-config.html


随着工作的推进,我所在的 Android 小组负责开发的 App 也多了,有的一个项目也会有很多 module .这就产生了一个问题,如何统一这么多 module /项目的配置?

0x01 要配置什么?

根据我目前所处的环境,目前需要统一配置的有如下几项:

  • SDK 版本
  • Android Support 版本
  • 团队自己开发的公共组件
  • 引用的第三方的库

SDK 版本

因为不是所有的 App 都使用同一版本 SDK,有一部分使用了21版本,有一部分使用了23.需要分别统一.

Support 库版本

为了保证兼容性,相同 SDK 版本的 App 应使用同一版本的 Support 包

自有公共组件

为了保证稳定性,需要控制引用的公共组件的版本,不能有的使用 Beat 版本有的使用 Release 版本.

第三方库

这部分主要避免同时引用多个版本的问题,另一方面可以统一进行更新替换等.


0x02 一个项目多个 module 问题

1. 在项目的根目录创建文件 config.gradle
内容如下:

ext {
    //SDK版本
    compileSdkVer = 25
    buildToolsVer = '25.0.2'
    minSdkVer = 15
    targetSdkVer = 25

    //support版本
    supportAppCompat = 'com.android.support:appcompat-v7:25.0.0'
    supportV4 = 'com.android.support:support-v4:25.0.0'
    supportDesign = 'com.android.support:design:25.0.0'

    //自己的库
    devWiki_log = 'net.devwiki.log:log:0.0.2'
    devWiki_recycler = 'net.devwiki.recycler:recycler:0.0.1'
    devWiki_common = 'net.devwiki.common:common:0.0.1'

    //第三方库
    butterknife = 'com.jakewharton:butterknife:8.4.0'
    butterknife_annotation = 'com.jakewharton:butterknife-compiler:8.4.0'

    //单元测试库
    junit = 'junit:junit:4.12'
}

2. 修改各个 module 的 build.gradle 文件

比如修改 module app 的 build.gradle ,在 apply plugin: 'com.android.application'下面添加 config.gradle文件引用:

apply '../config.gradle'

build.gradle 全部内容如下:

apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply from: '../config.gradle'

android {
    compileSdkVersion compileSdkVer
    buildToolsVersion buildToolsVer
    defaultConfig {
        applicationId "net.devwiki.devwiki"
        minSdkVersion minSdkVer
        targetSdkVersion targetSdkVer
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile supportAppCompat
    compile supportV4
    compile supportDesign
    compile devWiki_log
    compile devWiki_recycler
    compile devWiki_common
    compile butterknife
    annotationProcessor butterknife_annotation
    testCompile junit
}

在上面的文件中需要配置的地方都改为使用 config.gradle 中的版本,依赖都改为直接使用名称.


0x03 统一多个项目的配置

  1. 本地搭建服务器,比如Tomcat服务器http://192.168.10.22:8080

  2. 复制 config.gradle 文件至服务器,比如: /compile/config.gradle

  3. 启动Tomcat服务器

  4. 在各个项目的 module 的 build.gradle 中添加配置文件引用: apply from: 'http://192.168.10.22:8080/compile/config.gradle'

完成以上步骤就可以统一配置多个项目了.


更多文章请访问 DevWiki Blog