


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android怎么使用美團(tuán)多渠道打包方案
這篇文章將為大家詳細(xì)講解有關(guān)Android怎么使用美團(tuán)多渠道打包方案,在下覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。Andorid渠道市場(chǎng)有多分散呢?分散到比Android碎片化還嚴(yán)重,你還在為多渠道打包而頭疼嗎?美團(tuán)提供了速度快到白駒過(guò)隙的多渠道打包方案。說(shuō)的有點(diǎn)夸張,對(duì),雖然夸張,但是確實(shí)很快,不夸張不足以形容其快。廢話(huà)不多說(shuō),先講原理,再講實(shí)踐方法。新舊打包方法原理對(duì)比講解傳統(tǒng)方式在AndroidManifest定義渠道的年代,多渠道打包無(wú)非以下兩種方案:方案一:完全的重新編譯,即在代碼重新編譯打包之前,在AndroidManifest中修改渠道標(biāo)示;方案二:通過(guò)ApkTool進(jìn)行解包,然后修改AndroidManifest中修改渠道標(biāo)示,最后再通過(guò)ApkTool進(jìn)行打包、簽名。這兩種打包方式,不管是哪種,效率都很低,方案一毫無(wú)效率可言,而且打包的渠道規(guī)模非常小,第二種方案效率稍微高些,打包的渠道規(guī)模也還可以,但是這兩種方案速度慢的驚人,如果你打個(gè)上百的渠道包試試,估計(jì)你的電腦能卡一下午。慢,當(dāng)然也有好處,你可以不用工作了,喝著咖啡,玩著手機(jī)慢慢等也很愜意是不?哈哈……美團(tuán)高效的多渠道打包方案美團(tuán)高效的多渠道打包方案是把一個(gè)Android應(yīng)用程序包當(dāng)作一個(gè)zip文件包進(jìn)行解壓,然后發(fā)現(xiàn)在簽名生成的目錄下添加一個(gè)空文件,空文件用渠道名來(lái)命名,而且不需要重新簽名。這種方式不需要重新簽名,編譯等步驟,使得這種方法非常高效。第一步:解壓apk文件我們直接解壓apk,解壓后的根目錄會(huì)有一個(gè)META-INF目錄如果在META-INF目錄內(nèi)添加空文件,可以不用重新簽名應(yīng)用。因此,通過(guò)為不同渠道的應(yīng)用添加不同的空文件,可以唯一標(biāo)識(shí)一個(gè)渠道。第二步:用python腳本向apk文件中添加空渠道文件我們用python代碼來(lái)給apk添加空的渠道文件,渠道名的前綴為mtchannel_:import
zipfile
zipped
=
zipfile.ZipFile(your_apk,
'a',
zipfile.ZIP_DEFLATED)
empty_channel_file
=
"META-INF/mtchannel_{channel}".format(channel=your_channel)
zipped.write(your_empty_file,
empty_channel_file)添加完空渠道文件后的目錄,META-INFO目錄多了一個(gè)名為mtchannel_meituan的空文件第三步:用java代碼讀取渠道名,并動(dòng)態(tài)設(shè)置渠道名我們用腳本生成了文件之后,文件的名字是用渠道名來(lái)命名的,所以我們?cè)趩?dòng)程序的時(shí)候,可以用java代碼動(dòng)態(tài)讀取渠道名,并動(dòng)態(tài)的去設(shè)置。java代碼讀取渠道名的方法:public
static
String
getChannel(Context
context)
{
ApplicationInfo
appinfo
=
context.getApplicationInfo();
String
sourceDir
=
appinfo.sourceDir;
String
ret
=
"";
ZipFile
zipfile
=
null;
try
{
zipfile
=
new
ZipFile(sourceDir);
Enumeration<?>
entries
=
zipfile.entries();
while
(entries.hasMoreElements())
{
ZipEntry
entry
=
((ZipEntry)
entries.nextElement());
String
entryName
=
entry.getName();
if
(entryName.startsWith("mtchannel"))
{
ret
=
entryName;
break;
}
}
}
catch
(IOException
e)
{
e.printStackTrace();
}
finally
{
if
(zipfile
!=
null)
{
try
{
zipfile.close();
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
}
String[]
split
=
ret.split("_");
if
(split
!=
null
&&
split.length
>=
2)
{
return
ret.substring(split[0].length()
+
1);
}
else
{
return
"";
}
}讀取到了渠道名,我們就可以動(dòng)態(tài)的設(shè)置了,比如友盟渠道的動(dòng)態(tài)設(shè)置方法是:AnalyticsConfig.setChannel(getChannel(Contextcontext));這樣就好了。這種方式每打一個(gè)渠道包只需復(fù)制一個(gè)apk,在META-INF中添加一個(gè)使用渠道號(hào)命名的空文件即可。這種打包方式速度非常快,據(jù)說(shuō)900多個(gè)渠道不到一分鐘就能打完。我親測(cè)的是我用了10秒鐘打了32個(gè)渠道包,是不是很快。實(shí)踐使用你可能會(huì)說(shuō),我看不懂上面的python代碼,那個(gè)腳本里的內(nèi)容看不明白,這個(gè)沒(méi)關(guān)系。你仔細(xì)明白了原理即可,因?yàn)橛腥私o你造輪子,我們直接騎就可以了。實(shí)踐方法使用第一步:配置python環(huán)境我們既然需要使用腳本打包,那么相應(yīng)的電腦上必須有可以運(yùn)行python腳本的運(yùn)行環(huán)境。所以我們第一步是要配置python運(yùn)行環(huán)境。自己去官網(wǎng)下載安裝即可,非常簡(jiǎn)單。官網(wǎng)地址:/第二步:設(shè)置python腳本并把封裝好的類(lèi)放到工程里好心人已經(jīng)把運(yùn)行的打包腳本寫(xiě)好了,并且也封裝了讀取渠道號(hào)的實(shí)體工具類(lèi)。大家只需要去github上下載即可。地址:/GavinCT/AndroidMultiChannelBuildTool當(dāng)然在github上也有相關(guān)的使用介紹,非常簡(jiǎn)單,一看就懂。這里簡(jiǎn)單說(shuō)下,下載下來(lái)有個(gè)ChannelUtil.java類(lèi),里面封裝好了獲取渠道號(hào)的方法,你只需要在啟動(dòng)應(yīng)用程序的地方調(diào)用友盟的設(shè)置代碼即可,比如:AnalyticsConfig.setChannel(ChannelUtil.getChannel(this))。第三步:配置渠道列表我們?cè)趃ithub上把輪子下載下來(lái)之后,你解壓文件,在PythonTool/Info/channel.txt中編輯渠道列表,沒(méi)寫(xiě)一個(gè)渠道名,換行即可。第四步:復(fù)制簽好名的包,運(yùn)行腳本你把你已經(jīng)簽名打包好的apk文件,復(fù)制到PythonTool目錄下和MultiChannelBuildTool.py這個(gè)腳本同級(jí),直接雙擊點(diǎn)擊MultiChannelBuildTool
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品召回與處理協(xié)議
- 雕塑制作合同協(xié)議書(shū)
- 電子商務(wù)平臺(tái)使用授權(quán)及運(yùn)營(yíng)協(xié)議
- 企業(yè)級(jí)云計(jì)算解決方案服務(wù)合同
- 醫(yī)院合作框架協(xié)議書(shū)
- 戶(hù)外運(yùn)動(dòng)場(chǎng)地租賃使用協(xié)議
- 文藝晚會(huì)演出合同
- 鄉(xiāng)村農(nóng)業(yè)示范園合作開(kāi)發(fā)協(xié)議
- 戰(zhàn)略規(guī)劃咨詢(xún)合同
- 產(chǎn)品研發(fā)外包服務(wù)合同
- 2025年城市現(xiàn)代化策劃合同范本
- 2025年安徽水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及完整答案一套
- 2025年皖西衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 踝關(guān)節(jié)骨折中醫(yī)護(hù)理方案
- 2025年黑龍江省伊春市單招職業(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 8.3 摩擦力(課件)2024-2025學(xué)年人教版八年級(jí)物理下冊(cè)
- 2025年黑龍江職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 第五章產(chǎn)前檢查及高危妊娠監(jiān)測(cè)課件
- 環(huán)水保培訓(xùn)資料
- 2025中智集團(tuán)招聘重要崗位高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年第六屆美麗中國(guó)全國(guó)國(guó)家版圖知識(shí)競(jìng)賽題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論