问题标签 [android-sourcesets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
580 浏览

android - 对具有完全相同配置的许多 sourceSet 中的几个进行分组

可以说我有以下内容sourceSets

如果您注意到flavor1flavor3具有相同的 srcDirsflavor2flavor4.


尝试可能性#1

我试图弄清楚是否有办法通过使用这样的东西来避免冗余:

以上不起作用(已经尝试过)。寻找类似的东西,这样我就可sourceDirs以为一组口味提供一组通用的。任何人都尝试做类似的事情并可以提供一些指示?


尝试可能性#2

sourceSets需要和口味的名称相同吗?

我可以sourceSets单独命名然后将它们映射到productFlavors这样吗?


尝试可能性#3

可以通过任务以某种方式动态分配源集以实现相同的目标吗?


更新

道格拉斯的回答有点帮助我非常接近我最终寻找的东西(减少 build.gradle 中的代码)。他使用了上面的可能性#3。谢谢道格拉斯!赏金猎人的任何更好的选择仍然是受欢迎的(更接近上面的可能性#1和#2)。如果没有任何结果,当我接受他的回答时,道格拉斯已经在这段时间结束时获得了赏金。但仍会对找到更好的选择保持乐观。

0 投票
0 回答
656 浏览

android - 使用“initWith”为“productFlavors”和“sourceSets”复制构造函数

参考这个答案。是否可以像链接答案中的那样创建productFlavorssourceSets使用复制构造函数。initWith那个工作得很好buildTypes

因为buildTypes它是这样完成的:

这可能productFlavorssourceSets

0 投票
2 回答
1390 浏览

android - 使用 CSV/TXT 文件中的名称列表(带有属性)动态生成 productFlavors 和 sourceSets

这个问题是我另一个问题的延续,我想进一步改进。

我可以sourceSets使用以下代码对风味(具有通用配置)进行分组:

(从上面链接问题中的天才那里得到)

现在,我想知道是否[flavor2, flavor4]可以从以下任何一项中提取该列表:

  • 一个 XML 文件,我可以对其进行迭代以获得所有风​​格(我将放在那里)
  • 我可以迭代和获取值的 CSV 文件。
  • 一个自定义类,我可以将其写入单独的文件并从类中的静态成员中获取数据。

除了风味名称之外,我还打算将以下内容存储在外部源(以上之一)中:

  • 应用程序 ID(我将拉到productFlavors
  • 广告单元 ID(每种口味两个)
  • 其他一些自定义值,如类别等。

PORPOSE: 我想编写一段通用代码来迭代并动态创建productFlavorsand sourceSets。我已经概括sourceSets到几乎 90%,现在一个块足以满足所有口味。

现在看起来像这样:

也想为productFlavors上述提示做同样的事情。

卡在:[flavor2, flavor4]从外部来源获取上面代码中的列表(以及上面列出的每种风味的一些附加字段)。

我看到像这样的方法

但我不太确定如何使用这些。由于方法可用,我确信可以做我想做的事情。

有没有人这样做并有一些指示?

0 投票
1 回答
494 浏览

android - 如何在Android Studio的两个不同项目中使用同一个文件java类

SharedClass.java我需要在两个项目中使用该类: ProjectAProjectB,如果我更改 的代码SharedClass,它也需要在另一个项目中更改。

0 投票
1 回答
1956 浏览

android - 产品风味、来源集。不包括文件 - android studio

我有一个有 4 种产品口味的应用程序。build.gradle看起来像这样:

我已经为风味添加了源集,并为每种特定风味添加了一些文件。

此外,我想指定从主 sourceSet中排除的 flavor1 中的哪些文件。

主要 sourceSet 中要排除的文件main/java/com/example/testing/在其中

  • 文件1.java
  • 文件2.java
  • 文件3.java
  • 文件4.java

在每种口味中,我想从中排除1 个文件。但我希望味道拥有所有其余部分。例子:

flavor1 应该有:file2、file3、file4。

falvor2 应该有:file1、file3、file4。

等等

正如您所看到的,这些文件由大多数风味共享,所以我不想将它们全部放在风味中,因为它将是代码副本,并且每个文件中的每个更改都必须应用于所有不同的风味文件。

我见过这个:

但这对我不起作用。我想不明白。

谢谢 }

0 投票
1 回答
573 浏览

android - 风味维度源代码

我有一个包含大约 30 种产品口味的项目。其中一些产品风格需要共享代码,而不是与大多数产品风格共享。我可以将代码分配给风味组吗?

0 投票
1 回答
2190 浏览

java - 为主要和特定风味android运行单元测试

我有 5 种口味映射到 2 个源文件夹,其中一些通用代码写在主文件夹中,b 文件夹有一些额外的 bean,我已经为其编写了单元测试,现在我想像主文件夹中的所有单元测试一样运行单元测试为 B 应用程序编写的一些特定单元测试。

1.我应该在哪里放置 B 应用程序的文件夹特定单元测试。我已经创建了一个文件夹 test 并将这些测试放在该文件夹中并添加

unitTest { java.srcDir file('src/b/test') }

在 B 应用程序的源集中,但不是这不起作用 2.我应该如何为单元测试放置映射,这些不是 android 测试,我已经厌倦了这个这个,但这些似乎是用于 Android 测试而不是用于单元测试。

0 投票
2 回答
159 浏览

android - android.databinding.Observable 的位置在哪里?

Android Studio 3.0.1 抱怨找不到这个类。即使它构建了,它也只是显示了一个可怕的红色下划线。这是我的第一个问题,但也很好奇这个难以捉摸的课程在哪里?

查看扩展的库它没有显示它:/Library/Android/sdk/extras/android/m2repository/com/android/databinding/library/1.3.1/library-1.3.1-sources.jar

并在网上寻找来源我也很短: https ://android.googlesource.com/platform/frameworks/data-binding/+/c9a5d6f140f732ca0ff279a4b1ee315072e1c422/library/src/main/java/android/databinding

0 投票
0 回答
4379 浏览

android - Android Gradle 插件无法识别 SourceSet 'commonTest'。也许你拼错了什么?

看似与此问题相同的根本原因,但那里的答案对我不起作用。我有一个名为的自定义源集,用于在源集和源集commonTest之间共享某些测试实用程序代码。这是我的相关项目配置:testandroidTest

这在 AGP 3.0.1 上运行良好,但在 AGP 3.1.0 上中断。是否不再支持自定义源集?

0 投票
1 回答
878 浏览

android - 如何在 Android 库项目中按测试类型分隔源文件?

我按照gradle 文档在 Java 项目中按照测试类型分离源文件,我想在 Android 库项目中做同样的事情。默认情况下,Android 插件com.android.library支持两种类型的测试目录testandroidTest. 如何添加说integTest我想要运行的内容test

当我尝试将上述内容添加sourceSet到 时build.gradle,出现错误

错误:Android Gradle 插件无法识别 SourceSet 'integTest'。也许你拼错了什么?

由于Android Gradle Plugin 不支持sourceSets像Java Plugin 这样的自定义,有没有其他方法可以解决这个问题?