在 Eclipse 中,我可以将源文件夹作为“链接源文件夹”添加到我的 android 项目中。我如何在 Android Studio 中实现同样的目标?
或者是否可以添加一个外部文件夹来构建 gradle?
在 Eclipse 中,我可以将源文件夹作为“链接源文件夹”添加到我的 android 项目中。我如何在 Android Studio 中实现同样的目标?
或者是否可以添加一个外部文件夹来构建 gradle?
在您的 build.gradle 中将以下内容添加到 android 节点的末尾
android {
....
....
sourceSets {
main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
}
}
正确答案是:
android {
....
....
sourceSets {
main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
}
}
此外,如果您的外部源目录不在 下src/main
,您可以使用这样的相对路径:
sourceSets {
main.java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}
您可以将源文件夹添加到构建脚本,然后同步。在此处的文档中查找 sourceSets: http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project
我还没有找到添加测试源文件夹的好方法。我已将源手动添加到 .iml 文件中。当然,这意味着每次同步构建脚本时它都会消失。
虽然sourceSets
允许您包含整个目录结构,但无法在 Android Studio(从 1.2 版开始)中排除其中的一部分,如下所述:Android Studio Exclude Class from build?
在 Android Studio 更新以支持 Android 源的包含/排除指令之前,符号链接工作得很好。如果您使用的是 Windows,本机工具(例如junction
or )mklink
可以完成等效的 Un*x 符号链接。 CygWin也可以通过一点强制来创建这些。请参阅:Windows 中的 Git符号链接以及如何在 Windows 7 中使用 cygwin 进行符号链接
以防万一有人感兴趣,这里有一个完整的 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"
如果您不使用 gradle(例如,从 APK 创建项目),则可以通过 Android Studio UI(从 3.3.2 版开始)完成:
Open Module Settings
+ Add Content Root
按钮(右中)OK
根据我的经验(使用本机代码),只要您.so
的 's 是使用调试符号并从相同的绝对路径构建的,就会自动识别在源文件中添加的断点。