背景
目前有这样的一个情景:在开发过程中我们需要在整个应用启动的前面选择合适的环境,因此我们会将整个应用的启动界面替换成HostChooseActivity,将WelcomeActivity相应的启动intent-filter注释掉。而在上线时又需要将HostChooseActivity在Manifest文件里注释掉,将WelcomeActivity的intent-filter打开。本地还好,但是在jenkins上就很麻烦,比如当目前的代码不包含可选环境时,QA需要一个可选环境的包来进行测试,这时就得本地重新更改代码然后push、merge、Jenkins重新打包,流程很复杂。所以希望能够根据不同的build type来选择合适的Manifest,最后在官方文档里找到了解决方案,在这之前先简单介绍下预备知识。
Build Variants
我们知道在Android Studio中有一个Build Variants,它是根据我们在gradle文件里的buildTypes和productFlavors生成的,通过这个我们可以对我们的项目创建不同的版本。例如:可以针对不同的渠道替换一些资源文件,或者更改min Api levels。下面介绍下buildTypes和productFlavors。
配置Build Types
当你创建一个Module时,AS会自动的创建debug和release这两种build types,其中debug并不会在gradle文件里显示,但其实是存在的,我们点击AS的Build Variants时会看见,平时开发时默认的就是这个模式,而且它的debuggable是为true的。下面是一个例子: