与风格变体类似,我期望能够为相同的类名提供源集变体。例如,
android测试目录
class RobotTest(val name: String = "androidTest")
Run Code Online (Sandbox Code Playgroud)
主目录
class RobotTest(val name: String = "main")
Run Code Online (Sandbox Code Playgroud)
测试目录
class RobotTest(val name: String = "test")
Run Code Online (Sandbox Code Playgroud)
当我仅在两个源中具有相同的类名时,Android Studio 就可以了:
main和testmain和androidTest但是,一旦我将相同的类添加到所有三个类中,Android Studio 就会显示一条分析错误test并androidTest带有以下消息:
重新声明:RobotTest
我在单元测试、仪器测试和应用程序中运行了代码,一切都编译良好(没有构建错误),并且在记录时RobotTest().name,我正确地获得了每个类上下文的 3 个不同值。
有谁知道如何解决这个问题或者这是不允许的吗?
当您创建了产品风味后,您不应将变体类放入main源集中。
只保留所有变体文件的共同点main
例如,您定义了:
flavorDimensions("api")
productFlavors {
create("real") {
dimension = "api"
}
create("mock") {
dimension = "api"
}
}
Run Code Online (Sandbox Code Playgroud)
从那时起,您就有了两个构建变体:real或者mock。
所以,你的类必须有两个版本(如果应该不同的话):
/src/real/kotlin/com/example/SomeApi.kt
/src/main/kotlin/com/example/ (no file here)
/src/mock/kotlin/com/example/SomeApi.kt
Run Code Online (Sandbox Code Playgroud)
更新:
以上所有内容仅适用于来源!如果你创造 4 种口味,你必须将 Java/Kotlin 类复制到 4 个文件夹中,没有“默认”文件夹。
对于资源来说,逻辑是不同的。Gradle 首先从默认文件夹“main”中获取资源文件(某些 XML 文件),然后将其替换为风味文件夹中覆盖的文件(如果该文件存在于该文件夹中)。如果您创建 4 种风格,则可以在“main”中保留默认值,并且只能覆盖它一次。
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |