【问题标题】:Require Gradle project from another directory需要来自另一个目录的 Gradle 项目
【发布时间】:2013-10-18 10:08:39
【问题描述】:

我有一个这样的目录/项目设置:

C:\
    _dev\
        Projects\
            Logger
            MyProject

Logger 是一个使用 Gradle 的 Android 库项目。 MyProject 是一个标准的 Android 工程项目,需要使用 Logger 库。

我正在使用 Android Studio 并尝试将 Logger 添加到外部库。虽然这在开发过程中有效,但我收到有关构建时找不到类的消息。

我对 Gradle 完全陌生,但在 MyProject 的 build.gradle 中尝试了以下操作:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 18
    }

    dependencies {
        compile files("../Logger")
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:18.0.0'
    compile 'com.android.support:appcompat-v7:18.0.0'
}

【问题讨论】:

  • 不幸的是已经尝试过了。包括 ':logger' 项目(':logger').projectDir = new File(settingsDir, '../SysLog')
  • 将此行 includeFlat 'prjname' 写入 MyProject\settings.gradle 。如果项目是 sideByside / Flat / same level ,则 gradle auto 接受。它的项目也会自动弹出 intellij idea 详细信息:stackoverflow.com/questions/6995390/…
  • 这个问题我太频繁了,几乎每次做一个新的gradle项目,所以我把它放在了收藏夹。

标签: java android gradle android-library multi-project


【解决方案1】:

尝试将依赖项添加到全局“依赖项”部分,而不是“android > 依赖项”。 开发时使用“android”配置,但不打包运行时。

dependencies {
    compile 'com.android.support:gridlayout-v7:18.0.0'
    compile 'com.android.support:appcompat-v7:18.0.0'
    compile files("../Logger")
}

考虑设置多项目 gradle 配置可能也是值得的, 在共享父目录中使用 build.gradle 和 settings.gradle,如下所示:http://www.gradle.org/docs/current/userguide/multi_project_builds.html

【讨论】:

  • 刚刚尝试过,不幸的是没有成功。仍然遇到同样的错误。
【解决方案2】:

最简单的方法是使MyProject 成为一个多项目,并将Logger 项目作为子项目。

settings.gradleMyProject 目录中:

include ":logger"
project(":logger").projectDir = file("../logger")

MyProjectbuild.gradle 中,您现在可以将此库作为项目引用:

dependencies {
     compile 'com.android.support:gridlayout-v7:18.0.0'
     compile 'com.android.support:appcompat-v7:18.0.0'
     compile project(":logger")
}

【讨论】:

  • 谢谢,这正是我所需要的。我一添加这个项目就成功编译了。
  • 你可以使用 Gradle 主目录的 gradle.properties 文件中的属性值吗?
  • 这正是我刚刚推断出我可能能够做到的,这正是我正在寻找的答案:-D
  • 谢谢,工作得很好,我在这里阅读了docs.gradle.org/current/dsl/… 以加深理解
  • 如果外部依赖项有自己的项目依赖项怎么办?这些路径未解决。
【解决方案3】:

Android Studio 2.2.3:

添加到 settings.gradle。

include ':app', ':new_lib'
project(':new_lib').projectDir = new File('../new_lib/app')
  • 路径必须相对于您正在工作的项目的根目录 开。
  • 您引用的模块必须引用它的“应用程序” 目录。

然后编辑您的项目结构 |用于设置依赖项的模块。

【讨论】:

  • 我在 Android Studio 中尝试过这个,但现在我的根项目不再被视为一个库,并且构建变体只显示你所谓的 ":new_lib" 作为可用模块。原来的“应用”不再在模块列表中。
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多