欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android使用Gradle实现多渠道打包

程序员文章站 2024-01-11 16:25:28
...

这里我们主要用到gradle文件中的buildTypesproductFlavors,今天我们主要研究下它俩。

先上图:

Android使用Gradle实现多渠道打包

buildTypes

构建类型 默认情况下,Android插件自动为项目构建一个debug和一个release版本的应用。这两个版本的不同主要体现在在非开发机上的调试功能以及APK的签名方式。debug版本使用一个用公开的name/password创建的key来签名(这样构建的时候就不需要提示输入密码了)。release版本在构建的时候不会进行签名,而是稍后在做。

当然我们还可以定义其他类型,如preview版本等。

其属性有:

Android使用Gradle实现多渠道打包

就不再一一介绍了,主要介绍一下常用的几个:

  • debuggable:标志是否可以debug调试
  • signingConfig:标志签名配置
  • proguardFiles:标志混淆文件
  • minifyEnabled:标志是否开启混淆
  • buildConfigField:自定义全局变量,供BuildConfig中创建和调用,其格式为:
buildConfigField "boolean", "LOG_DEBUG", "false"

productFlavors

productFlavors顾名而思义,就是用于定义产品的特性,这是每个产品不同的地方。有了它我们可以用同一套代码创建不同的产品。设置productFlavors的方法如下:

在build.gradle中加入productFlavors结构

Android使用Gradle实现多渠道打包

在其中每一种产品中可定义不用的属性,已创建不同的应用。

在每一种产品中,都可以类似defaultConfig进行属性设置,也有一些特殊属性,看个示例:

Android使用Gradle实现多渠道打包

  • applicationId: 应用包名
  • versionCode:版本号
  • versionName:版本名
  • buildConfigField:自定义属性,和buildTypes中类似
  • manifestPlaceholders:manifest文件中属性

好了,我们一起使用productFlavors进行多渠道打包:

1、gradle中创建各产品:

Android使用Gradle实现多渠道打包

如果在各产品中声明不同的包名,那么它们就是不同的应用了,也就是说,可以同时安装在一个手机上。但我们不想这样,除了友盟渠道号不同外,其他都相同,所以我们只设置友盟渠道号:

Android使用Gradle实现多渠道打包

2、Sync Now

Sync Now后,您就会发现,在Build Variants中:

Android使用Gradle实现多渠道打包

您已经发现:
版本数=buildTypes* productFlavors

然后您就可以运行各渠道对应的应用了。

3、清单文件中使用

定义了umeng_key和umeng_channel有什么用呢,我们知道manifestPlaceholders中就是定义清单文件的站位变量,所以接下来一个在清单文件中运用:

Android使用Gradle实现多渠道打包

4、打包上线即可

今天只是简单的总结了下使用Gradle进行多渠道打包上线,有不对的地方希望大家指出。

获取更多精彩内容,请关注我的微信公众号——安卓干货营
Android使用Gradle实现多渠道打包