Adobe Flash Air適合開發移動應用嗎?

在移動遊戲開發上,Air被證明是一種很不錯的技術,有很多現成的遊戲已經上線了。但是對於Air開發移動應用,我還沒看過成功案例,大部分移動應用都是原生程序開發的,也很少看過HTML技術開發的。如果要開發跨平台應用的話,是用Air開發好呢,還是用Java開發Android,然後翻譯成iOS版的。因為Java和ActionScript3很像,我還能應付,Objective-C我熟悉下語法翻譯下程序應該問題也不大。

現在看來Air開發的一些主要問題是:

1. 缺少好用的UI組件,至少沒有原生的豐富和高效。Flex在移動端基本死了,自己寫要花很多的精力,問題也多。
2. 有些功能需要擴展也就是ANE開發,但是ANE很少,也不好開發調試。
3. 打包後的程序太大,不便於發布更新。
4. 寄希望於Adobe持續穩定的支持,但Adobe顯然把Flash平台的重心放到遊戲上了。


AIR可以開發移動應用,但我不建議使用AIR開發移動應用。

我在 「與 Xcode 相比,用 Adobe AIR/Flex做 iOS 開發有哪些優勢和局限?」 和 「怎樣學習Flash?」 兩篇回答中都提到了不建議使用AIR開發移動應用。

當然,如果你執意要這麼做,我也沒辦法阻止你。下面我假設你選擇了用AIR開發移動應用,給你一些或許有用的建議吧。

1. 缺少好用的UI組件,至少沒有原生的豐富和高效。Flex在移動端基本死了,自己寫要花很多的精力,問題也多。
Flex在移動端的死掉,我認同。但你依然是可以在移動端使用Flex的。如果是一些對性能要求不高的應用,使用Flex還是能夠大幅提升開發效率的(是開發效率,不是運行效率)。
我甚至用Flex開發手機遊戲。當然,這是我在做程序員的過程中做過的最錯誤的選擇了。
你大可不必自己寫一套UI組件,這裡 Flash&Flex大全 有我整理的許多UI組件,大部分我都試用過,還是比較靠譜的。
如果你一定要自己寫,可以基於 minimalcomps -

Minimal ActionScript 3.0 code only UI components 這套組件來擴展和改寫,會省不少力氣。
我不建議你現在用Starling+Feathers做UI。Stage3D對顯卡是有要求的,且在Android上不夠穩定,尤其是在山寨機上。和遊戲比起來,應用面向的受眾更加普遍,設備的檔次可能更低,山寨機也可能更多。為了這部分(或許是你的大部分)用戶,還是放棄Stage3D吧。
從技術上講,選擇用Stage3D來做應用的UI,完全是自己找shi。應用中絕大部分使用的是原生DisplayObject List的內容,它們只能位於Stage3D的上層,那個層次怎麼調?Stage3D和DisplayObject List混合渲染,那個性能是很低DI~

2. 有些功能需要擴展也就是ANE開發,但是ANE很少,也不好開發調試。
ANE的確是個坑。
為了填這個坑,無數程序員做出了無數的努力。Rect和我把做過的這些ANE都開放了源碼,你或許可以找到適合你的: Platform ANEs
當然,上面的ANE主要是針對遊戲的。ANE Toolkit | zrong"s Blog 是針對Android平台的一些基本功能的,但也並不完善。你依然要自己做許多許多的事情。
在開工之前,你可以去Github上搜索一下,上面也有許多的無私程序員製作的ANE供你使用。
至於ANE的調試,那是個痛苦得讓人不忍回首的過程,與 Xcode 相比,用 Adobe AIR/Flex做 iOS 開發有哪些優勢和局限? 這篇回答裡面做了描述。

3. 打包後的程序太大,不便於發布更新。
我在 與 Xcode 相比,用 Adobe AIR/Flex做 iOS 開發有哪些優勢和局限? 這個回答中也做過測試。
總之,無論你是否在意多出來的那幾MB,反正你想做個2MB以內的應用是不可能了。
等等,或許在Android上是有可能的,因為Android可以支持不綁定運行時。但這樣一來,你就要祈禱你的用戶知道AIR Runtime是什麼東東。有段時間Google Play上關於AIR Runtime最多的投訴就是「病毒!!為什麼我啟動遊戲還要裝這個!!!這是個病毒!!!
你看,小白用戶就是這麼難搞。

4. 寄希望於Adobe持續穩定的支持,但Adobe顯然把Flash平台的重心放到遊戲上了。
哦,看看我的Adobe Bug list吧:AdobeBug | zrong"s Blog
你真希望Adobe能持續穩定的支持你什麼?

有句話說的好:「生活就像被XX,如果不能反抗,那就默默享受吧!」

  • 你能反抗么?
  • 你有許多選擇。
  • 或許你願意被XX?

在國內,Adobe AIR似乎慢慢被邊緣化.而在國外,AIR卻深受重視。RIAXE SYSTEMS推出的跨平台移動應用、遊戲開發最佳工具調查中,AIR在30多種開發工具中脫穎而出,斬獲73%的投票!
詳見在國內,Adobe AIR似乎慢慢被邊緣化.而在國外,AIR卻深受重視
Top 30+ Cross Platform Mobile App and Game Development Tools


應用是個很廣泛的概念,由於題主提到了「遊戲」和「應用」,我認為題主在題目中所指的「應用」是非遊戲應用,如新聞客戶端、社交通訊、工具效率類等,這種應用的共同點是:強調內容呈現(一般是文本)而非效果表現,應用特性和移動設備自身的特性深度集成(如地理位置、消息通知等)。
如果題主是準備做這類型應用,我不建議使用包括 AdobeAIR,主要有以下幾個原因
1、缺乏強調內容呈現的組件庫。重頭寫一套UI組件(或者採用第三方組件)肯定不如Android和iOS源生的組件
2、應用自身的定位決定了需要和設備自身特性集成,需要開發擴展(ANE),為了開發擴展,需要大量了解源生開發的底層原理,還不如直接寫源生應用

綜上所述,我認為題主這種情況,有兩條路可以選擇,1是為Android和iOS單獨編寫一套代碼庫,2是使用強調內容呈現的跨平台工具,如PhoneGap等


時至今日, 做展示出身的flash已經不適合強交互的mobile game了。
面對cocos2d-x毫無優勢。
趕快換過來吧。


謝邀。Air適合開發非原生UI及功能的輕型應用/遊戲。
以下是問題解答
1. 缺少好用的UI組件,至少沒有原生的豐富和高效。
Starling+FeathersUI可解決大部分問題
2. 有些功能需要擴展也就是ANE開發,但是ANE很少,也不好開發調試
基本擴展網上都有,不需要自己開發。如果需要自己開發很多擴展功能的,就不要用Air
3. 打包後的程序太大,不便於發布更新
頭回聽說
4. 寄希望於Adobe持續穩定的支持,但Adobe顯然把Flash平台的重心放到遊戲上了
前提是你要搞一個長期而且需要Adobe支持的項目
這樣的項目不屬於輕型,請老老實實用原生


& 推薦閱讀:

TAG:移動應用 | AdobeAIR | AdobeFlash | Flash開發 |