Gradle:项目依赖于库,但不是库本身

时间:2014-10-26 16:42:02

标签: java android gradle android-gradle build.gradle

我有包含3个项目的android解决方案:

  • 应用即可。表示层,包含UI的逻辑。 Android应用项目;
  • 即可。商业逻辑。 Java库项目;
  • 数据即可。数据存储。 Android库项目;

应用取决于域名。域取决于数据。

以下是 app 项目的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.1"

    defaultConfig {
        applicationId "com.company.name"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    signingConfigs {
        debug {
            ...
        }
    }

    buildTypes {
        ...
    }
}

dependencies {
    compile project(':domain')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.asne.facebook:facebook:3.17.2'
    compile 'com.google.android.gms:play-services:6.1.11'
    compile 'com.android.support:appcompat-v7:21.0.0'
}

项目的build.gradle:

apply plugin: 'java'


dependencies {
    compile project(':data')
}

数据项目的build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.1"

    defaultConfig {
        applicationId "com.company.name"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        ...
    }
}

dependencies {
    compile 'org.simpleframework:simple-xml:2.7.1'
}

问题是,我收到错误,并显示图层depends on libraries but is not a library itself此错误的消息。那有什么不对?

2 个答案:

答案 0 :(得分:1)

我的建议是删除Domain on Data的依赖关系。相反,将数据提供者注入域。有一个很好的article,它提供了一个关于不同应用程序部分应如何与单元测试无关联的线索。

另一种方法是关注@frederick nyawaya的回答并使用this tutorial设置Robolectric的单元测试。

答案 1 :(得分:0)

的build.gradle中,添加:apply plugin: 'com.android.library'