成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Android Gradle多渠道打包的實現方法

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

一、前言

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

和其他文章有什么不同

網上看到的大多數文章都只講解了

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直接指定應用包名

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

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

String baseApi = BuildConfig.BaseApi;

我們來看下BuildConfig中的內容

Android Gradle多渠道打包的實現方法

BaseApi是我們自己定義的,其他的都是默認生成的,這里我們可以看到,應用包名也是我們指定的。

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

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

manifestPlaceholders

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

android:label='${app_name}'

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

Android Gradle多渠道打包的實現方法

baidu渠道運行如下:

Android Gradle多渠道打包的實現方法

sougou渠道運行如下:

Android Gradle多渠道打包的實現方法

從運行結果我們可以看出來,已經達到我們想要的結果了。

如何使用不同的app圖標

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

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

使用下面的方式:

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

Android Gradle多渠道打包的實現方法

并且在gradle中設置sourceSet

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

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

Android Gradle多渠道打包的實現方法

Android Gradle多渠道打包的實現方法

運行兩個app,結果顯示如下:

Android Gradle多渠道打包的實現方法

moudle中如何配置多渠道

在實際的開發中,我們可能會有一個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’)

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

publishNonDefault true

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

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

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

Android Gradle多渠道打包的實現方法

設置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’] }}

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

運行效果如下所示:

Android Gradle多渠道打包的實現方法

Android Gradle多渠道打包的實現方法

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

總結

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

