Android Studio Set of source 代码源集
来源:互联网 发布:hadoop python接口 编辑:程序博客网 时间:2024/06/05 09:35
一、源集
**1、定义:**Android Studio 按逻辑关系将每个模块的源代码和资源进行分组,这个分组叫做源集。
2、main Module 源集包括其所有构建变体共用的代码和资源。这句话很关键,意思是,所有的其他构建变体,src/main是其共同拥有的。在说明BuildType时,我们会通过案例代码进行介绍。
3、其他源集目录为可选项,在您配置新的构建变体时,Android Studio 不会自动为您创建这些目录,用户可以通过File > New 菜单选项新建文件或目录,进行特定源集进行创建。
源集按照构建类别(buildType)、产品倾向(productFlavor)等,分为以下几个类型:
例如,要生成应用的“完整调试”版本,构建系统需要合并来自以下源集的代码、设置和资源:
src/fullDebug/(构建变体源集)src/debug/(构建类型源集)src/full/(产品风味源集)src/main/(主源集)
4、源集的Overlay机制。如果不同源集包含同一文件的不同版本,Gradle 将按以下优先顺序决定使用哪一个文件(左侧源集替换右侧源集的文件和设置):
构建变体 > 构建类型[BuildType] > 产品风味[ProductFlavor] > 主源集[main] > 库依赖项
在合并多个清单时,Gradle 会使用专用于试图构建的资源进行编译,这些文件包括:构建变体的文件,其他应用版本共用的 Activity、应用逻辑和资源,从而达到不同的构建,编译不同的资源的目的。
二、源集的创建
Gradle 会按照与 main/ 源集类似的特定组织形式来管理源集文件和目录。例如,Gradle 要求您的“调试”构建类型所特定的 Java 类文件位于 src/debug/java/ 目录中。
以debug为例,源集构建会有如下几种方式:
方式一:
1、打开 Project 窗格并从窗格顶端的下拉菜单中选择 Project 视图。2、导航至 MyProject/app/src/。3、右键点击 src 目录并选择 New > Folder > Java Folder。4、从 Target Source Set 旁边的下拉菜单中,选择 debug。5、点击 Finish。
方式二:
1、在相同的 Project 窗格中,右键点击 src 目录并选择 New > XML > Values XML File。2、为 XML 文件输入名称或保留默认名称。3、从 Target Source Set 旁边的下拉菜单中,选择 debug。4、点击 Finish。
以上两种方式,都可以创建源集,源集成功创建后,工程展示如下:
三、源集的重定向
可以通过sourceSets {}来设定Gradle module对应的源集路径。
Android SourceSet表示Java,aidl和RenderScript源以及Android和非Android(Java风格)资源的逻辑组。
3.1、属性
3.2、方法
更多属性以及方法详情,请参与官方文档
案例配置: 配置app/other/目录中的源映射到 main源集的某些组件,并更改 androidTest 源集的根目录。
android { ... sourceSets { // main源集(source set)的闭包配置。 main { // 变更Java 的源文件夹,默认的文件夹 = 'src/main/java'. java.srcDirs = ['other/java'] //如果像以下方式一样,列出来多个文件夹,那么Gradle使用所有的这些文件夹来加载资源, //并赋予这些文件夹相同的优先级。如果不同的文件夹中定义了相同的资源,那么会产生资源合并错误。 //默认的资源文件夹是 'src/main/res'. res.srcDirs = ['other/res1', 'other/res2'] //避免多个文件夹出现“父子”依赖关系。例如:如下情况要避免: //res.srcDirs = ['other/res1', 'other/res1/layouts', 'other/res1/strings'] //应该只指定:'other/res1'或者指定'other/res1/layouts' and 'other/res1/strings' //每个源集只能有一个AndroidManifest.xml清单文件, //默认情况下,main源集的清单文件在src/main/ 目录中。 manifest.srcFile 'other/AndroidManifest.xml' ... } // 创建额外闭包块区配置其他源集 androidTest { // 如果所有的源集文件都在一个单独的目录中,可以使用setRoot来进行配置。 // 这样子,Gradle就只会加载该区域。例如:如下配置,Gradle只会从src/tests/java/ // 来获取源集文件。 setRoot 'src/tests' ... } } } ...
四、源集的使用
在使用源集进行编译的时候,要特别注意资源合并的优先级的问题。上面也提到了,优先级如下:
构建变体 > 构建类型[BuildType] > 产品风味[ProductFlavor] > 主源集[main] > 库依赖项
详细说明如下:
- Java文件。如果找到两个或两个以上定义相同Java 类名的源集目录,那么Gradle 就会引发一个构建错误。
例如,在构建调试 APK 时,同时定义 src/debug/Utility.java 和 src/main/Utility.java,会发生编译错误。 这是因为Gradle 在构建中检查这两个目录并引发了“duplicate class”错误。
- 清单合并为单个清单。在合并清单时,将按照上述列表中的顺序指定优先级。也就是说,某个构建类型的清单设置会替换某个产品风味的清单设置,依此类推。
- value资源。values/ 目录中的文件也会合并在一起。如果两个文件同名,例如存在两个 strings.xml 文件,将按照上述列表中的相同顺序指定优先级。也就是说,某个源集文件中定义的值将会替换产品风味中同一文件中定义的值,依此类推。
- res/ 和 asset/ 目录中的资源将打包到一起。如果两个或两个以上的源- 集中定义有同名资源,将按照上述列表中的相同顺序指定优先级。
- 最后,在构建 APK 时,Gradle 会为随库模块依赖项包含的资源和清单分配最低的优先级。
写作不易,耗费心力,如果上面的内容对你有帮助,请随意打赏,让我们坚持下去~
- Android Studio Set of source 代码源集
- Android Studio Attach source code
- android Studio导入source文件
- Android Studio关联source源码
- Android Studio Attach source code
- android Studio导入source文件
- android studio autoscroll to source
- android studio查看android source code
- android studio import android-source-code
- Android Studio Debug Android Open Source Project
- source insight ,eclipse, android studio常用快捷键
- Configuring Microsoft Visual Studio for local debugging of Reference Source
- Solving the absence of Android source...
- Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
- android studio 代码混淆
- Android Studio代码调试
- Android Studio 格式化代码
- Android studio 混淆代码
- aardio学习记录-1.基本概念和自定义类的调用
- 突发事件属性库构建
- J2EE进阶之ajax和JSon使用 二十三
- BFS:UVa220 ACM/ICPC 1992-Othello(黑白棋)
- D
- Android Studio Set of source 代码源集
- [NOI 2003] Editor
- mybatis绑定错误
- [SDUT](3324)顺序表应用1:多余元素删除之移位算法 ---顺序存储(线性表)
- HDU5861-Road
- Java IO相关
- Spark四种运行模式
- C语言运算符优先级问题
- 将两个各自有序的链表,合成一个有序的链表