Android开发中如何实现多渠道打包Gradle

  介绍

这篇文章将为大家详细讲解有关Android开发中如何实现多渠道打包Gradle,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

什么是多渠道打包以及多渠道打包可以做什么,这里就不做介绍了,相信看到这篇文章的你已经了解了,多渠道打包的方式比较多,这里我们用Gradle多渠道打包方式。

网上看到的大多数文章都只讲解了

1。如何修改包名

2。如何修改变量的值

3。如何替换字符串中的资源

4。如何替换AndroidManifest中的资源

本篇文章会在上述知识点上增加

5。不同渠道如何使用不同的java文件

6.基础模块化中如何使用多渠道

新建项目,在应用下构建。android下gradle中添加如下代码:

productFlavors {   百度{   applicationId“com.baidu"   buildConfigField“String"、“BaseApi" & # 39;“http://baidu.com" & # 39;   resValue“string"、“tip" & # 39;“你好这是形式baidu" & # 39;   manifestPlaceholders=[   app_name:“百度APP"   ]   }   sougou {   applicationId“com.sougou"   buildConfigField“String"、“BaseApi" & # 39;“http://sougou.com" & # 39;   resValue“string"、“tip" & # 39;“你好这是形式sugou" & # 39;   manifestPlaceholders=[   app_name:“搜狗APP"      ]      }   }

这里我们定义两个渠道,一个渠道名称是百度,一个渠道名称是sougou,通过applicationId直接指定应用包名

不同渠道我们使用的请求地址不同,字段是BaseApi,我们可以通过buildConfigField指定BaseApi中的值,通过buildConfigField

指定的值,我们可以在系统生成的BuildConfig中获取,比如我们获取多渠道中定义的BaseApi:

字符串baseApi=BuildConfig.BaseApi; 

我们来看下BuildConfig中的内容

 Android开发中如何实现多渠道打包Gradle

baseApi是我们自己定义的,其他的都是默认生成的,这里我们可以看的到,应用包名也是我们指定的。

resValue我们可以修改变量的值,这个值会生成在string.xml中,比如上面我们定义了一个提示变量,需要注意的是,这个变量不能出现在字符串。xml中,否则会提示资源重复。

如果要定义在配置文件中使用的值,则需要使用

 manifestPlaceholders 

我们分别修改app_name的值,在配置文件中使用占位符${}使用,如下:

android:标签=? {app_name}“

接下来,我们将小费的值和BaseApi显示在TextView上,分别运行应用的百度渠道版本和sougou渠道版本

 android开发中如何实现多渠道打包Gradle

百度渠道运行如下:

 android开发中如何实现多渠道打包Gradle

sougou渠道运行如下:

 android开发中如何实现多渠道打包Gradle

从运行结果我们可以看出来,已经达到我们想要的结果了。

那么如何修改不同渠道的应用图标呢,当然我们可以在manifestPlaceholders中添加图标资源的占位符,但是我们这里使用另一种方法,

有时候我们不仅要替换图标,可能要替换生下的资源或者资产下的资源,这种情况下我们就需要

使用下面的方式:

在src目录下新建与主同级且与渠道名称一样的文件包名,并且新建res资源目录、放入图标使用的图片资源,必须要与中主要的名称相同才可以覆盖,如图所示:

 android开发中如何实现多渠道打包Gradle

并且在Gradle中设置sourceSet

sourceSets {   百度{   res.srcDirs=[& # 39; src/百度/res # 39;, & # 39; src/百度/res # 39;】      }   sougou {   res.srcDirs=[& # 39; src/sougou/res # 39;, & # 39; src/sougou/res # 39;】      }      }

我们通过res。srcdir就指定了不同渠道使用的资源文件,这里从网上随便找了两张截图作为图标(如有侵权,联系删除)

 Android开发中如何实现多渠道打包Gradle

Android开发中如何实现多渠道打包Gradle