gradle神器~Android多渠道配置管理(2)

      很多年不写作文,逻辑和语句可能有欠缺,望看到的读者见谅,下面接着记录我的gradle之坑。

本篇是对第一遍的补充优化,老路子先来说说背景。

背景:

          如果只有五六个的渠道平台直接在productFlavors里面添加就能完成,如果是几百个甚至几千个平台呢!!

难道也是一个个的直接添加到productFlavors里面吗?有人会说就是简简单单的一行Ctrl+c、Ctrl+v就能搞定,一千个渠道不就是一千行代码嘛,如果真的这么做了,恭喜您向初级工程师十万行代码的积累量前进的很大一步。有没有优化方案呢?答案是肯定的。

解决方案:

         1. 创建一个渠道列表文件,由于是讲解使用知识简单的示范,每行代表一个平台渠道,如果是复杂的可以使用json文件格式,稍后会简单的说明,例如:channel.txt

_360
google
nihao
hello

路径示例:


         2. 在productFlavors中读取到channel.txt渠道信息,配置渠道名称

productFlavors {

   file("${projectDir.path}/channel.txt")//app目录下的channel.txt文件
           .readLines()//按行读取所有的行
           .each { line_name -> //遍历每行
       "$line_name"{ //配置每个渠道信息
           manifestPlaceholders = [CHANNEL_NAME: name]
       }

   }
}

     如此就会在gradle的配置阶段更新您当前的渠道配置信息,效果如下:

为什么要写配置文件简要说明:

        首先,看看每个渠道都有哪些具体的默认属性信息,就以上面的hello渠道为例:

productFlavors {
    hello{
        println(it)
    }
}

这段代码会输出什么呢?来看输出结果:

这代表了什么?红色框内的是不是很熟悉?首先,当创建一个渠道的时候每个渠道都会默认拥有这些属性,如果当前渠道没有单独配置这些信息,就会读取默认的defaltConfig的信息,这里就不过多的说明了,网上有很多这样的说明,我就演示一下怎么给每个渠道设置自己想要的信息呢,其实很简单我就利用上面说到的json文件做示例。

json文件:

[
  {
    "channel_name" : "hello",
    "versionCode" : 1,
    "versionName" : "1.0"
  },
  {
    "channel_name" : "nihao",
    "versionCode" : 2,
    "versionName" : "2.0"
  }
]

对应的读取代码:

productFlavors {
   def json = file("${projectDir.path}/channel.json").getText("UTF-8")//读取app目录下的channel.json文件内容
   def flavors = new JsonSlurper().parseText(json) //转换成Jsons数组对象
    flavors.each {  flavor ->
        "${flavor.channel_name}"{//渠道名称,对应文件中的channel_name
            versionCode flavor.versionCode //渠道版本号,对应文件中的versionCode
            versionName flavor.versionName //渠道版本名称,对应文件中的versionName
        }

    }
}

运行效果:

 

其他的属性配置也可参照如此修改,也可增加自己定义的属性,执行gradlew assembleRelease就会个性化打包所有的渠道配置

版权声明:本文为博主原创文章,转载请标明出处。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 开发中,Gradle 是一个非常重要的构建工具,可以用来构建和打包 Android 应用程序。Gradle 插件是一种工具,可以扩展 Gradle 的功能,使其能够支持更多的功能。而多渠道打包是 Android 应用程序开发中非常重要的一个方面,它可以让我们将应用程序打包成不同的版本,并发布到不同的应用商店或市场上。 在 Android Studio 中,我们可以通过自定义 Gradle 插件来实现多渠道打包,具体步骤如下: 1. 创建 Gradle 插件项目 在 Android Studio 中创建一个新项目,选择 Gradle 插件项目模板。这将创建一个 Gradle 插件项目,并生成一些默认的代码和文件。 2. 实现多渠道打包 在插件项目中,我们需要实现多渠道打包的功能。这可以通过 Gradle 的 productFlavors 和 buildTypes 配置来实现。我们可以定义多个 productFlavors,并为每个 productFlavor 配置不同的参数,例如应用程序的包名、应用程序名称等。在 buildTypes 中,我们可以为每个 buildType 配置不同的参数,例如应用程序的版本号、是否开启混淆等。 3. 打包应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的打包。这个任务可以使用 Gradle 提供的 assemble 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的打包参数,并使用 Gradle 的 assemble 任务来生成应用程序的 APK 文件。 4. 发布应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的发布。这个任务可以使用 Gradle 提供的 uploadArchives 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的发布参数,并使用 Gradle 的 uploadArchives 任务将应用程序发布到不同的应用商店或市场上。 总的来说,自定义 Gradle 插件多渠道打包是 Android 应用程序开发中非常重要的一个方面。通过自定义 Gradle 插件,我们可以实现更加灵活和高效的应用程序打包和发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值