iOS 不支持 Flash 的真實原因是什麼?

有可能是戰略原因,怕Flash的植入導致其封閉式產品體系的瓦解,還有沒有另外的原因?


已經過去很多年了事情了,有必要跟各位抖點東西。
1. 從時間點上來看,2008年-2010年是Flash技術在PC頁游領域快速崛起後如日中天的幾年。而這個時間點恰恰是Apple iOS生態體系要起飛的時代。從Adobe整體的Flash Platform策略和蘋果的iOS平台策略來看,Flash與iOS最終由喬老爺宣布決裂基於2家公司的生態策略是必然的結果。Adobe Flash Platform策略是由PC向移動設備滲透,但是Adobe在移動設備上的策略現在回頭來看卻是失敗的,因為Adobe想通過Flash Player授權來收費,每台移動設備嵌入Flash Player,預收一美金(公開報價),Nokia如此,安卓如此,蘋果也計劃不例外。對於一個100%擁有Flash技術專利的公司而言,這種策略在封閉之上又選擇了收費,無疑是攜Flash Player已經99%的PC滲透率而做出的一個「屁股決定腦袋」的商業策略,而恰恰這個策略當時Feature Phone的老大Nokia都買單了,更讓Adobe堅信智能手機市場也將被吃下。而蘋果的iPhone和iOS生態體系也是封閉的,內容的營收體系均建立在iOS的App Store模式之下。兩種都想完完全全控制內容生態的策略碰到一起,無疑會產生巨大的利益衝突,而蘋果當時的掌門人恰恰是全球最強勢的CEO喬老爺子,於是一句關於Flash非常消耗性能,Flash是陳舊的技術,iOS不支持Flash,HTML5是未來的檄文以他的名義發出,被貼在了蘋果官網上。
2. Flash到底是不是比HTML5更消耗性能,我不說結論。我也說兩件事情。2004-2005年,我在Macromedia做Flash和Flash Lite的移植,在那個年代,Flash Lite播放器已經可以被移植到4MB ROM 8MB RAM的功能機上,而對於16MB RAM的一些高端手機,Flash LIte還有一個技術,叫做Flash Lite MMI(Man-Machine Interface),就是現在智能手機的換主題的能力,已經可以通過Flash Lite MMI異彩紛呈的實現在當時的手機里,最大的兩個市場是日本的Docomo和韓國的SK的運營商定製手機,均內置了Flash LIte MMI技術,當時隨便換個幻彩主題已經是那兩個市場定製機的標配。2010年,蘋果喬老爺子說Flash很耗電,所以不能進iOS。同一時間,很多人跳出來證明說MacOS上的Flash播放視頻也很燙,而QuickTime就沒事。事實上是蘋果的工程團隊當時沒有向Flash工程團隊開放Flash調用蘋果顯卡GPU加速的能力,結果可想而知,Flash在蘋果設備上全部都通過CPU方式來計算和渲染。。。然後iOS不支持Flash技術因Flash技術落伍的說法自然就順理成章。一個嵌入式技術,只要底層向它開放硬體加速能力,我覺的以掌握圖形圖像成百上千個專利的Adobe公司來說,還是有這點能耐進行軟體層到底層的優化的。正所謂,欲加之罪,何患無辭。
3.蘋果商店剛開始的原生遊戲是什麼水準?我想那個年代割繩子,憤怒的小鳥,ZVP就已經是頂級遊戲了。但是Flash那個年代早就可以創建出同等水平的Web Game了,只可惜,蘋果從一開始就建立了app store的封閉分發生態策略,怎麼可能允許一個第三方插件,全球200萬開發者的非親非故的體系進入自己剛剛開始耕種的一畝三分地呢?換我是蘋果,我也不讓Flash Player進入我的地盤,這是利益之爭上的大是大非,跟Flash和HTML5技術在那時哪個先進一點毛關係都沒有,換句話HTML5如果再早點立標準,再早幾年掙點氣,能幹跟Flash一樣的事情,我想iOS里刪掉Safari都是可能的。因為Safari是不能給iOS貢獻一分錢的乾兒子,App Store才是親兒子啊。當然HTML5那時候也沒那麼爭氣,Flash好多能幹的,那個時間HTML5都幹不了,就算用盡各種Hack手段干出來,可能比Flash還」燙手「。君不見這幾年阻礙標準化技術發展的已經不是Flash了,反而是Safari.
4.有人說,Flash當年支持安卓也不好。我只想說,沒了Flash的安卓,上面的app性能就好很多了么?呵呵。

