Android库有多个模块

时间:2015-02-13 10:27:19

标签: android android-manifest android-productflavors

我正在android上构建一个库,它由一个大核心和几个模块组成(让我们将它们命名为A,B,C,D和E)
这些模块有时需要另一个库,有时需要在生成的清单中添加内容。

我希望能够使用任意数量的模块构建我的核心 我开始创建非常有用的口味,但在我的情况下有点受限。如果我想为每种情况创造一种味道,那就意味着创造了很多它们!

编辑:一个gradle文件来解释我想做什么。

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    flavorDimensions "libA", "libB", "libC", "libD", "libF"
    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 21
        versionCode 11
        versionName "3.1.0"
    }

    productFlavors {
        A {
          flavorDimension "libA"
        }

        B {
          flavorDimension "libB"
        }

        C {
          flavorDimension "libC"
        }

        D {
          flavorDimension "libD"
        }

        E {
          flavorDimension "libB"
        }

        F {
          flavorDimension "libF"
        }
    }

    sourceSets {
        A {
            java {
                srcDirs = ['src/A']
            }
        }

        B {
            java {
                srcDirs = ['src/B']
            }
        }

        C {
            java {
                srcDirs = ['src/C']
            }
        }

        D {
            java {
                srcDirs = ['src/D']
            }
        }

        E {
            java {
                srcDirs = ['src/E']
            }
        }

        F {
            java {
                srcDirs = ['src/F']
            }
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'

    androidTestCompile 'org.mockito:mockito-core:1.10.19'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'

    ACompile files('libs/A-2.1.0.jar')

    BCompile files('libs/B-4.1.0.jar')

    CCompile files('libs/C-5.1.0.jar')

    DCompile files('libs/D-1.01.jar')

    // same library as B, but different version
    ECompile files('libs/B-5.2.2.jar')

    // F nothing
}

我希望能够制作的是:

  

A.aar
B.aar
C.aar
D.aar
E.aar
F.aar
  A + B.aar
A + C.aar
A + D.aar
A + E.aar
A + F.aar
  A + B + C.aar
A + B + D.aar
A + B + F.aar(因为B和E不是   兼容)
A + C + D.aar
A + C + E.aar

等。等等...

当我尝试使用这个gradle文件,并启动“gradlew assembleRelease”时,我只获得: A + B + C + D + F.aar和A + C + D + E + F.aar

为了获得我正在寻找的结果会修改什么?

有没有更简单的方法来进行这样的构建?

1 个答案:

答案 0 :(得分:1)

创建多个独立的android库模块,并使用自定义gradle脚本来提取和使用必要的模块