2014-10-26 121 views
0

我有一个包含3个项目Android解决方案:摇篮:项目依赖于库,但不是库本身

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

应用程序依赖于域。域取决于数据。

这里是应用项目的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。那里有什么问题?

回答

0

在你的build.gradle为,添加:apply plugin: 'com.android.library'

+0

那么是不可能使用纯java的**域**?通过这种方式,我们可以使用junit 4,并且可以轻松地进行测试。 – 2014-10-26 16:54:33

+0

一个普通的Java项目不能依赖于一个Android项目。 Android项目更复杂,Java插件不知道如何处理它们。 – 2014-10-27 16:53:45

1

我的建议是取消对Data Domain的的依赖。相反,将数据提供者注入到域中。有一个不错的article,它给出了不同的应用程序部分应该如何相关的线索,以使单元测试变得无痛苦。

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