Flash技術的衰落是必然的,但是要客觀的評價它,不能加以不公正的揣測,應該給予它應有的尊重。


FLASH、java自身就是個完整的平台,引入他們,會架空Apple,讓Apple失去對生態系統的完全控制權。


1.商業模式:appstore構建了完整的應用程序的產業鏈,而flash、java,本身也可以構建基於他們的應用軟體商店,這觸動了蘋果的核心商業模式。
2.用戶體驗:喬布斯堅持原生的應用,提供給用戶最直接最好的體驗,跨平台的應用在體驗上,永遠不如系統原生的應用
3.耗電


耗電
佔用CPU高
發熱量大
Windows端的Chrome每次崩潰都是Flash導致,Macbook pro風扇狂轉只要關掉Flash一下世界就安靜了。


剛發現這個問題,作為flash資深開發者,看到回答里很多錯誤的地方,就自己這些年跟flash打交道的經驗,解釋一下,主要是針對大家的回答,捎帶回答問題。
—?—?—?—?—?—?—?—?—?—?—?—?—?—
個人經歷,十五年windows客戶端應用(流媒體,瀏覽器,網路下載)客戶端遊戲(2d棋牌,3dmmo),全球首款flash as3 在線多人棋牌上線(07年5月),全球首款flash as3 mmorpg上線(08年3月),全球首款flash移動端遊戲上線(11年10月)。期間跟adobe美國高層就flash,h5,platform的發展討論過兩次。
-----------------------------------------------
先說說flash的發展和優點。
flash在九十年代的優點,在瀏覽器還不支持css的年代,可以在瀏覽器播放動畫,火柴人,阿貴系列,神啊救救我吧,大學生自習曲,無數的mv,老一代網民還有印象吧。flash當時技術特點是超高壓所比的文件格式,矢量繪圖,邊下邊播。為了節約帶寬,無所不用其極,資源都是按bit分配的,看看swf那噁心的格式就知道多省了。flash在那個時代遠比瀏覽器高大上。
到了21世紀,帶寬增加了,視頻需求增加,但是當時的windowsmediaplayer和realplayer一統天下,但是這倆貨,不緩衝個幾十秒,視頻都不好意思動起來。這時flash的flv容器格式和vp6vp7視頻壓縮演算法橫空降臨,一下子讓大家知道原來看視頻也不是必須緩衝,視頻也可以秒看。國內大型視頻網站土豆應該是最早全站只支持flash的,06年這一波視頻網站,優酷,酷六,六間房,偶偶等都是flash了。
07年左右,flash9 alpha階段的時候,開始支持as3,運行效率大幅提升,後來正式發布的時候叫flash cs 3。就在這一年,頁游悄然發展,07年上線的flash9的遊戲鳳毛麟角,08年蓬勃發展,加之後來全球social game的大浪,flash再次成為頁游的標配,很多之前在客戶端都做不到的絢麗效果都能展現在web中,大量公司依賴flash開發的產品賺的盆滿缽滿。


