Gradle productFlavors的使用

一、问题背景
在一次需求会议上,测试组提出了一个测试开发需求,需要APP能够在Android7.0的手机上抓取Https的报文,抓包方案根据这篇博客( https://blog.csdn.net/u011045726/article/details/76064048)可以实现。但是修改后引入的问题是,在res资源文件中增加了一个证书和一个xml文件。

另外对AndroidManifest.xml文件进行了修改,修改后的结果是编译出来的APP只能在抓包环境下运行,不能在正常环境下运行。

二、解决方案
原有方案
根据掌握的gradle的知识,会制作两份AndroidManifest.xml放置在不同的目录下,然后编译时用不同的参数选择不同的AndroidManifest.xml文件进行编译。但是这需要在gradle编译时传入参数,另外抓包用的证书和xml文件也会被编译进行正式APP中,方法很low。
使用productFlavors
将抓包用的资源文件和改写的AndroidManifest.xml文件单独放置在一个文件夹,比如在我的项目中命令为Charles,该目录与main目录同级,目录详情如下:

然后在productFlavors下加入与目录名相对应得渠道名即可
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
....
}
buildTypes {
....
}

sourceSets {
....
}
//创建productFlavors
productFlavors {
charles {
}
}
}

三、总结
该文只是用来记录平时工作中遇到的小的问题的解决过程用于积累,希望对恰巧遇到类似问题的你有帮助。

猜你喜欢

转载自blog.csdn.net/polo2044/article/details/79903617
今日推荐