日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:172日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品亚洲成人| 亚洲三级网址| 香蕉久久久久久| 久久亚洲色图| 亚洲作爱视频| 欧美中文字幕一区二区| 日韩欧美二区| 成人美女视频| 亚洲综合电影| 久久在线视频免费观看| 91精品在线观看国产| 久久高清免费| 亚洲欧美日本日韩| 亚洲毛片视频| 91嫩草精品| 国产在线日韩精品| 国产黄大片在线观看| 人人香蕉久久| 蜜臀久久99精品久久久画质超高清 | 一区二区三区视频免费观看| 久久亚洲在线| 日本精品另类| 久久精品av麻豆的观看方式| 日韩综合一区二区三区| 深夜日韩欧美| 久久精品国产成人一区二区三区| 精品少妇一区| 欧美一区二区性| 欧美一级久久| 欧美黄色网页| 热久久免费视频| www.51av欧美视频| 亚洲欧洲av| 91一区二区三区四区| 999国产精品视频| 日韩高清二区| 91精品一区二区三区综合| 亚洲精品极品| 91精品二区| 国产精品美女午夜爽爽| 亚洲精品网址| 理论片午夜视频在线观看| 亚洲一区二区日韩| 日韩欧美在线中字| 欧美在线看片| 久久亚洲电影| 久久精品99久久无色码中文字幕| 国产伦一区二区三区| 欧美精品高清| 国产欧美日韩在线一区二区| 制服诱惑一区二区| 日韩精品欧美| а√天堂8资源中文在线| 日韩欧美2区| 一本大道色婷婷在线| 欧美精品导航| 国产欧美一区| 97成人在线| 日韩中出av| 欧美精品一区二区久久| 久久久男人天堂| 久久精品一区二区国产| 日本少妇精品亚洲第一区| 免费成人av在线播放| 99国内精品| 视频一区二区中文字幕| 亚洲深夜福利| 亚洲欧美日韩国产| 在线亚洲自拍| 狠狠爱成人网| 欧美精品自拍| 亚洲自啪免费| 婷婷亚洲精品| 国产欧美一区二区三区国产幕精品| 日韩精品五月天| 亚洲一区二区三区久久久| 亚洲精品在线二区| 日韩精品电影一区亚洲| 天堂俺去俺来也www久久婷婷| 亚洲ww精品| 日韩高清在线一区| 美女免费视频一区| 新版的欧美在线视频| 亚洲成人三区| 99视频一区| 国产日韩欧美一区二区三区在线观看| 欧美三级第一页| 日韩精品亚洲一区二区三区免费| 国产一卡不卡| 精品一区电影| 久久视频精品| 亚洲精品高潮| 吉吉日韩欧美| 爽好久久久欧美精品| 欧美日韩1区2区3区| 成人黄色av| 亚洲午夜免费| 精品伊人久久| 亚洲视频播放| 日本亚洲最大的色成网站www| 国产精品久久久久av蜜臀| 日韩高清一区| 午夜精品成人av| 日韩综合一区二区| 亚洲成人va| 日韩国产91| 午夜欧美精品| 三上亚洲一区二区| 奇米狠狠一区二区三区| 久久免费高清| 国产精品第一国产精品| 欧美日韩国产在线一区| 国产精品v日韩精品v欧美精品网站 | 国产欧美日韩精品一区二区免费 | 国产精品sm| 日韩一级网站| 99久久夜色精品国产亚洲狼 | 欧美在线资源| 国产精品白浆| 欧美有码在线| 日韩精品一区二区三区av| 99国产精品私拍| 激情综合网五月| 日韩在线高清| av免费不卡国产观看| 久久一区精品| 国产精品二区影院| 日本国产欧美| 日韩欧美2区| 亚洲精品免费观看| 亚洲调教视频在线观看| 亚洲国产成人二区| 精品国产一级| 国产一区二区三区天码| 国产精品久久乐| 国产亚洲精品美女久久| 首页国产欧美久久| 最新国产拍偷乱拍精品| 91精品观看| 蜜臀精品一区二区三区在线观看 | 欧美专区一区二区三区| 青青青免费在线视频| 精品五月天堂| 精品午夜视频| 国产v日韩v欧美v| 亚洲精品一区三区三区在线观看| 91精品一区二区三区综合在线爱| 久久激情婷婷| 日本精品不卡| 婷婷综合网站| 午夜在线视频观看日韩17c| 亚洲色图国产| 国产乱子精品一区二区在线观看| 精品久久99| 成人精品中文字幕| 亚洲一级网站| 日韩激情网站| 美腿丝袜在线亚洲一区| 中文字幕人成乱码在线观看 | 伊人精品一区| 午夜久久久久| 色婷婷色综合| 国产精品对白| 日本成人在线视频网站| 欧美资源在线| 欧美中文字幕一区二区| 欧美国产专区| 综合国产精品| 欧美/亚洲一区| 久久爱www.| 三级欧美在线一区| 欧美影院三区| 国产超碰精品| 精品香蕉视频| 你懂的国产精品| 日韩在线观看一区二区| 久久久久91| 亚洲成人日韩| 欧美日韩精品免费观看视频完整| 亚洲伦乱视频| 日本免费在线视频不卡一不卡二| 天堂久久av| 久久一区二区三区喷水| 精品网站999| 日韩 欧美一区二区三区| 国产精品日本| 欧美日韩免费观看一区=区三区 | 日韩精品诱惑一区?区三区| 日韩精品成人在线观看| 日韩一级网站| 日韩精品一二三四| 日本高清久久| 精品视频在线一区二区在线| 国产自产自拍视频在线观看| 蜜桃精品视频| 国产精品2区| 国产精品日本一区二区不卡视频 | 国产一区二区高清| 久久国产亚洲精品| japanese国产精品|