分渠道打包时如何去除部分kotlin代码

163 阅读1分钟

我们都知道,打包时,去掉Java代码的方式是通过配置exclude,就可以实现了, 例如:

main {
    java.srcDirs = ['src']
    java.excludes = ['com/android/settings/notification/app/AppNotificationSettings.java',
                     'com/android/settings/notification/app/ChannelNotificationSettings.java',
                     'com/android/settings/password/ConfirmLockPassword.java']
}

但是针对kotlin代码,经过实操,完全没有效果。 经过多方查阅,如果想去掉指定的代码,可以使用:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile // 必须导包。

tasks.withType(KotlinCompile).all {
  kotlinOptions {
    exclude '**/tinyPanel/*.kt'
  }
}

这个方式就可以去掉tinyPanel目录下所有的kotlin文件,但是保留java文件或其他。

  • tasks.withType(KotlinCompile).all { ... }:这行代码表示对所有 KotlinCompile 类型的任务应用后面的配置块。

  • kotlinOptions { ... }:进入 kotlinOptions 配置块,设置Kotlin编译器选项。

  • exclude '**/mytest/*.kt':配置编译器排除掉所有匹配 **/mytest/*.kt 模式的文件。**/mytest/*.kt 表示任何路径下的 mytest 目录中的所有 .kt 文件。