我已将项目配置为具有多种产品风格。我的模块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
}
}
,paid
,free
或debug
中创建了一个文件(任何文件:Java,资源......),它就会被识别通过Android Studio,我可以在我的项目中使用它。
但是,如果在release
(或类似文件夹)中创建了相同的文件,则在Android Studio中无法识别该文件。我需要任何额外的配置吗?这还不支持吗?
答案 0 :(得分: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
具有相同名称的资源文件可以放置在任何源集中,包括“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。