【问题标题】:Gradle Warning "unspecified depends on libraries but is a jar " while compiling an android module within a custom java library module在自定义 java 库模块中编译 android 模块时,Gradle 警告“未指定取决于库,但它是一个 jar”
【发布时间】:2015-06-29 02:22:20
【问题描述】:

我是 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 for myjavalibrary

apply plugin: 'java'

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

build.gradle for 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 

【问题讨论】:

  • 我感觉是 appcompat 依赖。您可以尝试在 sdk 工具中更新您的 google 存储库,尝试不同的版本,或者将该依赖项放在另一个项目(例如应用程序)上,看看它是否也在那里中断?
  • 您的库不应该使用com.android.library 插件而不是com.android.application 吗?
  • 我有同样的问题,我正在使用 com.android.library 插件。
  • 我也有同样的问题。你解决了吗?

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


【解决方案1】:

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

Gradle 会警告您纯 java 模块对myandroidlibrary 的 Android 特定内容(如 Android 资源、资产等)一无所知。通过拥有这种依赖关系(纯 java 到 android 库之一),您可能会丢失一些您希望拥有的东西。

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

【讨论】:

  • 您是否为上述相同或修改提供了一些 gradle 结构?
【解决方案2】:

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

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

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

【讨论】:

  • 如果你使用apply plugin: 'com.android.library',不要忘记将@aar附加到compile依赖的末尾。例如。 compile 'library:version@aar'
猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多