Android多渠道打包配置

本文详细介绍了如何在Android项目中配置多渠道打包,包括设置flavorDimensions、配置不同渠道的applicationId、签名、根据渠道配置参数以及动态替换AndroidManifest.xml中的值,最后提供了完整的app build.gradle配置示例。
摘要由CSDN通过智能技术生成

Android多渠道打包配置

之前为了在同一台手机能同时安装测试包和生产包,采用配置buildType的方式来实现,相比于flavor,感觉是挺轻量又恰到好处的配置,具体见通过配置applicationId来实现测试包和生产包安装在同一台手机上。最近因为业务需要,需要多个渠道的包了,这就必须要用到flavor这个大杀器了。一路配置下来,感觉还挺顺,下面就具体记录一下。

目标

先说一下需求,增加一个渠道

  1. 功能代码几乎完全相同,个别接口要根据渠道传参
  2. logo要按渠道配置
  3. 应用程序的名子也要不同
  4. 部分页面的标识性图片要按渠道配置

大概就是这么些东西需要根据渠道来配置的。不过还有一些潜在的东西也需要按渠道来配置,如:

  • applicationId,肯定是要不同的
  • 签名肯定是区分的
  • 百度地图的key也必须要根据渠道配置的,以及其它类似的三方鉴权相关配置
  • 自动升级时安装app所需要的fileProviderAuthority也要区分

由于我还保留着degbug与release包使用不同的applicationId,实际上两个渠道共4个包都是不同id的,某些参数除了要根据渠道区分还要再根据buildType做相应的配置。

实施

一、先把flavor配置起来,在app的build.gradle文件中的 android 代码块中添加

// 定义flavor的dimension,至少要有一个dimension,名字随便取,这个必须要的,不然会报错
flavorDimensions "version"

// 渠道包定义,默认定义的名称就是渠道名称
productFlavors {
    // google渠道
    google {
        applicationId = "com.my.google"
    }
    // twitter渠道
    twitter {
        applicationId = "com.my.twitter"
    }
}

这里配置了两个渠道,并指定了它们各自的applicationId,值得注意的是必须要先设置flavorDimensions,值可以随便取。

二、配置签名

//配置签名
signingConfigs {
    google {
        storeFile file("D:/docs/keyStore/googleKeyStore.jks")
        storePassword "111111"
        keyAlias "key0"
        keyPassword "222222"
    }
    twitter {
        storeFile file("D:/docs/keyStore/twitterKeyStore.jks")
        storePassword "333333"
        keyAlias "key1"
        keyPassword "444444"
    }
}

storeFile是KeyStore.jks文件所在的目录,这里配置的所有内容都是创建jks的时候自己填的。

jks的创建

as菜单 Build–>Generate Signed Bundle/APK…->选中APK–>Next–>Create new…

在打开的填写文件路径、密码等内容,一路next就行了

配置好之后,在flavor块中加上对签名的引用,如下

productFlavors {
    // google渠道
    google {
        applicationId = "com.my.google"
        signingConfig signingConfigs.google
    }
    // twitter渠道
    twitter {
        applicationId = "com.my.twitter"
        signingConfig signingConfigs.twitter
    }
}
  • 注意一点,signingConfigs{…}代码块要放在引用它的代码之前,否则会找不到引用的签名

三、 配置只需要区分渠道而不需要区分buildType的参数,如:页面中的图片,接口参数等

这些参数都可以用buildConfigField方法来设置,这个方法将在BuildConfig类中添加一个字段,它接受三个参数,第一个是数据类型,第二个是字段名,第三个是字段值,如:

buildConfigField "Integer", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值