【发布时间】:2013-09-27 15:28:29
【问题描述】:
在 Eclipse 中,我可以将源文件夹作为“链接源文件夹”添加到我的 android 项目中。我如何在 Android Studio 中实现同样的目标?
或者是否可以添加一个外部文件夹以在 gradle 中构建?
【问题讨论】:
标签: java gradle android-studio
在 Eclipse 中,我可以将源文件夹作为“链接源文件夹”添加到我的 android 项目中。我如何在 Android Studio 中实现同样的目标?
或者是否可以添加一个外部文件夹以在 gradle 中构建?
【问题讨论】:
标签: java gradle android-studio
在您的 build.gradle 中将以下内容添加到 android 节点的末尾
android {
....
....
sourceSets {
main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
}
}
【讨论】:
sourceSets放在android的范围内?我的dependencies 不在了。
main.res.srcDirs += '<YOUR DIRECTORY>'
正确答案是:
android {
....
....
sourceSets {
main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
}
}
此外,如果您的外部源目录不在src/main 下,您可以使用这样的相对路径:
sourceSets {
main.java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}
【讨论】:
src/main/../../ 前缀,因为点取消了路径组件。
sourceSets { main.java.srcDirs += 'src/main/\\10.51.70.21\me\myco\apps\myapp\src' }
open() 来访问文件。您可以使用 nfs 或 smb 之类的东西将远程目录直接挂载到文件系统中,但这并不特定于 Android Studio。
您可以将源文件夹添加到构建脚本,然后进行同步。在此处的文档中查找 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 源的包含/排除指令之前,Symlinks 工作得很好。如果您使用的是 Windows,则诸如 junction 或 mklink 之类的本机工具可以完成等效的 Un*x 符号链接。 CygWin 也可以通过一点强制来创建这些。请参阅:Git Symlinks in Windows 和 How to make symbolic link with cygwin in Windows 7
【讨论】:
以防万一有人感兴趣,这里有一个完整的 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 是使用调试符号并从相同的绝对路径构建的,就会自动识别在源文件中添加的断点。
【讨论】: