gradle加入不同的代码

2020-04-19  本文已影响0人  普通的程序员

现在假设有两个版本 debug,release

debug版本需要使用某个第三方库,且需要在java代码里进行设置(这就涉及到import的操作了),因此常规的debugImplemention 脚本语法无法满足我们的需求。

需要sourceSet的帮助

假设我们的release包是不需要在application里对LC进行设置的,
那么我们指定release的application为 normalApplication.class
需要对LC进行配置的debug版本的 application为 TestApplication

1.先对清单文件做配置,占位符


image.png

2.gradle文件进行配置

android {
   
    defaultConfig {
      ...
        manifestPlaceholders = [applicationClassName: "NormalApplication"]
    }
    buildTypes {
        release {
          ...
        }
        debug {
            ...
            manifestPlaceholders = [applicationClassName: "TestApplication"]
        }
    }

    sourceSets.debug {
        java.srcDirs 'src/debugLC/java'
    }

}

dependencies {
    ...
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2'
}

这样就能在打包的时候,通过gradle脚本打包指定不同的application

然后通过sourceSet.debug来进行物理隔离
只有在debug版本的时候,才会把src/debugLC/java下的java资源编译进去。

项目结构


image.png image.png image.png

以上,完成了LC的物理隔离,也就不需要LC no-op包了

上一篇下一篇

猜你喜欢

热点阅读