需要来自其他目录的Gradle项目

wr98u20j  于 2023-04-21  发布在  其他
关注(0)|答案(5)|浏览(164)

我有一个目录/项目设置如下:

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'
}
lqfhib0f

lqfhib0f1#

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

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")
}
inb24sb2

inb24sb22#

Android Studio 2.2.3:
添加到settings.gradle。

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

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

huwehgph

huwehgph3#

尝试将依赖项添加到全局“dependencies”部分,而不是“android〉dependencies”。在开发期间,使用“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

i34xakig

i34xakig4#

对于那些满足基于@Rene Groeschke,@Michael Mrozek和@user924的答案的错误Could not find method compile()...的人,在MyProjectbuild.gradle中使用

implementation project(":logger")

而不是

compile project(":logger")

使用Gradle-7.4

yiytaume

yiytaume5#

以下是settings.gradle.kts和build.gradle.kts(Kotlin DSL)的解决方案。
settings.gradle.kts:

include(":my-sub-project")

顶级build.gradle.kts:

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

目录结构:

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

相关问题