與此同時,蘋果安卓智能手機飛速發展,進入智能移動時代,flash的悲劇開始上演。作為一家2b(to busoness的意思)的只會賺企業錢的公司,賣拷貝,是這家公司骨子裡的基因,遇到一個軟體,一個功能,第一反應就是這東西對誰有價值,誰會花錢,定價多少合適,怎麼能持續收錢。不會放過任何收錢的機會。因此有了前面7yue說的收費。不過就算不收費,當時移動端要支持flash是不容易的,移動端要支持的是flash9,而不是flash lite,這是兩個東西,因為9的功能更強大,語法升級,類庫升級,虛擬機升級,內存佔用大很多,而且是主流,統一的。flash lite非常不統一,每個硬體商都有自己的擴展。對於0708年的移動設備來說,內存是個稀缺資源。舉個例子,08年pc主流還是384和512m內存,當時移動應用可用內存一般不超過100m,而flash9虛擬機就要佔去幾十m,這是硬傷。很多程序響應慢,崩潰都是因為內存不夠。就算手機想支持也是沒辦法的。關於內存,flash頁游做得好的,大概控制在150m到200m,做得不好的,分分鐘跑到500m,1g都有。就內存這一項,就可以讓你想用也用不了。此外,flash9的avm2虛擬機+as3類js語言,語言和性能都遠遠落後於java和c#虛擬機,導致cpu功耗也比較高。相當於你讓2000年的電腦運行2014年的劍靈,錯位了。因此移動端無論對瀏覽器還是對本地應用,flash都有些雞肋,就算支持了,也難成氣候。喬幫主明確不支持的是瀏覽器對flash的支持。
後來,adobe另闢蹊徑,2011年推出flash移動端原生應用的開發,受限於語言和虛擬機,無論cpu效率還是內存,都沒法和原生相比,而移動端系統對內存管理及其嚴格,不能像pc那樣拿硬碟當虛存讓你跑,加之flash程序員整體內存控制意識較弱,flash始終沒有成為主流,早期因為機能問題,兼容問題非常多。隨著手機硬體的發展,14年開始,flash原生程序基本沒啥兼容性問題了。
最後再說說flash技術的局限性,作為操作系統和瀏覽器的八竿子打不著的親戚,flash也很難得到他們的有效支持。舉個例子,在萬惡的ie6年代,瀏覽器說崩就崩,說卡就卡,ie留給flash插件的工作集內存極小,這個東西對運行速度影響至關重要,此外flash窗口作為瀏覽器的子標籤渲染,讓不讓你有窗口,讓不讓你顯卡加速,讓你用多少cpu和內存,都得看瀏覽器大爺的臉,瀏覽器讓你只能繪製在瀏覽器提供的緩衝區,不支持顯卡加速,降低你的線程優先順序,限制你的工作集內存,都能玩死你。firefox上一個支持flash的mode=transparent的bug,從05年到firefox換了webkit內核也一直沒解決。不是親兒子,作為外人,os和browser稍微偏偏心,就能玩死你。adobe自己也早就看到這點了,同時adobe主要的客戶是設計師,是媒體,只要瀏覽器存在,html就存在,就需要h5的工具,因此adobe很早就將h5作為未來的重點。
------------------------------------------------------
回到題目,在07年,喬布斯說ios不支持flash就相當於在97年說pc不支持mp4一樣,不是給當時的機能設計的產品。
------------------------------------------------
說到商業利益衝突,確實有,adobe在10年左右有個flash store的項目,想打造跨平台的基於flash的應用的store,還有廣告平台,但是一個沒有操作系統,又不夠流氓的公司,誰會願意推你的store呢,後來這個項目銷聲匿跡了。
-------------------------------------------------
關於flash視頻燒cpu,主要是高壓縮的編碼格式,解碼更費cpu,flv容器支持的編碼格式又有限,自然更廢了。
-------------------------------------------------
flash在pc瀏覽器還是主流,手機瀏覽器不是富媒體的主戰場,無論html5還是flash都用處不大,況且html5是人家瀏覽器親兒子,不會給你機會。關於原生應用,其實性能要求不高,不在乎包大小,不在乎動態更新,熟悉flash的話,繼續用flash也完全沒問題,html5都有人敢用,flash有啥不敢。
flash是曾經的輝煌,為不支持css,dhtml,視頻的瀏覽器帶來了不可替代的體驗,但是不是親兒子,容易不受待見。我看評論說flash開發不方便,開發瀏覽器內富媒體應用,腳本,動畫,調試,還是flash是最方便的,flash不方便,效率還不好,大家早就改用h5做pc頁遊了。老外很多遊戲,為了支持良好的體驗,大量動畫都是flash製作,再讓程序支持flash格式的解析和回放。
有人說scaleform,那東西是自己的flash引擎,沒用adobe的flash引擎運行flash文件。


