在自定义Java库模块中编译android模块时,Gradle警告"未指定取决于库但是是jar"

Mah*_*eed 7 java android gradle android-studio android-gradle-plugin

我是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
Run Code Online (Sandbox Code Playgroud)

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

MyProject
  - app
  - myjavalibrary  (pure java library)
  - myandroidlibrary (android library)
Run Code Online (Sandbox Code Playgroud)

现在依赖关系如下:

"app" depends on -> "myjavalibrary"
"myjavalibrary" depends on -> "myandroidlibrary"
Run Code Online (Sandbox Code Playgroud)

每个模块的Gradle文件如下:

build.gradle对于app:

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')
} 
Run Code Online (Sandbox Code Playgroud)

build.gradle对于myjavalibrary:

apply plugin: 'java'

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

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'
}     
Run Code Online (Sandbox Code Playgroud)

settings.gradle:

include ':app', ':myjavalibrary', ':myandroidlibrary'
Run Code Online (Sandbox Code Playgroud)

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

 D:\MyTestCodes\MyTestApplication\app\build.gradle
 Warning:Module version MyTestApplication:myjavalibrary:unspecified depends on libraries but is a jar 
Run Code Online (Sandbox Code Playgroud)

ser*_*nka 7

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

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

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


jay*_*ubi 1

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

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

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