android - 测试 Android Studio 无法识别的多维 flavor 的源目录

标签 android android-gradle-plugin android-productflavors

我对多维风格的测试和 androidTest 源目录有疑问。

给定以下口味:

flavorDimensions "taste", "serving"

productFlavors {
    chocolate {
        flavorDimension "taste"
    }
    strawberry {
        flavorDimension "taste"
    }
    kiwi {
        flavorDimension "taste"
    }
    sample {
        flavorDimension "serving"
    }
    whole {
        flavorDimension "serving"
    }
}

在 Android Studio 中识别“非测试”源目录(任何风格组合)没有问题:

src/sample, src/whole, src/chocolate, src/strawberry, src/kiwi, src/chocolateSample、src/chocolateWhole、src/strawberrySample、src/strawberryWhole、src/kiwiSample、src/kiwiWhole

我的问题是“测试”源目录。
只识别单一维度 flavor : src/testSample、src/testWhole、src/testChocolate、src/testStrawberry、src/testKiwi
多维口味不是:src/testChocolateSample、src/testChocolateWhole、src/testStrawberrySample、src/testStrawberryWhole、src/testKiwiSample、src/testKiwiWhole

“androidTest”等效源目录也是这种情况。

我的印象是 app.iml 没有正确生成。虽然我们知道我们永远不应该这样做,但如果我手动添加缺失的条目,这些文件夹会被正确识别。

为什么这对非测试源目录有效但对测试源目录失败?这是已知问题还是 gradle 插件的限制?

我尝试对此进行研究,但只找到与测试源文件夹的单一风格维度或非测试源文件夹的多维度风格相关的主题。没有关于测试源文件夹的多维风格的内容。

最佳答案

您应该能够通过修改您的 Android 应用 build.gradle 文件来解决此问题。例如,将 testChocolateSample 添加到单元测试并将 testChocolate 添加到 android 集成测试:

android {
    [...]
    sourceSets {
        main.java.srcDirs += 'src/main/java'
        testChocolateSample.java.srcDirs += 'src/testChocolateSample/java'
        androidTestChocolate.java.srcDirs += 'src/androidTestChocolate/java'
    }
}

这也适用于 Kotlin。只需将 java 切换为 kotlin

关于android - 测试 Android Studio 无法识别的多维 flavor 的源目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31119583/

相关文章:

android - 添加产品口味以响应本地android项目

android - 如何从 MainActivity 暂停/恢复 SurfaceView?

android - 缺少 64 位支持/缺少推送通知授权电话

android-gradle-plugin - 对于 AAR,上传到 bintray 静默失败

java - Android - 任务 ':app:compileDebugJava' 执行失败,预期为 ';'

java - 单个应用程序的多种产品风格

android - 尝试授权 Health Kit 时应用卡住

java - 无法实现测验App的计分逻辑

android - 如何从我们的项目中排除 Android Studio 的内部 m2 存储库?

android - 仅针对一种产品 flavor 添加Android AppWidget