因為支持flash也沒什麼用,上面那麼多口口聲聲說蘋果出於利益問題而不支持flash的人,誰來給我提一個android支持了flash然後運行的很好用戶很滿意的案例?
adobe自己都宣稱放棄了移動平台,還有一堆人在唱flash就是好,你們不做開發懂個p,讓你去做CEO好不好?
事實就是flash就是不適合對耗電非常敏感的移動平台,事實就是即使今天移動設備的處理能力也不需要flash這種資源大戶。
擁抱了flash的android最終也沒人在上面玩web game,開a,b站刷彈幕就是熱就是費電。各種視頻網站紛紛對移動設備優化不使用flash輸出。
還需要舉例嗎?
請舉反例

----------------------------------------------------------
補充鏈接:微軟發布《安全情報報告20卷》精簡報告:90%惡意網頁發現於Flash_Microsoft 微軟_cnBeta.COM

時至今日,曾經的windows和java都已經修修補補避開了大部分的惡意攻擊,只有flash依然給惡意攻擊開著後門。
不知道那些口口聲聲說著flash優越性的人到底臉皮有多厚
我不反對flash曾經的輝煌,我也在當初看著火柴人,三國渡過了最初上網的時光,也目擊了小水管擼不動在線視頻,都是看著swf過來的人對flash有感情可以理解。
但是在現在還無腦鼓吹flash,真的不怕給自己丟人嗎?
至少,在移動平台上,flash沒優勢。
而未來,屬於移動互聯網


參見喬布斯的《關於Flash的幾點思考》
中文譯文:http://www.chinaz.com/News/IT/043011332R010.html

前面的部分,關於誰開放誰封閉,是商業爭論,並無意義。主要在於Flash是PC瀏覽器的App平台,主要解決開發視頻與遊戲應用的問題。而在蘋果設備上,這些問題本來就解決得很好了,對於視頻是HTML5,對於遊戲是iOS自己的App。所以支持Flash並沒有什麼價值。就算兼容了老的Flash應用,體驗也不好,可以參考用Android手機玩Flash遊戲的感受。


應該是無法解決架空APP STORE的危險,只是拿耗電或者不安全來作為官方發言而已


商業利益,無他


《喬布斯傳》
iMac需要有一款出色的視頻編輯軟體。為此,
喬布斯決定去Adobe公司找他的老朋友。Adobe是一家出品數字圖像軟體的公
司,當年也是他幫助成立的。他請他們製作一款適用於新的Mac版本的Adobe
Premiere軟體,當時這一軟體在Windows系統中很流行。可是,Adobe公司高層
斷然拒絕了他,這讓喬布斯備受打擊,他們說:「麥金塔的用戶太少,要單獨為
它做一個軟體不太划算。」喬布斯憤怒了,覺得自己遭到了背叛。他後來跟我說:
「我讓Adobe出了名,他們卻這樣對待我。」Adobe隨後又拒絕為MacOSX系統
定製其他的流行軟體,比如Photoshop,即使麥金塔電腦在使用這類軟體的設計
師和創意人士中非常受歡迎。整個局面更加糟糕了。
喬布斯永遠都不會原諒Adobe,十年後,他向Adobe發起了一場公開的戰
爭——不允許AdobeFlash在iPad上面運行。他得到了一個寶貴的教訓,而這更
堅定了他的決心:要對一個系統中的所有關鍵元素實施端到端的控制。他說:
「當1999年Adobe背叛了我們之後,我的第一個想法就是,在我們所涉足的領
域,必須要同時控制硬體和軟體,否則我們遲早要受制於人。」
所以,從1999年開始5蘋果為Mac操作系統製作應用程序/目標用戶就定
位在橫跨藝術和科技交匯處的人群。這些軟體包括數字視頻編輯軟體FinalCut
Pro,為入門級用戶開發的iMovie,製作視頻或音樂光碟的iDVD,和Adobe競爭
的照片編輯軟體iPhoto,用於音樂製作和混音的工具「車庫樂隊」(GarageBand),
管理歌曲的iTunes,以及購買歌曲的iTimes商店。


