Gradle Warning"未指定取决于库但是罐子"在自定义Java库模块中编译android模块时

时间:2015-04-21 18:34:21

标签: java android android-studio gradle android-gradle

我是Gradle的新人。我有一个简单的项目结构(如下图所示),有一个主要的Android应用程序模块,一个android模块(myandroidlibrary)和一个纯java模块(myjavalibrary)。他们有简单的依赖关系,app - > myjavalibary和myjavalibary - > myandroidlibrary(请参见下图)。 Gradle文件快照也在下面给出。

但是,在同步gradle时会产生以下错误:

 D:\MyTestCodes\MyTestApplication\app\build.gradle
 Warning:Module version MyTestApplication:myjavalibrary:unspecified depends on libraries but is a jar

请帮帮我!我花了整整一天的时间来解决它没有结果!

MyProject
  - app
  - myjavalibrary  (pure java library)
  - myandroidlibrary (android library)

现在依赖关系如下:

"app" depends on -> "myjavalibrary"
"myjavalibrary" depends on -> "myandroidlibrary"

每个模块的Gradle文件如下:

build.gradle 应用

apply plugin: 'com.android.application'
android {
    // ommitting other detail

 dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile project(':myjavalibrary')
} 

build.gradle myjavalibrary

apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':myandroidlibrary')
}

build.gradle myandroidlibrary

apply plugin: 'com.android.application'
android {

   //ommiting other detail.

 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.android.support:appcompat-v7:22.0.0'
}     

settings.gradle

include ':app', ':myjavalibrary', ':myandroidlibrary'

现在,当我同步gradle文件时,它显示以下错误:

 D:\MyTestCodes\MyTestApplication\app\build.gradle
 Warning:Module version MyTestApplication:myjavalibrary:unspecified depends on libraries but is a jar 

2 个答案:

答案 0 :(得分:7)

警告是由纯jave myjavalibrary模块引起的,该模块依赖于myandroidlibrary个模块,这是一个Android库。

Gradle警告你,纯java模块对myandroidlibrary的Android特定内容(如Android资源,资产等)一无所知。通过具有这种依赖性(纯java到android库一个),你可能会丢失一些你期望的东西。

一个更清晰的依赖方向将是从android库到纯java库的方向。在这种情况下,Gradle不会给你任何警告。

答案 1 :(得分:1)

如果您想从java代码创建Android应用程序项目,请使用apply plugin: 'com.android.application'

如果要从java代码创建库项目,请使用apply plugin: 'com.android.library'

如果要使用预先构建的jar文件,请不要为它们创建任何项目。只需将它们添加到项目中,放入libs文件夹中,该文件夹依赖于它们。 compile fileTree(dir: 'libs', include: ['*.jar'])中的dependencies会照顾它们。