【问题标题】:Android gradle build: excluded java source files get compiledAndroid gradle build:排除的java源文件被编译
【发布时间】:2020-04-26 04:56:01
【问题描述】:

Android gradle build:排除的 java 源文件被编译:

android {
    sourceSets {
        androidTest {
            java {

                exclude { element ->
                    element.file.path.endsWith("Foo.java")      
                }
            }

            java.sourceFiles.each { println "file: " + it }
        }
    }
}

Foo.java 被排除在源集中。但是 android build: 仍然尝试编译 Foo.java 并在 Foo.java 中发出编译错误。

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:

    我想为我正在处理的类文件做同样的事情,但还没有达到可以编译的状态,我需要在没有它的情况下构建应用程序。

    我发现这样做的方法是将文件存储在 Android Studio 知道的某个位置(以便您可以看到并编辑它),但不希望找到 java 源文件,所以它不会默认编译它。我使用了 assets 目录的子目录。

    然后,您可以将 sourceSets 用于具有显式定义 res.srcDirs 的不同构建变体,以使其在需要时编译其他 java 文件,如下所示

        sourceSets {
            release {
                res.srcDirs = ['src/main/java/...']
            }
            debug {
                res.srcDirs = ['src/main/java/...',
                'src/main/assets/test']
            }
        }
    

    请注意,如果您这样做,它似乎仍然不会报告assets/test 下的文件中的编译错误,除非主代码中引用了在那里定义的类。当然,您可以在BuildConfig.DEBUG 上创建这样的参考条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 2015-11-03
      • 2015-03-08
      • 2019-06-19
      相关资源
      最近更新 更多