需要另一个目录的Gradle项目


77

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

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'project(':logger')。projectDir = new File(settingsDir,'../SysLog')
Euan T

将此行includeFlat 'prjname' 写入MyProject \ settings.gradle。如果项目是sideByside / Flat /同一级别,则gradle auto接受。它的项目也会自动以intellij创意详细信息弹出:stackoverflow.com/questions/6995390/…–
bh_earth0

几乎每次我创建一个新的gradle项目时,我都会经常问这个问题,因此将其置于收藏夹中。
prem30488 '18 -10-17

Answers:


170

最简单的方法是MyProject使用该Logger项目作为子项目创建一个多项目。

settings.gradleMyProject目录中:

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

在中build.gradleMyProject您现在可以将此lib引用为项目:

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

谢谢,这正是我所需要的。我添加此项目后,该项目成功编译。
Euan T

您可以使用Gradle主目录的gradle.properties文件中的属性值吗?
瑞克

这正是我刚推断出的能力,也是我一直在寻找的答案:-D
Pixel

我遇到了同样的情况,settings.gradle中的此解决方案为我工作
rinilnath

1
谢谢,工作得很好,我也在这里阅读了docs.gradle.org/current/dsl/…以获得更深入的了解
Ankit Jain

13

Android Studio 2.2.3:

添加到settings.gradle。

include ':app', ':new_lib'
project(':new_lib').projectDir = new File('../new_lib/app')
  • 该路径必须相对于您正在处理的项目的根目录。
  • 您要引用的模块必须对其“ app”目录具有引用。

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


我在Android Studio中进行了尝试,但是现在我的根项目不再被视为库,并且构建变体仅显示您称为“:new_lib”的模块。原始的“ app”不再在模块列表中。
ZeroStatic

9

尝试将依赖性添加到全局“依赖性”部分,而不是“ 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


1
只是尝试过,不幸的是没有成功。仍然出现相同的错误。
Euan T
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.