標簽: Android
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产电影精品久久禁18| 日韩激情一区二区| 亚洲自拍都市欧美小说| 欧美久久电影| www国产精品av| 成人免费精品视频| 欧美日韩一区三区| 麻豆国产精品一区二区三区 | 黄色成人91| 国产丝袜欧美中文另类| 99免费精品视频| 欧美xxxx老人做受| 国产盗摄女厕一区二区三区| 欧美伦理电影网| 五月天一区二区| 国产农村妇女精品一二区| 亚洲免费观看高清在线观看| 欧美人成网站| 欧美国产日韩在线观看| 91美女精品福利| 国产日韩三级在线| 欧美国产综合| 国产精品少妇自拍| 韩国在线一区| 亚洲三级在线观看| 亚洲视频1区| 亚洲国产综合91精品麻豆| 一区二区av| 一区二区三区久久| 亚洲天堂激情| 亚洲欧美激情小说另类| 亚洲深夜av| 日本不卡高清视频| 欧美日韩国产成人在线91| 久久精品av麻豆的观看方式| 欧美区在线观看| 丰满少妇在线播放bd日韩电影| 精品欧美一区二区久久| 99精品视频一区二区三区| 久久久不卡网国产精品二区| 欧美另类专区| 亚洲欧美另类久久久精品| 亚洲欧洲在线一区| 一区二区三区中文字幕在线观看| 影音先锋日韩资源| 亚洲人成精品久久久久久| 国产日韩欧美一区二区| 亚洲午夜精品在线| 老司机免费视频久久| 老司机午夜精品| 欧美精品免费视频| 99热精品一区二区| 国产精品久久久久婷婷| 亚洲裸体俱乐部裸体舞表演av| 一级女性全黄久久生活片免费| 久久久久久色| 国产最新精品免费| 精品国精品自拍自在线| 欧美日韩综合久久| 亚洲天堂中文字幕| 免费永久网站黄欧美| 美女尤物国产一区| 日韩情涩欧美日韩视频| 91亚洲资源网| 亚洲摸摸操操av| 色素色在线综合| 国产精品1区二区.| 中文字幕久久午夜不卡| 国产美女一区| 久久99国产精品尤物| 欧美mv和日韩mv国产网站| 午夜视频精品| 亚洲一区二区三区四区在线| 欧美亚洲图片小说| 国产精品亚洲人在线观看| 久久久久久电影| 国产亚洲精品自拍| 久国产精品韩国三级视频| 欧美tickle裸体挠脚心vk| 国产精品地址| 日韩专区一卡二卡| 日韩欧美亚洲一区二区| 极品少妇一区二区三区| 日韩中文字幕91| 精品国产乱码久久久久久浪潮 | 亚洲人成久久| 欧美a一区二区| 2021久久国产精品不只是精品| 亚洲巨乳在线| 国产一区视频导航| 国产日韩欧美制服另类| 亚洲在线黄色| 国产精品99久久久久久宅男| 国产精品久久网站| 欧美在线观看一区| 午夜国产欧美理论在线播放| 午夜国产精品影院在线观看| 欧美mv日韩mv国产网站| 亚洲欧美日韩在线观看a三区| 国产一区二区导航在线播放| 国产精品美女久久久久久久久| 久热综合在线亚洲精品| 99精品视频在线播放观看| 亚洲18女电影在线观看| 国产视频一区在线观看 | 欧美日韩成人一区二区三区| 日产国产欧美视频一区精品| 国产日韩欧美高清在线| 欧亚洲嫩模精品一区三区| 欧美精品99| 国产真实乱偷精品视频免| 亚洲欧美一区二区在线观看| 欧美在线看片a免费观看| 在线观看欧美亚洲| 国产经典欧美精品| 亚洲午夜激情网页| 久久久国产精华| 欧美巨大另类极品videosbest| 亚洲人成免费| 9色porny自拍视频一区二区| 日本aⅴ免费视频一区二区三区| 久久综合久久鬼色| 在线免费观看日本欧美| 欧美日韩精品免费观看视频完整| 精品在线免费观看| 一区二区三区小说| 国产亚洲欧洲997久久综合| 久久综合激情| 韩日精品在线| 成人午夜看片网址| 日日摸夜夜添夜夜添亚洲女人| 中文字幕一区二区三中文字幕| 日韩一区二区三区电影| 色噜噜久久综合| 亚洲国产一区二区三区高清| 成人国产精品免费观看动漫| 人人超碰91尤物精品国产| 亚洲色图一区二区| 久久网这里都是精品| 欧美日韩在线不卡| 久久精品国产清高在天天线 | 日韩不卡一区二区| 亚洲人成精品久久久久久| 久久久久亚洲蜜桃| 91精品国产综合久久精品图片| 一本久久a久久精品亚洲| 在线日韩视频| 91网站视频在线观看| 国产高清亚洲一区| 青草av.久久免费一区| 一区二区三区在线免费| 中文一区二区在线观看| 精品国产一区二区亚洲人成毛片| 91精品福利在线一区二区三区| 一本色道亚洲精品aⅴ| 亚洲一区日韩| 一级成人国产| 99精品欧美| 激情综合电影网| 韩日午夜在线资源一区二区| 色综合视频一区二区三区高清| 不卡的电视剧免费网站有什么| 国产不卡视频在线观看| 国精产品一区一区三区mba桃花| 日本一道高清亚洲日美韩| 亚洲电影你懂得| 亚洲国产日产av| 一区二区三区在线观看视频| 中文字幕一区二区三| 中国色在线观看另类| 欧美精品一区二区三区高清aⅴ | 欧美成人综合网站| 欧美一区二区精品在线| 欧美视频在线观看一区二区| 日本道色综合久久| 色狠狠综合天天综合综合| 久久久久久久高潮| 日本韩国精品一区二区在线观看| 一本到三区不卡视频| 色天天综合久久久久综合片| 一本色道久久综合狠狠躁的推荐 | 91麻豆文化传媒在线观看| 99精品欧美一区二区三区小说| 国产成人av一区二区三区在线观看| 激情国产一区二区| 国产麻豆精品在线| 国产精品系列在线播放| 丁香婷婷综合激情五月色| 成人综合婷婷国产精品久久蜜臀| 国产成人精品影院| 国内精品久久久久影院薰衣草| 久久99精品国产.久久久久| 狠狠色伊人亚洲综合成人| 久久成人久久爱| 国产成人亚洲综合a∨猫咪| 国产乱一区二区| 成人免费毛片aaaaa**| 色综合天天综合给合国产| 精品不卡一区二区三区| 夜夜嗨一区二区|