外賣O2O戰火一直未停息,去年是美團外賣與餓了麼線下地推人員的掐架。上周,又爆出美團與大眾點評地推間的鬥毆。商業戰爭鬥智鬥勇,上升體膚格鬥遠未止步,我們看不見的是背後還有「技術冷暴力」。就以外賣O2O為例,美團外賣給大家上了一堂公開課。
據極客頭條報道,6月18日下午,一位元程式員小夥在知乎上發了一則帖子技術揭幕貼,題目《如何評價美團外賣強殺競爭對手的 App 進程?》。
該程式員在反編譯完美團外賣商家Android版後,發現其中有一個殺死後台運行進程的權限,通過Android開發者官方文檔,他隨之找到了killBackgroundProcesses(String packageName)的調用處,發現美團的Android程式員直接用Hardcode寫死了四款App的包名——餓了麼商家版、點評商家版、淘點點商家版、百度外賣商家版。
這位舉報者指出,美團調用killBackgroundProcesses(String packageName)方法的類名是FriendUtil,最後他表示美團大膽地用Hardcode封殺的行為,實在有點過了。
反編譯美團APP的大致過程
知乎上的那位元程式員小夥如此反編譯的。
1. 一開始是這樣的,在反編譯完美團外賣商家Android版後,我發現其中有一個殺死後台運行進程的權限:
Android開發者官方文檔描述如下:
Have the system immediately kill all background processes associated with the given package. This is the same as the kernel killing those processes to reclaim memory; the system will take care of restarting these processes in the future as needed.You must hold the permission KILL_BACKGROUND_PROCESSES to be able to call this method.
2. 看到這個權限後,第一感覺應該是美團為了保證自己App可以流暢運行而殺死後台長時間不運行的App,憑借著職業的敏感繼續跟進,終於找到killBackgroundProcesses(String packageName)的調用處:
3. 從調用處看,美團並未使用很高深的技術來判斷後台運行進程來選擇殺死長期不運行的App,而是直接用Hardcode寫死了四款App的包名,細心讀了讀包名,結果讓我震驚。
這些熟悉的名字,每個都是美團的競對。原來美團並不是為了讓自己App運行更流暢而殺死別的App,而是直接封殺競對的App。
4. 從上圖看,調用killBackgroundProcesses(String packageName)方法的類名是FriendUtil,也就是美團字面上稱競對是朋友,然後背後捅一刀子。
美團的回應
美團公司的副總王慧文(外賣事業部負責人)在當晚9點多給出了詳細的調查結果:
這段代碼是在 2014 年7 月 10 日提交的,當時我們在做藍牙列印機的 MVP (可以理解為實驗)版本,我們的一個工程師發在部分Android系統上 APP 在連接藍牙列印機的時候,如果列印機已經被其他 APP 佔用埠,則需要重啟列印機;由於各同行商家端 APP 後台自動喚醒程式,用這種方法能減少商家操作,也不會給同行業務帶來實質上的損害。
隨後,王慧文表示美團將發布「全量發版更新掉了這段代碼」,並做了道歉。另外代碼的編寫者(已離開美團,前員工也能很快找到並回應,看人家這執行力)也給出了自己的說明,並道歉。
知乎上很多討論來自「殺與被殺」當事雙方,都有些意氣用事,多數都沒什麼價值。但其中董涵的回答中,建議這種情況下,可以「使用斷開後重連的方式來強制再次連接……畢竟你們使用的藍牙列印機應該是不同的,可以判斷出是否是自己應用連接上。實在不行,可以先disable後再enable。」
十三郎還給出了代碼:
BluetoothAdapter.getDefaultAdapter().enable(); BluetoothAdapter.getDefaultAdapter().disable();
對此,代碼編寫者回復:
商家那塊一般只會放一台藍牙列印機,所以當一個app連接上的時候,另外一個app必然不能連接
關於斷開藍牙重連的思路,這個早就嘗試過,但是沒有效果,原因據我猜測,同行的app監聽的藍牙廣播,並且後台自啟動,所以即使我們應用在前臺,只要他們應用在後台運行著,藍牙埠也會被搶先佔用,所以才考慮kill後台進程的方案
餓了麼的產品經理sacho則從產品角度提出了一種解決方案:
針對你說的藍牙埠被其他 app 佔用無法連接的問題,餓了麼的產品經理會給出如下解決方案:彈窗提醒用戶問題所在,請用戶選擇是否強行關閉其他 app。
不管是有意還是無意,偶然性的針對同行對手,背後折射的是商競爭中的技術冷暴力,這也給互聯網技術型創業公司上了一堂公開。
From 虎嗅
一堂「技術冷暴力」的公開課:美團如何遠程射殺餓了麼、大眾點評及淘點點等外賣APP