问题描述
只是带有产品和模拟口味的普通项目
Just a normal project with "prod" and "mock" flavors
在app / build.gradle中:
in app/build.gradle:
sourceSets {
main.java.srcDirs += "blabla bla"
test.java.srcDirs += "blabla bla"
androidTest.java.srcDirs += "blabla bla"
prodDebug.java.srcDirs += "blabla bla"
mockDebug.java.srcDirs += "blabla bla"
prod.java.srcDirs += "blabla bla"
testProd.java.srcDirs += "blabla bla"
androidTestProd.java.srcDirs += "blabla bla"
mock.java.srcDirs += "blabla bla"
testMock.java.srcDirs += "blabla bla"
androidTestMock.java.srcDirs += "blabla bla"
}
在Android Studio中单击运行:
click "run" in Android Studio :
一切正常错误:
Error:org.gradle.api.GradleException: The SourceSet 'mockDebug' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
但是,我可以执行 ./ gradlew clean build或。 / gradlew assembleProd installProdDebug
等。
但是,如果我在命令行中进行操作,则该应用程序无法完全构建,可以安装目标设备上的应用程序,但该应用程序将像 xxxx.dex
问题一样崩溃。
But, if I do it in command-line, the app cannot be built completely, it can install the app on the target device, but the app will crash like "xxxx.dex"
problem.
推荐答案
将Gradle插件从3.0.1更新到3.1.0后遇到相同的问题。似乎Gradle现在只能找到在Android Studio中选择的变体的源集。
Encountered the same problem after updating the Gradle Plugin from 3.0.1 to 3.1.0. Seems like Gradle now only finds the source set for the variant that is selected in Android Studio.
目前要解决的变通办法是删除 sourceSets {}
块并添加它:
A workaround that fixes it for now is to remove the sourceSets {}
block and add this instead:
def customSourceSets = [
myFirstBuildVariant: 'src/myFirstBuildVariant',
mySecondBuildVariant: 'src/mySecondBuildVariant',
]
android.applicationVariants.all {
if (customSourceSets.containsKey(name)) {
sourceSets.find { it.name == name }.setRoot(customSourceSets.get(name))
}
}
这篇关于将gradle-tool更新为3.1.0-beta3或3.2.0-alpha03后出现新错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!