构建类型特定文件夹无法识别产品风格

时间:2017-01-25 09:57:24

标签: android gradle android-productflavors

我已将项目配置为具有多种产品风格。我的模块AudioManager mgr=null mgr = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE); mgr.setStreamVolume(AudioManager.STREAM_MUSIC, 100, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 中包含以下代码:

build.gradle

如果我在android { // Rest of the configuration omitted for clarity buildTypes { debug { // ... } release { // ... } } productFlavors { paid free } } paidfreedebug中创建了一个文件(任何文件:Java,资源......),它就会被识别通过Android Studio,我可以在我的项目中使用它。

但是,如果在release(或类似文件夹)中创建了相同的文件,则在Android Studio中无法识别该文件。我需要任何额外的配置吗?这还不支持吗?

2 个答案:

答案 0 :(得分:1)

  1. 具有相同名称的源代码文件应放在所有备用源集中(但不能放在“main”中)。

    或者:

    应用程序/ SRC / 的分类 /java/com/domain/myapp/MainActivity.java
    应用程序/ SRC / 支付 /java/com/domain/myapp/MainActivity.java

    或者:

    应用程序/ SRC / freeDebug /java/com/domain/myapp/MainActivity.java
    应用程序/ SRC / freeRelease /java/com/domain/myapp/MainActivity.java
    应用程序/ SRC / paidDebug /java/com/domain/myapp/MainActivity.java
    应用程序/ SRC / paidRelease /java/com/domain/myapp/MainActivity.java

  2. 具有相同名称的资源文件可以放置在任何源集中,包括“main”。

    应用程序/ SRC / /res/layout/activity_main.xml
    应用程序/ SRC / paidDebug /res/layout/activity_main.xml
    应用程序/ SRC / paidRelease /res/layout/activity_main.xml

    在这种情况下,当构建“free”风格时,将使用来自“main”set的布局文件。但是,在“付费”风格的构建过程中,将使用特定版本的布局。

答案 1 :(得分:1)

您可以在build.gradle文件中指定特定的源目录。例如,将testFreeRelease添加到单元测试源和testFree添加到android集成测试源:

android {
    [...]
    sourceSets {
        main.java.srcDirs += 'src/main/java'
        testFreeRelease.java.srcDirs += 'src/testFreeRelease/java'
        androidTestFree.java.srcDirs += 'src/androidTestFree/java'
    }
}

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