67

在 Eclipse 中,我可以将源文件夹作为“链接源文件夹”添加到我的 android 项目中。我如何在 Android Studio 中实现同样的目标?

或者是否可以添加一个外部文件夹来构建 gradle?

4

6 回答 6

104

在您的 build.gradle 中将以下内容添加到 android 节点的末尾

android {
    ....
    ....

    sourceSets {
        main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }

}
于 2014-02-25T23:42:18.103 回答
26

正确答案是:

android {
    ....
    ....

    sourceSets {
        main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }
}

此外,如果您的外部源目录不在 下src/main,您可以使用这样的相对路径:

sourceSets {
    main.java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}
于 2015-01-13T12:11:44.840 回答
2

您可以将源文件夹添加到构建脚本,然后同步。在此处的文档中查找 sourceSets: http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project

我还没有找到添加测试源文件夹的好方法。我已将源手动添加到 .iml 文件中。当然,这意味着每次同步构建脚本时它都会消失。

于 2014-02-06T04:00:41.213 回答
2

虽然sourceSets允许您包含整个目录结构,但无法在 Android Studio(从 1.2 版开始)中排除其中的一部分,如下所述:Android Studio Exclude Class from build?

在 Android Studio 更新以支持 Android 源的包含/排除指令之前,符号链接工作得很好。如果您使用的是 Windows,本机工具(例如junctionor )mklink可以完成等效的 Un*x 符号链接。 CygWin也可以通过一点强制来创建这些。请参阅:Windows 中的 Git符号链接以及如何在 Windows 7 中使用 cygwin 进行符号链接

于 2015-05-26T11:57:41.637 回答
2

以防万一有人感兴趣,这里有一个完整的 Java 模块 gradle 文件,可以正确生成和引用 Android 多模块应用程序中的构建工件

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.15"
    }
}

apply plugin: "net.ltgt.apt"
apply plugin: "java-library"
apply plugin: "idea"

idea {
    module {
        sourceDirs += file("$buildDir/generated/source/apt/main")
        testSourceDirs += file("$buildDir/generated/source/apt/test")
    }
}

dependencies {

    // Dagger 2 and Compiler
    compile "com.google.dagger:dagger:2.15"
    apt "com.google.dagger:dagger-compiler:2.15"
    compile "com.google.guava:guava:24.1-jre"

}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"
于 2018-03-29T10:24:41.850 回答
0

如果您不使用 gradle(例如,从 APK 创建项目),则可以通过 Android Studio UI(从 3.3.2 版开始)完成:

  • 右键项目根目录,选择Open Module Settings
  • 点击+ Add Content Root按钮(右中)
  • 添加您的路径并点击OK

根据我的经验(使用本机代码),只要您.so的 's 是使用调试符号并从相同的绝对路径构建的,就会自动识别在源文件中添加的断点。

于 2019-03-22T22:28:19.440 回答