android - 如何使用外部 gradle 文件将源文件添加到 gradle 项目

标签 android gradle android-studio android-gradle-plugin

我项目中的 java 类依赖于某些文件。当我尝试在 Android Studio 中同步所有 gradle 文件时,这些文件应该会自动导入。现在我的 build.gradle 文件中有一个任务,它运行来自另一个构建文件(compile.gradle)的外部任务。然后 compile.gradle 文件会将必要的文件夹复制到我的主项目中。

如果我首先手动调用任务然后同步整个项目,那么一切正常。但是,一旦我尝试同步项目,而无需手动调用任务,外部 compile.gradle 文件就不会被执行,并且堆栈跟踪会显示“找不到类”错误。

task thrift(type: GradleBuild) {
    buildFile = '../other_project/compile.gradle'
    startParameter.projectProperties = ['example.bin.java': example_bin_java,
        'example.src': example_src] //Should not be important
    tasks = ['clean', 'compile', ...]
}

我已经在某处读到我不应该通过外部任务导入这些文件,因为它们只会在“执行阶段”(生命周期:初始化、配置、执行)中执行,而且如果我同步或执行项目,显然不会调用这个阶段。但是我无法为这个问题想出一个解决方案。我可能不得不使用另一种方式从外部 gradle 文件执行任务(没有 GradleBuild 任务)。

在 Android Studio 中同步所有 gradle 文件时,如何强制/声明执行外部任务?

如果我将外部任务复制到 build.gradle 文件中,它可能会解决问题。但这不是我正在寻找的解决方案(冗余代码......)。

最佳答案

你可以通过几种不同的方式做到这一点。您可以为要构建为库的外部代码创建一个单独的“模块”,并使您的应用程序对该模块具有编译依赖项(gradle 中的项目 - gradle 和 IntelliJ 术语之间的一个可爱的差异。)或者,如果您希望保留您现在拥有的基于任务的结构,您可以修改现有的 Android 特定任务以依赖于您的新任务:

androidDependencies.dependsOn thrift

现在,当您执行同步(或 gradlew assemble )时,构建应该正确获取依赖项。

关于android - 如何使用外部 gradle 文件将源文件添加到 gradle 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622402/

相关文章:

java - Gradle、Tika - 排除一些使 "fat jar"太胖的依赖包

gradle - gradle中依赖和依赖之间的区别

android - 需要Gradle 1.8版;安装;必须使用Gradle 1.9版;安装;重复

java - Android Studio应用程序(Java)中的模块中的重复类androidx.lifecycle.DefaultLifecycleObserver

android - 使用 VectorDrawableCompat

Android Studio 无法解析符号textView

android - 为什么无法访问 Android 命名空间 URI?

android N 无法在应用计费 AIDL 中编译

android - 如何实现智能裁剪功能

android - SQLiteException 语法错误不清楚