需要从另一个目录的 Gradle 项目

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

C:\
_dev\
Projects\
Logger
MyProject

Logger 是一个使用 Gradle 的 Android 库项目。我的项目是一个标准的 Android 项目,需要使用 伐木工库。

我正在使用 Android Studio,并尝试将 伐木工添加到外部库中。虽然这在开发期间可以工作,但是我收到了关于构建时没有找到该类的消息。

我完全是初次接触 Gradle,但是在我的 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'
}
76410 次浏览

Try adding the dependency to the global "dependencies" section, not the "android > dependencies". During development, the "android" configuration is used, but not to package the runtime.

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

It may also be worthwhile to look into setting up a multi-project gradle configuration, with a build.gradle and settings.gradle in the shared parent directory like here: http://www.gradle.org/docs/current/userguide/multi_project_builds.html

The simplest way is to make MyProject a multi project with the Logger project as a subproject.

settings.gradle in MyProject directory:

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

In the build.gradle of MyProject you can now reference this lib as a project:

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

Android Studio 2.2.3:

Add to settings.gradle.

include ':app', ':new_lib'
project(':new_lib').projectDir = new File('../new_lib/app')
  • The path must be relative from the root of the project you're working on.
  • The module you're referencing must have a reference to it's "app" directory.

Then edit your Project Structure | Modules to setup dependencies.

Here is a solution for settings.gradle.kts and build.gradle.kts (Kotlin DSL).

settings.gradle.kts:

include(":my-sub-project")

Top-level build.gradle.kts:

dependencies {
implementation(project(":my-sub-project"))
// ...
}

Directory structure:

🗁 project
├─── settings.gradle.kts
├─── build.gradle.kts
├─── 🗁 my-sub-project
│   ├─── build.gradle.kts
│   └─── ...
└─── ...