电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Android Gradle多渠道打包的實現(xiàn)方法

瀏覽:51日期:2022-09-21 17:31:19

一、前言

什么是多渠道打包以及多渠道打包可以做什么,這里就不做介紹了,相信看到這篇文章的你已經(jīng)了解了,多渠道打包的方式比較多,這里我們用Gradle多渠道打包方式。

和其他文章有什么不同

網(wǎng)上看到的大多數(shù)文章都只講解了

1.如何修改包名

2.如何修改變量的值

3.如何替換string中的資源

4.如何替換AndroidManifest中的資源

本篇文章會在上述知識點上增加

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

6.Base模塊化中如何使用多渠道

新建項目,在app下build.gradle中android下添加如下代碼:

productFlavors{ baidu{ applicationId 'com.baidu' buildConfigField 'String','BaseApi',’'http://baidu.com'’ resValue 'string','tip',’'hello this is form baidu'’ manifestPlaceholders = [ app_name:'百度APP' ] } sougou{ applicationId 'com.sougou' buildConfigField 'String','BaseApi',’'http://sougou.com'’ resValue 'string','tip',’'hello this is form sugou'’ manifestPlaceholders = [ app_name: '搜狗APP' ] }}

這里我們定義兩個渠道,一個渠道名稱是baidu,一個渠道名稱是sougou,通過applicationId直接指定應(yīng)用包名

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

指定的值,我們可以在系統(tǒng)生成的BuildConfig中獲取,比如我們獲取多渠道中定義的BaseApi:

String baseApi = BuildConfig.BaseApi;

我們來看下BuildConfig中的內(nèi)容

Android Gradle多渠道打包的實現(xiàn)方法

BaseApi是我們自己定義的,其他的都是默認(rèn)生成的,這里我們可以看到,應(yīng)用包名也是我們指定的。

resValue我們可以修改變量的值,這個值會生成在string.xml中,比如上面我們定義了一個tip變量,需要注意的是,這個變量不能出現(xiàn)在string.xml中,否則會提示資源重復(fù)。

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

manifestPlaceholders

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

android:label='${app_name}'

接下來,我們將tip的值和BaseApi顯示在TextView上,分別運行app的baidu渠道版本和sougou渠道版本

Android Gradle多渠道打包的實現(xiàn)方法

baidu渠道運行如下:

Android Gradle多渠道打包的實現(xiàn)方法

sougou渠道運行如下:

Android Gradle多渠道打包的實現(xiàn)方法

從運行結(jié)果我們可以看出來,已經(jīng)達(dá)到我們想要的結(jié)果了。

如何使用不同的app圖標(biāo)

那么如何修改不同渠道的app圖標(biāo)呢,當(dāng)然我們可以在manifestPlaceholders中添加圖標(biāo)資源的占位符,但是我們這里使用另一種方法,

有時候我們不僅要替換圖標(biāo),可能要替換raw下的資源或者assets下的資源,這種情況下我們就需要

使用下面的方式:

在src目錄下新建與main同級且與渠道名稱一樣的文件包名,并且新建res資源目錄,放入圖標(biāo)使用的圖片資源,必須要與main中的名稱相同才可以覆蓋,如圖所示:

Android Gradle多渠道打包的實現(xiàn)方法

并且在gradle中設(shè)置sourceSet

sourceSets{ baidu{ res.srcDirs = [’src/baidu/res’,’src/baidu/res’] } sougou{ res.srcDirs = [’src/sougou/res’,’src/sougou/res’] }}

我們通過res.srcDirs就指定了不同渠道使用的資源文件,這里從網(wǎng)上隨便找了兩張截圖作為圖標(biāo)(如有侵權(quán),聯(lián)系刪除)

Android Gradle多渠道打包的實現(xiàn)方法

Android Gradle多渠道打包的實現(xiàn)方法

運行兩個app,結(jié)果顯示如下:

Android Gradle多渠道打包的實現(xiàn)方法

moudle中如何配置多渠道

在實際的開發(fā)中,我們可能會有一個base模塊,不同渠道base模塊中引用的資源也不同,我們該如何配置呢?

我們新建basemoudle模塊,app依賴basemodule模塊

同樣,我們在模塊的gradl下 配置如下:

productFlavors { baidu { buildConfigField 'String', 'BaseMoudeDesc', ’'這是base模塊百度的描述'’ resValue 'string', 'basetip', ’'i come form base_baidu'’ } sougou { buildConfigField 'String', 'BaseMoudeDesc', ’'這是base模塊搜狗的描述'’ resValue 'string', 'basetip', ’'i come form base_baidu'’ }}

因為我們的base模塊也有兩個渠道,所以app在依賴的時候,必須分渠道去依賴

baiduCompile project(path:’:basemodule’,configuration:’baiduRelease’)sougouCompile project(path: ’:basemodule’,configuration:’sougouRelease’)

我們直接編譯會出現(xiàn)上面的問題,因為module模塊可能沒有生成對應(yīng)的編譯資源,因為android的默認(rèn)編譯是debug類型的,所以為了和app主模塊同步,我們設(shè)置去掉默認(rèn)的發(fā)布類型,需要在module中的gradle中添加:

publishNonDefault true

變量的使用和上面app的使用方式一樣,在這里就不展示了。

不同渠道如何使用不同java文件

同不同渠道使用資源文件一樣,不過需要注意的是,main文件中就不能存放要替換的java文件了,否則會報資源重復(fù)的錯誤,同樣的我們在base模塊分別新建baidu和sougou渠道包,并且分別新建MainActivity,如圖所示。

Android Gradle多渠道打包的實現(xiàn)方法

設(shè)置java資源目錄

sourceSets { baidu { res.srcDirs = [’src/baidu/res’, ’src/baidu/res’] java.srcDirs = [’src/baidu/java’,’src/baidu/java’] } sougou { res.srcDirs = [’src/sougou/res’, ’src/sougou/res’] java.srcDirs = [’src/sougou/java’,’src/sougou/java’] }}

為了展示兩個頁面的不同,我們將百度渠道的頁面背景設(shè)為粉紅色,搜狗渠道的頁面背景設(shè)置藍(lán)色,在app添加按鈕并添加監(jiān)聽事件,打開module中的主頁面。

運行效果如下所示:

Android Gradle多渠道打包的實現(xiàn)方法

Android Gradle多渠道打包的實現(xiàn)方法

到這里,常用的多渠道打包需要的配置就結(jié)束了,如有錯誤歡迎指正。

總結(jié)

到此這篇關(guān)于Android Gradle多渠道打包的文章就介紹到這了,更多相關(guān)Android Gradle多渠道打包內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 达利园物流科技集团- | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂| 亿诺千企网-企业核心产品贸易| 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 广东成考网-广东成人高考网| PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 |