2014-10-26 122 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的單元測試。