官方解釋是Flash的性能以及漏洞問題。記得ios有一版的越獄就是利用Adobe的pdf漏洞,直接訪問某個鏈接就可以越獄。

但個人覺得更可能的原因是商業競爭:
1.Apple主推html5,因此排斥在功能上更為成熟全面的flash。
2.以flash技術為基礎的Web遊戲、Web應用會大大影響app store的生態環境。


作為一個開放的、跨平台的傢伙,蘋果必須乾死它。防止flash跟Android、webOS等勾搭,讓程序員可以直接寫出跨平台的程序


關於Flash的爭論從來不是技術問題而是商業利益 ~ 從iOS5悄悄限制HTML5本地儲存以及webApp已經不再通過App Store的審核來看(參考文章:磊友創始人趙霏談HTML5手游上線iOS經驗),無論是Flash還是HTML5,動App Store利益蛋糕者,殺無赦~

Flash的火熱特別是網頁遊戲的火熱由來已久。傳奇從1999年Newgrounds、2001年Miniclip風靡全球開始,加上後起之秀Armor Games、Kongregate領銜數萬家合作發行網站,囊括了數萬個Flash遊戲,熱潮一直延續至今仍方興未艾。通過遊戲載入時內嵌廣告以及遊戲授權費等成熟盈利方式,這些用戶規模龐大的遊戲網站,讓一批批用Flash開發和發布遊戲的Indie Gamer擁有了全職實現自己遊戲夢想的舞台。

而在頁游手游尚未成為熱點之前,國內可能很少有人知道,Flash網頁休閒遊戲很早就已經到了一個十分繁榮昌盛的階段,當時的環境催生了全球一大批基於網頁遊戲來謀生的獨立開發者和收集推廣Flash頁面遊戲的站點,而這些遊戲在2010年喬布斯宣布iOS設備不支持Flash時,無論是質量還是數量上都遠超App Store上第一批剛從事手機遊戲開發不久的團隊。這些內嵌廣告免費可玩的Flash遊戲都是和App Store的利益毫無關聯的,因此一旦iOS設備兼容Flash,那麼對於App Store上付費的遊戲應用必然會是一個極大的衝擊。更不用說,當時網路上流行的Flash視頻,也大多是類似於Youtube這樣的免費模式。在聲勢浩大的用戶希望iPad支持Flash時,為了蘋果公司的利益,喬布斯必須找到相當充分的理由來服眾,因此專門寫了一篇貶低Flash而追捧HTML5的文章。(摘自:專訪熊攀峰:HTML5時代 Flash仍是座寶藏-CSDN.NET)


我想利益才是最關鍵的。

Adobe Flash有它自己一套的運作方式,如果IOS支持Flash無異於給Action Script開發者直接開發IOS應用的機會。這樣蘋果好不容易建立起來的那套封閉式產業鏈就會被打破,就像樓上有位朋友說的,蘋果很有可能會被架空。畢竟相信大多數人都不喜歡用ObjectC開發應用,也不一定喜歡每做出一個應用就放到App Store上給蘋果賺錢……

