写点什么

Gradle 多维度使用,h5 开发移动端

用户头像
Android架构
关注
发布于: 15 小时前

}}


可以看到在Build Variants中多了一个international



注意


目前这 3 个变体都是在一个维度。那如果我想将国内版和国际版变成一个新的维度该如何呢?


在 [官网](


)中能够知道。当需要配置多个维度的时候。可以采用 productFlavors


//需要指明维度 flavorDimensions "nation"productFlavors{//国际版 international{


}//国内版 domestic{


}}


buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}


当完成如上的配置以后。那么目前就存在两个维度。一个是 debug或者是release 这个也是 AS 给我们提供的默认维度。还有一个是


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


我们自己创建的维度nation。来确认是否是国际版还是国内版。


现在在看一下我们的Build Variants



小总结


从上面的小示例。我们能够知道。维度不过是将我们的变种进行分类。形成 维度1乘以维度2的变种。方便我们在实际开发中做到不同功能不同的 apk.就如同我们最上面的需求。


  • 国际版只有且仅有 google 支付 SDK

  • 国内版只有且仅有微信支付的 SDK

更多维度如何使用

之前仅仅演示了 2 个维度。但是实际项目中我还需要更多的维度。例如我们项目中遇到的一个实际问题。台湾版本虽然也规划为国际版。因为使用的都是 google 支付。但是这个功能仅仅部分放出。并没有全部放出。这个时候我就需要更多的一个维度。去判断是否需要放开支付功能。


flavorDimensions "nation","pay"productFlavors{//国际版 international{dimension "nation"}//国内版 domestic{dimension "nation"}


//显示支付 showpay{dimension "pay"}


//不显示支付 hidepay{dimension "pay"}}


buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}


虽然还是在productFlavors中配置的。但是对于每一个变种都使用了dimension指定了他所在的维度是哪一个.


那么现在我就有 3 个维度了。除了之前的两个,还多了一个维度去判断是否显示支付。所以的现在的变种就应该是 2 x 2 x 2 一共 8 个



个人觉得维度并不是越多越好。越多后续的工作也显得更加麻烦。实际项目中。最后是否支付我是使用buildConfigField做了额外的配置


flavorDimensions "nation"productFlavors{//国际版 international{buildConfigField("Boolean", "isShowPay", "false")}//国内版 domestic{buildConfigField("Boolean", "isShowPay", "true")}}

维度的作用

回到刚刚的示例中。创建了 2 个维度。


  • release / debug

  • 国际版 / 国内版


src下创建international文件夹和domestic文件夹。用于放置不同内容的代码。


什么叫不同内容的代码?


这么说吧。一般情况下。我们的代码放在了 src/main/java/...下面。为了做不同的区分。例如国际版中显示国际版,国内版显示国内版本,你可以将 src/main/java/...下的代码全部复制到不同的文件夹下面。然后修改代码。这样你指定什么版本的时候就编译对应文件下的代码。


这么说比较苍白。笔者模拟写一个示例。需求就是不同编译显示不同的文本。


代码非常简单,如下。在 textview 中显示一下即可


object DebugTools {fun getFlavors(): String {return "这是默认的"}}

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Gradle多维度使用,h5开发移动端