常州微信网站建设市场,下载百度 安装,wordpress cms 模板制作,网站站长seo推广一、源集1、定义#xff1a;Android Studio 按逻辑关系将每个模块的源代码和资源进行分组#xff0c;这个分组叫做源集。2、main Module 源集包括其所有构建变体共用的代码和资源。这句话很关键#xff0c;意思是#xff0c;所有的其他构建变体#xff0c;src/main是其共同…一、源集1、定义Android Studio 按逻辑关系将每个模块的源代码和资源进行分组这个分组叫做源集。2、main Module 源集包括其所有构建变体共用的代码和资源。这句话很关键意思是所有的其他构建变体src/main是其共同拥有的。在说明BuildType时我们会通过案例代码进行介绍。3、其他源集目录为可选项在您配置新的构建变体时Android Studio 不会自动为您创建这些目录用户可以通过File New 菜单选项新建文件或目录进行特定源集进行创建。源集按照构建类别(buildType)、产品倾向(productFlavor)等分为以下几个类型源集备注src/main/此源集包括所有构建变体共用的代码和资源。src//创建此源集可加入特定构建类型专用的代码和资源。src//创建此源集可加入特定产品风味专用的代码和资源。src//创建此源集可加入特定构建变体专用的代码和资源。例如要生成应用的“完整调试”版本构建系统需要合并来自以下源集的代码、设置和资源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。Target Source Set以上两种方式都可以创建源集源集成功创建后工程展示如下三、源集的重定向可以通过sourceSets {}来设定Gradle module对应的源集路径。Android SourceSet表示Java,aidl和RenderScript源以及Android和非Android(Java风格)资源的逻辑组。3.1、属性属性描述aidlAndroid AIDL源目录为此源设置。assets该资源集的Android Assets目录。compileConfigurationName该源集合的编译配置的名称。javaJava源代码由Java编译器编译到类输出目录中。jni这个源码集的Android JNI源目录。jniLibs这个源码集的Android JNI libs目录。manifest该源代码集的Android Manifest文件。name这个源集的名称。packageConfigurationName此源集合的运行时配置的名称。providedConfigurationName此源集合的仅编译配置的名称。renderscript该源码集的Android RenderScript源目录。res该资源集的Android资源目录。resources要复制到javaResources输出目录的Java资源。3.2、方法方法描述setRoot(path)将源集的根设置为给定的路径。源集合的所有条目都位于此根目录下。更多属性以及方法详情请参与官方文档案例配置 配置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 会为随库模块依赖项包含的资源和清单分配最低的优先级。写作不易耗费心力如果上面的内容对你有帮助请随意打赏让我们坚持下去~