----------------------------分割線-------------------------
以上回答是我去年四五月份時候的回答了,當時只是想突出利益,就隨便寫了幾句。近幾日這個問題不知為何被頂起來了,也有一些知友表示「這個回答被點這麼多支持真是讓人失望.」,那麼我也對此做一些補充。
技術方面的問題。我不是非常專業,@Benjamin的回答那麼多人頂,也說明了從技術上蘋果拒絕Flash是有一定道理的。
但我的回答主要還是偏重利益,觀點如下:
1.如果IOS接受了Flash,那麼應用開發者完全可以在windows上使用AS作為語言進行IOS應用編寫,MAC系列產品、Object-c會因此受到一定負面影響(不可估)。畢竟AS語言在一定程度上擁有許多擁護者,能用AS寫IPAD應用的話,原來的AS工程師就不用再去鑽研Object-c了。
2.如果IOS接受了Flash,並且支持了Flash的runtime,那麼,用戶只要安裝了adobe flash這一個「應用」,就可以從各個地方下載flash文件,用這一個應用打開這些flash文件來進行不同應用的使用。這個簡直就是侵犯了蘋果App Store的根本利益,是其絕對不能接受的。
試想,開發商為了避免給蘋果分成,將下載授權做到自己的網站,用戶可以付費給開發商並下載對應的flash遊戲,使用flash打開,蘋果在這個過程中就完全坑爹了,他賺不到一分錢。

不知各位看官怎看,至少我覺得,AppStore才是蘋果目前核心中的核心,如果要動它的蛋糕,蘋果是絕對不允許的。

PS:@胡越的回答也很有趣,從歷史恩怨的角度進行了分析。以喬老幫主的脾氣來看,對於任何曾經給他穿過小鞋的人,一定是要嚴厲打擊報復的,哈哈。


Flash是一個落後於時代的技術,靠對客戶端的高資源佔用率來獲取傳輸過程的低帶寬佔用。
窄帶時代,Flash能節省帶寬資源,客戶端應用也相對簡單;
在寬頻時代,隨著Adobe對Flash不斷做加法,其客戶端應用研發已經處於失控狀態:一些並不複雜的應用,即便在配置很高的PC跑起來都不能保證流暢,更別提CPU、GPU佔用率,即便Adobe宣布支持硬體加速後,這種情況依然沒有改善。Flash目前唯一的優勢就是開發人員及裝機量。
而Apple做產品的思路,則是寧缺勿濫:如果不能保證系統流暢度,就暫時不採用。
對Flash就是如此。首先是流暢度問題,其次是對硬體資源消耗無法控制(試想一下在開心網偷半個小時的菜就導致手機沒電了),最後還有漏洞,對iOS系統安全也是威脅。
此外,客戶端互動技術也不是Adobe一家獨有,還有很多更加先進、公開的標準化技術可供選擇,因此Flash得不到iOS支持就順理成章了。


10年初,公司準備做移動APP
首先預研iOS能不能支持Java?
竟然不行
那能支持Flash也好?
還是不行
HTML肯定可以吧?
做了個demo,略卡,體驗也不是很好
老老實實的學OC吧,打死都不想學啊,各種奇怪的語法,看著都頭大
如果iOS真的支持Flash、Java等跨平台語言,那沒OC什麼事了


耗電啊喬老爺子和adobe的恩怨啊,最主要的還是flash各種亂七八糟的漏洞,這個直接影響到系統安全,而且不受Apple控制,必須杜絕杜絕!!!


耗電。flash 應用可以跳過app store.


看2011年的各種神吹flash不讓運行在IOS上是因為私心的打臉回答,運行在Android上面的又如何呢?勢不可擋?

現在時間2015年。


很重要一點,會影響蘋果的封閉生態環境,這個可能比較可怕。


推薦閱讀:

iOS 和 Android 的後台推送原理各是什麼?有什麼區別?
GitHub 上有哪些完整的 iOS-App 源碼值得參考?
仙劍奇俠傳 5 將登錄 iPad 平台,能取得怎樣的成績?
程序員為什麼容易20~30歲比同齡人白髮多?怎麼才能避免早生白髮?
怎麼樣讓網站在 iPhone「添加到主屏幕」時顯示自定義圖標,而不是網頁截圖?

TAG:iOS | iOS開發 | AdobeFlash |