android 两个 buildTypes - 错误:重复的类

a_s*_*ber 3 android-gradle-plugin

安卓工作室3.4

我有 2 种构建类型:

debug
release
Run Code Online (Sandbox Code Playgroud)

所以我的项目结构是:

src/debug/java/

src/main/java/

src/release/java/
Run Code Online (Sandbox Code Playgroud)

我有CartActivity。该类对于release版本和debug版本有不同的实现。所以这个类的位置位于两个文件夹中:

src/debug/java/activityCartActivity
src/main/java/activityCartActivity
Run Code Online (Sandbox Code Playgroud)

但是当我构建项目时gradlew assemble出现错误:

> Task :scanlib:processDebugJavaRes NO-SOURCE
> Task :scanlib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug
> Task :app:javaPreCompileDebug FROM-CACHE

> Task :app:compileDebugJavaWithJavac FAILED
\app\src\debug\java\com\myproject\app\cart\CartActivity.java:66: error: duplicate class: com.myproject.app.cart.CartActivity
public class CartActivity extends AppCompatActivity {
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 5

做不到

src/debug/java/activityCartActivity
src/main/java/activityCartActivity
Run Code Online (Sandbox Code Playgroud)

查看官方文档

java/ 目录中的所有源代码都会一起编译以生成单个输出。

特别是:

注意:对于给定的构建变体,如果 Gradle 遇到两个或多个定义了相同 Java 类的源集目录,则会引发构建错误。例如,在构建调试 APK 时,您不能同时定义 src/debug/Utility.javasrc/main/Utility.java这是因为 Gradle 在构建过程中查看这两个目录并抛出“重复类”错误。如果您希望针对不同的构建类型使用不同版本的 Utility.java,则可以让每个构建类型定义自己的文件版本,而不将其包含在主/源集中。