性欧美vr高清极品| 欧美V亚洲V综合Ⅴ国产V色欲|三区二区一区亚洲成高清女女| 国产福利2021最新在线91|

  • <xmp id="ccywu"><nav id="ccywu"></nav>
    <menu id="ccywu"><strong id="ccywu"></strong></menu>
    <input id="ccywu"><menu id="ccywu"></menu></input>
  • 移動開發的羅曼蒂克消亡史

    發布時間:2019-02-14 瀏覽次數:381次

    今天,我想給大家講一段故事,這個故事里包含有黑科技、天才少年,有意氣風發的豪情和壯志未酬的遺憾。更重要的是,這是一段真實的故事,是我人生中的一段重要經歷。

    對于互聯網人來說,這個冬天格外寒冷。

    “辛苦一年半,現在要被聯合創始人給踢出局了,技術創業真是悲哀?!币粋€沉寂已久的微信群里,突然冒出了這樣一句話。

    我看了一眼發消息的人,備注是“勇哥 創業”,我心里一緊。

    群友被這個消息炸出來,有的看熱鬧,有的義憤填膺,紛紛要求曝光無良公司。我卻不由得回想起當初與勇哥結識的故事。

    勇哥大名叫張勇,我與他相識是在 2015 年秋季,當時我正在一個程序員論壇上閑逛,突然一個帖子映入我的眼簾:“搞了個安卓上免安裝運行的,準備開源一下”。這個帖子一下子就引起了我的興趣。

    移動開發正是我當時的關注領域,我對智能手機上一切前沿的、好玩的技術都充滿好奇。帖子里說,他的這個技術可以通過主 App 啟動任意第三方 App,我以前從未聽說過這樣的技術。

    很快,通過朋友介紹,我和帖子的作者張勇搭上了線,他當時是安卓版 360 手機助手的技術負責人,9 月份,我前往酒仙橋 360 總部,與他見了面。

    張勇敦厚面相中透著機靈,和大部分程序員不一樣,他十分健談,說起自己開發的 DroidPlugin 眼里帶著光。和他聊了兩個小時,我確信,這是一項安卓開發黑科技。

    安卓黑科技

    中國的技術都是業務驅動的,先有需求,然后研究怎么能做到,DroidPlugin 誕生的背景也是如此。

    14 年左右,中國和國外的 App 理念走上了截然不同的兩條道路。在國外,一個 App 最多做兩三件事,但在中國,一個 App 恨不得裝下所有功能,這就是所謂的超級 App。

    超級 App 有很多好處,但是,谷歌在設計安卓的時候,沒有考慮到存在超級 App 的情況,在安卓早期版本里,一個 App 里只允許存在 65536 個方法,一旦超過就會報錯。65536 已經很大了,就和千年蟲問題一樣,開發安卓的工程師們根本沒想到有 App 會需要那么多的方法。

    這個問題在國外被 Facebook 發現了,Facebook 的 App 很大,可能是國外僅有的幾個可以稱作超級 App 的應用了,它給出了一個暫時繞過的解決辦法。

    國內開發者不滿足這種暫時繞過的方法,早在 2012 年,大眾點評的工程師圖毅敏在研究 Android 源碼的過程中就發現,通過對 AndroidDynamicLoader 方法的應用,可以做到動態加載資源甚至代碼。2014 年底,當時在百度的安卓工程師任玉剛開源了 Dynamic-load-apk,將這種方法更進一步。

    到張勇這里,他把動態代理發展到了極致,讓 Android 系統的四大組件都可以動態加載,這樣,安裝 App 的時候只用裝一個宿主 App 或者叫殼 App,然后在宿主 App 里遠程下載代表各個功能模塊的 App 就行了。這種技術流派,后來被稱為安卓插件化技術。

    想象一下,你的手機只用安裝一個 App,如果想用其它 App,點擊下載之后就可以運行,省去了麻煩的安裝過程,甚至你還可以用不同的賬號同時打開一個 App,這就是插件化的神奇之處。

    安卓插件化的一個變種是組件化技術,它并不用分成不同的 App,而是平時各個模塊分開開發,發布的時候一起打包,這種技術的集大成者就是手機淘寶研發的 Atlas 組件化框架,2014 年初伯奎對外首次分享,2017 年 3 月正式開源。

    超級 App 還會帶來一個問題,就是 App 的更新,當 App 由數十個團隊,數百上千人開發,版本控制和更新變成了一個很麻煩的事情,特別是線上版本發現 bug 時需要及時更新版本處理,而國內安卓渠道眾多,依賴各個平臺更新是不現實的,只有自己處理更新,為了降低更新給用戶帶來的影響,國內又發明了熱更新技術。

    早期的熱更新技術借鑒了安卓極客最愛的工具 Xposed,2015 年 7 月左右,淘寶的白衣開源了安卓切面編程框架 Dexposed,它在 Xposed 的基礎上進行改造,使其不需要 root 就可以任意改變應用的功能。但是,這個技術只支持 Dalvik 運行時,對于新的 ART 運行時無能為力。隨后不久,支付寶安卓團隊推出了 AndFix,能很好的支持 ART,很快成為阿里系的標準熱更新工具。

    2016 年,美團的人告訴我,他們在研究了 Android Studio 2.0 里的 Instant Run 功能后,推出了 Robust 熱更新框架,成為安卓熱更新的一個新的技術流派。

    插件化、組件化、熱更新,從 2015 年開始,國內的移動開發技術爆發了井噴式的發展,這些是國內獨有的技術,在這一期間涌現出無數開發者,他們抱著極大的熱情研究技術并進行開源和分享,那是一個對移動開發者最好的時代。

    在這一群人中,我有兩個人印象比較深刻。

    天才少年

    2016 年初,我開始籌辦 GMTC 全球移動技術大會,找張勇推薦講師,他給我介紹了羅迪。從勇哥的描述里,顯然他對羅迪的技術極為認同,然而讓我大吃一驚的是,羅迪當時才高二,還是個在校學生。

    毫無疑問這是一個天才少年。據他自述,他從初二開始自學編程,初三開始學 Java 和安卓開發,業余時間全部用來學習和研究 Android 源碼,這一點,就連職業的開發者也難以做到。他的天才并不是說具有學習和編程的天賦,而是可以靜下心來學習在一般人看起來枯燥的技術。

    不過,雖然我認同他的技術,但是在權衡之后我還是放棄了讓他當講師的想法,因為不想拔苗助長。但我邀請他來參加 GMTC 大會,以及一個安卓的閉門會議,并在閉門會議上做一個分享。

    6 月 24 號,GMTC 如期舉行,我也見到了羅迪,他在微信上很活躍,但在現實中看上去比較木訥,講一句話需要思考一段時間,不太擅長與人打交道。

    他說,插件化今后的方向是沙盒和雙開,后者又被稱為“分身”,曾有一段時間,各種手機游戲小號、微信分身非?;?,就是用的這種技術。

    值得一提的是,當年那次閉門會議,幾乎囊括了當時在安卓插件化方面研究最前沿的一批人,會議結束后,我請他們吃飯,拍照留念,現在一看,全是回憶。

    微信圖片_20190214103557.jpg

    GMTC2016 安卓插件化閉門會議合影,后排右二是羅迪)

    當時的羅迪已經被市場所發現了,我發布了采訪他的文章后,有人專門給我寫郵件想讓我把羅迪介紹給他,張勇還告訴我有老板專門到北京就是為了看他。

    再后來我沒有他的消息了,不過,他給我帶來了一點體會:當一個行業井噴時,會有這樣超出常理的天才涌現。

    Bang 和他的 JSPatch

    上面介紹的技術都是安卓平臺的,iOS 和安卓平臺的技術差異很大,像插件化這樣的技術不太可能實現。在那幾年里,iOS 討論最多的是組件化。

    不過,iOS 和安卓有一個共同的需求,那就是熱更新,和安卓分發渠道太多不同,iOS 需要熱更新,是因為蘋果審核太慢,以及審核容易發生意外,雖然蘋果有快速審核通道,但那遠遠不夠。我們需要能繞過蘋果審核的更新辦法。Bang 的 JSPatch 應運而生。

    Bang 是潮汕人,2016 年我邀請他參加了第一屆 GMTC 大會,在短時間的接觸中,感覺似乎比較靦腆,但在網絡上,他有一個博客,我很喜歡看他的博文,不僅言之有物,而且能切中要害。

    Bang 因為 JSPatch 而名聲鵲起,GMTC 的時候他的演講爆滿,有人專門過去看他。

    JSPatch 并不是第一個 iOS 熱更新工具,在之前還有基于 Lua 的 WaxPatch,后來由淘寶的君展維護,但 WaxPatch 需要帶一個 Lua 運行時會增大體積,而 JSPatch 則頗為小巧,借助 iOS 平臺內嵌的 JS 引擎,代碼行數長期保持在 2000 行以下。從 2016 年起,我了解到的國內大多數頭部應用,幾乎全部使用了 JSPatch,包括互相之間存在競爭的 BAT 巨頭們,在注重門戶之見的國內,這實在是個了不起的成就。

    然而,正因為 JSPatch 的流行,當蘋果決定收緊審核政策時,JSPatch 首當其沖,結果讓整個中文互聯網幾乎都受到了影響,這個下面再談。

    百花齊放的時代

    2016 年,國內的移動開發技術發展到了最鼎盛的時期。插件化 / 熱更新成為顯學,成為高級工程師的必修課。

    張勇在樂視最風光的時候去了樂視體育,后來又被人鼓動,以技術入股的形式去做 PC 安卓模擬器的創業。

    360 安全衛士的張炅軒等,開發了一個更完美的插件化技術 RePlugin,并在 2017 年的 GMTC 上開源。

    聚劃算的樸誠發布了 LuaView,另一個基于 Lua 的 iOS 熱更新工具。

    剛剛收到蘋果投資的滴滴宣布合并 Uber 中國,它招募了當時 iOS 領域的大牛 Sunny 孫源和安卓的任玉剛,開始在移動技術上大展拳腳。過不久,Sunny 就推出 iOS 動態化方案 DynamicCocoa,它比 JSPatch 更加激進,已經有安卓插件化的幾分模樣;曾鼓搗出 Dynamic-load-apk 的任玉剛則推出安卓插件化方案 VirtualAPK,與 RePlugin 同臺競技。

    QQ 還推出了一個號稱史上最瘋狂的 iOS 動態化方案 OCS,它們開發了一個自己的中間語言 OCScript,還開發了一個自己的虛擬機 OCSVM 去執行它……稍微懂點編程的就知道這是一個多么瘋狂的方案。

    那的確是一個百花齊放的時代。而身處這個時代甚至參與其中,幾乎每天我都活在激動當中。

    很多人不知道的是,InfoQ 的使命是推動軟件技術發展,這是一個頗顯狂妄的說法,技術推動社會發展,而我們要推動技術發展。我將它當作了我的職業信條。在那段時間里,我能感覺到所處領域每天都在往前發展,能感覺到我所作的事情,無論是報道和微信社群,還是線下大會和沙龍,就像拓荒一樣,都在一點點的推動這個領域的外延更加擴大。沒有比這更好的工作了。

    當時我發現一個問題,就是這些黑科技只在國內發展,沒有人把它介紹到國外去,國內外之間缺乏交流。于是我給 InfoQ 英文站的社區編輯 Sergio De Simone 寫了一封郵件,看看有沒有可能對國內的技術做一些報道。Sergio 是一名軟件工程師,業余時間幫 InfoQ 英文站寫了許多技術報道,其中大部分是移動領域的。

    微信圖片_20190214103617.jpg

    然而 Sergio 的回復讓我比較沮喪,他認為這些技術違反蘋果和谷歌的規則,不太可能在國外應用,因此報道的興趣不大。曾經動過想把張勇推薦到國外 QCon 的心思也熄滅了。

    2016 年 6 月的閉門會議上,我號召大家多多在國外網站和社區上推廣插件化技術,可惜沒人聽進去,在我了解的范圍內,唯一做過這方面的努力的是 LBE 的馮森林,他在參加 Google IO 的時候向國外工程師演示插件化的神奇,據說當時老外驚呆了。后來谷歌推出了自己的免安裝應用 Instant Apps,不知道是否有受到啟發。

    現在回想起來,我當時可以做得更多的,即使未必有用,但總得試一試。

    然而還沒有等我再次鼓起勇氣,蘋果的打擊到來了。

    蘋果的一封信

    2017 年 3 月,眾多 iOS 開發者收到警告郵件,聲稱其 App 違規使用動態方法,責令限時整改。

    這封郵件引起了開發者的恐慌,連 React Native 都遭受池魚之殃,經過一番尋找之后,發現問題集中出現在兩個熱更新工具 Rollout 和 JSPatch 上,其中 Rollout 國外用的較多,JSPatch 則主要是國內使用。

    在當時的分析文章里,該事件的影響一節里我寫道:

    在國外,本次警告事情其實受影響并沒有那么大,國外 iOS 平臺熱修復或熱更新并不流行,Rollout 的聲明里,本次只有數百個 App、數百萬最終用戶受到影響。

    但在國內,這一數字要遠遠超出。去年以來,凡是公開分享過 iOS 應用架構的,都將熱修復作為其基礎設施之一,可以說大部分頭部應用都有使用 JSPatch 或類似方案。本次受影響的國內 App 數以千計,覆蓋的人群則包括幾乎所有中國 iOS 用戶。

    更長遠的影響是,熱修復對一個團隊的開發流程和節奏緊密相關,很多團隊都必須修改相應的開發流程來適應變化。

    這一判斷并沒有夸張,在蘋果警告之后,iOS 動態化的工具都轉入地下發展,關于這方面的研究和分享也急劇減少,甚至連整個 iOS 技術的分享也變少了。在另一篇文章里,我寫道:蘋果的一封郵件像《三體》的智子一樣鎖死了國內技術。從那以后,“iOS 開發沒人要了”成為一個梗,流行起來。

    微信圖片_20190214103623.jpg

    在安卓平臺,雖然谷歌沒有能力像蘋果一樣干涉國內的開發,但插件化技術從另一方面遭遇了困境。

    這一困境就是安卓新版本以及國內各種魔改 ROM 對于底層的改動。安卓插件化技術依賴部分底層方法以及私有 API,而這些在新版本里是很有可能改動的,一旦修改了,插件化就會失效甚至出錯。國內各大手機廠商的系統也喜歡對底層進行修改,它們的修改甚至都不會公開告知,因此兼容問題是插件化技術遇到的最大挑戰。

    2018 年發布的 Android 9.0,甚至要求開發者不得使用私有 API,少了這些 API,安卓開發被重新關回籠子里,還能玩的黑科技大大減少,無意之中竟然取得了和蘋果警告類似的效果。

    在蘋果警告之后,我瘋狂的閱讀網上的報道,希望能看到轉機,然而越是讀下來,我的心里越是冰涼。

    Hacker News 對于事件報道的討論串里,大部分人對于蘋果的行為持贊同態度,原因是隱私和安全。

    插件化和熱更新對隱私和安全的威脅在于,用戶無法控制或得知應用被偷偷的嵌入惡意代碼,部分插件化方案要求提前獲取所有插件 App 所需要的權限,這意味著開發者可以利用它來竊取用戶的隱私。

    而隱私和安全在國外是一個禁區,不可越雷池一步,即使并沒有造成實際危害,只是有這方面的風險,相關的技術就不可能被允許。這個,其實 Sergio 早在一年前就告訴我了,然而我還抱著僥幸心理,并沒有重視他的回復。

    插件化和熱更新的問題就在于它們的能力太強大了,猶如過于鋒利的雙刃劍,從蘋果和谷歌的角度,必須要加以限制。

    事實上,插件化已經被拿來做過壞事了,DroidPlugin 就曾被黑產利用,在 2017 年爆發過 Triada 和 TigerEyeing 兩起病毒木馬事件。

    至于熱更新實際上尚未造成危害,它只是被一家國外安全機構檢測到有風險,就遭到了蘋果的堅決取締。但在國內,它已有被濫用的苗頭,在蘋果警告事件中,有些沒有使用熱更新的 App 也收到了警告,后來才發現,有些第三方的 SDK 使用了 JSPatch,而這些第三方開發商做些什么,甚至連 App 開發者也不能控制!

    所以,從這個角度來看,插件化和熱更新是需要防止濫用,而在之前,我只看到這些技術好的一面,對于它們的負面影響刻意忽視,違背了媒體中立的準則和監督的職能,現在回想起來,實在是不成熟。

    從另一方面思考,我又難掩憤懣之情——蘋果和谷歌打擊插件化和熱修復,實在是太輕易了,并且,從始至終,它們從未與國內開發者有過溝通,從未考慮過國內的特殊情況。

    蘋果取締熱修復,只需要通過一封郵件,它甚至都不需要修改審核規則,而只需要暗中調整規則的解釋:iOS 安全大牛蒸米在微博上說,警告中提到的動態方案,其實審核上一直寫著不讓用,但是實際用了審核也并不會被拒。而現在,它們只需要嚴格執行規則就行了。

    而國內和國外,不僅在對待隱私上的態度不同,App 的形態上也有差異,國內的超級 App 帶來的新需求,為什么不能讓蘋果為國內市場單獨推出一些新功能和政策?

    我深深的體會到,國內的這些移動開發技術,其實就是沙灘上的城堡,對于操作系統的路徑依賴,讓蘋果和谷歌哪怕做一些小小調整,也足以讓這些酷炫的黑科技遭到毀滅性打擊。

    這段經歷讓我無比渴望國內出現自主的操作系統,讓我深刻理解了自主操作系統的重要性、底層技術和制定規則的重要性。然而我也知道,要做一款主流的操作系統,不僅僅是技術問題, 更重要的是歷史的機遇。

    更實際些的考慮,要盡量避免類似的事件發生,我們需要盡量加強國內外的技術交流,避免雙方的技術差異過大。

    2017 年 6 月的第二屆 GMTC 的開場上,我提醒參會者:蘋果和谷歌一直在堅定的推動 Web 技術,在熱更新和插件化的道路選擇上,我們和國外走得越來越遠,這真的是一件好事情嗎?我們是否走了彎路?

    然而,這已經是馬后炮,這些“黑科技”技術的衰落,已不可避免。

    為了忘卻的紀念

    對我來說,這篇文章充斥著大量的回憶,格外難以動筆。

    對于過去的事情,記憶難免有所美化,有些地方也可能記錯,讀者如果發現,還請海涵。

    這段經歷對我的打擊甚大,在一段時間內,我甚至對移動技術失去了興趣,沙灘城堡的意象在腦海中揮之不去,看到新的技術總有一個聲音在耳邊說:沒有用的,只要蘋果爸爸稍微改改,這技術就得進歷史的垃圾堆……

    在做移動開發內容和活動時交了一些朋友,也得罪了一些人,后來大部分也不再聯系了……

    插件化和熱更新技術是真的不可避免的衰落了,它們已經錯過了歷史機遇期,新的技術已經從另一個維度實施了降維打擊,沒錯,說的就是小程序。

    據了解,有些大型 App 如淘寶等,已經開始用小程序來取代一些原生的功能模塊,這一職責正是插件化的范疇,而小程序的熱更新相比原生,更加簡單和自然。小程序還能成為平臺吸引第三方入駐,這在插件化中只有在 RePlugin 那里有些想法的雛形而已。

    更大的改變則來自于行業風向的變化。頭條系“App 工廠”取得的巨大成功,讓人們重新思考 App 矩陣的價值,人們不再往超級 App 里加功能,而是又開始開發新的 App 了,對這些 App,插件化基本沒有用武之地。

    很多移動開發者都轉行了,張勇最終還是和老板協商解決了問題,投身到下一份工作里。

    Bang 去了螞蟻金服,他還在堅持。在他 2018 年總結的博文里,他寫道:

    JSPatch 8 月開始遭受另一波審查升級,混淆的方案失效,蘋果確實針對 JSPatch 做了比較厲害的掃描手段并在不斷升級,今年跟審核團隊溝通他們也是表示不喜歡 JSPatch,還是那套審核后不能修改的說辭,就算解決了安全問題也沒用,比較無奈,但熱修復需求還在,JSPatch 平臺還是會繼續找解決方案。

    蘋果仍然在趕盡殺絕。

    插件化熱潮注定成為技術發展的一段小插曲,也許再過幾年,不會有人記得了。那段激情飛揚的歲月,終將成為 The Wasted Times。

    微信圖片_20190214103629.jpg

    (電影《羅曼蒂克消亡史 /The Wasted Times》劇照)

    他一直拖到一九四九年五月初才坐上去香港的輪船,算得上真正的末班車。沒有人知道他在拖什么或等待什么,我想他自己也未必知道,不過是下意識的拖延。不久他就死在香港,死前再沒有值得記述的事件或說過的話,他基本沒再說話,這沒什么可奇怪的,一切都不值一提,他終于走向自己的沉默。

    西安軟件開發、西安APP開發、西安軟件外包、西安軟件開發、西安網站建設、電商軟件開發、社交軟件開發、直播軟件開發、西安網站制作、西安區塊鏈開發

    我很喜歡這段話,覺得感同身受,做過什么,發生什么,到末尾一切都不值一提,然而我終究還是拿起筆,記下那些為了忘卻的紀念。

    久久 国产 人妖 系列|偷自拍亚洲视频在线观看|69国产精品无码免费视频|色婷婷精品视频在线观看| 日韩久久久精品首页| a亚洲欧美中文日韩在线v日本|热久久国产欧美一区二区精品| 国产老熟女精品一区免费观看全集| 亚洲第一人伊狼人久久| 国产精品亚洲精品日韩一本大全|久久9精品国产亚洲人AV| 2021少妇久久久久久久久久| 国产自创无码av情景剧|日本妇人成熟XXXXX|国产日产欧洲无码视频精品|国产精品愉拍在线看小宝| 国产白嫩校花被弄到高潮|野花视频大全免费观看3|四虎影视国产精品一区二区|国产精品嫩草影院久久久| 孩交VⅠ DEOS精品|久久精品这里热有精品6|国产成人在线无码免费视频|午夜裸体性播放18a片| 2019亚洲午夜无码天堂久|乱色熟女综合一区二区|欧美黑人XXXX高潮猛交|狠狠综合久久久久尤物丿| 国产成人精品免费视| 亚洲AV人无码综合在线观看蜜桃|国产美女高潮流白浆喷泉视频| 欧洲无线一线二线三线区别大吗| 欧美日韩一中文字幕| 99久久字幕re6热精品首页| 国产精品V日韩精品V欧美精品| 久久精品亚洲一区二区三区浴池|
  • <xmp id="ccywu"><nav id="ccywu"></nav>
    <menu id="ccywu"><strong id="ccywu"></strong></menu>
    <input id="ccywu"><menu id="ccywu"></menu></input>