Android国内海外apk多渠道打包了解一下?

本文主要讲解一个代码工程需要同时需要打包国内外apk包,国外一般只在google play发布,国内发布的平台会更多一些,包括华为、小米、应用宝、vivo等应用市场平台

需求整理

国内和海外版本差异一般比较大,有一部分代码都是不一样的,比如国外一般使用google推送,而国内一般使用个推等第三方推送平台。国内的版本,功能都是一致,一般只是渠道号不一致,以保证数据统计需求,而其它功能都是一致的,那么主要需要解决以下几个问题:

  • 国内版本支持一次打包多个渠道不一样的apk,它们之间的代码逻辑是一样的
  • 一次工程,支持打外国内、海外两类apk,它们之间的代码逻辑是不一样的
  • 国内和海个任一apk间需要区分渠道号
  • 实现一个自动化打包的脚本,批量生成apk版本、混淆规则的mapping文件

实现效果

打包输出结果

以下是打包的输出文件,可直接用于输出提测,文件结构如下:

├── cn
│   ├── app_2.7.0.0_2070000_test_release_20200916-1636-mapping.txt
│   └── apks
│       ├── app-v2.7.0.0-c360.apk
│       ├── app-v2.7.0.0-hw.apk
│       ├── app-v2.7.0.0-lggCn.apk
│       ├── app-v2.7.0.0-oppo.apk
│       ├── app-v2.7.0.0-vivo.apk
│       ├── app-v2.7.0.0-xm.apk
│       └── app-v2.7.0.0-yyb.apk
└── gp
    ├── app_2.7.0.1_2070001_test_online_20200916-1649-mapping.txt
    └── apks
        └── app_2.7.0.1_2070001_test_online_20200916-1649.apk

实现步骤

如何实现代码多渠道

实现代码多渠道依赖通过在build.gradle中配置productFlavors属性,以下定义了两个渠道,分别为cn和gp

android {
    ...
    productFlavors {
        //定义国内渠道
        cn {}
        //定义google play渠道
        gp {}
    }
}

定义在两个渠道后可以在cn和gp两个渠道中编写差异化的代码,效果如下:
dd0297ee2a2b70a567f7cf98d1a531ce

定义在cn和gp对应的同包名类名下定义相关的类并实现

class PushManager {

    //不同的渠道实现不同的代码
    fun init() {
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值