[網友來信] 有哪一種語言可以寫出手機 App,然後直接用在 iOS 與 Android 上
這個網友不想要 iOS 與 Android 用不一樣的語言,寫兩次一樣的程式。所以問我有沒有什麼辦法,可以寫一次,就能寫出適用於 iOS 與 Android 兩大平台的 App。
方法是有啦...不過有「效能」與「特性」上的考量。來看看我是怎麼回答那個網友的囉~
-----------
想要用一種語言,就寫出橫跨 iOS 與 Android 兩大平台的 App,有很多好用的工具可以使用。茲介紹如下:
1. Adobe 的 PhoneGap
這是用 HTML / CSS / JavaScript 這三種語言聯手造就出能橫跨 iOS 與 Android 兩大平台 App 的方法。HTML/CSS/JavaScript 也是造就「網頁」的基本語言。又,「網頁」是每支手機都支援的,Adobe 公司就巧妙運用這點,用 HTML/CSS/JavaScript 打造 App,使之能橫跨 iOS 與 Android 平台。
PhoneGap 的維基百科簡介如下:
https://zh.wikipedia.org/wiki/Adobe_PhoneGap
2. Microsoft 的 Xamarin
這是用 C# 語言打造好 App,然後讓它能跑在兩大平台的手法。如果你本身就熟悉 C#,那就會推薦直接用這種方法。
Xamarin 的維基百科簡介如下:
https://zh.wikipedia.org/wiki/Xamarin
3. Appcelerator Titanium
這是用 JavaScript 打造 App,然後讓它能執行於 iOS 與 Android 的方法。若你本身熟悉 JavaScript,會推薦這種方法。
Appcelerator Titanium 維基百科:
https://en.wikipedia.org/wiki/Appcelerator_Titanium
4. Ionic
它是用 Angular.js (一種 JavaScript 延伸出來的套件,亦即,語法本身就是基於 JavaScript,但多了一大堆內建的好用函數與快速的新寫法)兜出來的 App。如果你已經會 Angular.js,會推薦你用這個。
Ionic 維基百科:
https://en.wikipedia.org/wiki/Ionic_(mobile_app_framework)
其實還有很多類似的方法。不過這類「跨平台」方法寫出來的 App,都免不了有「效能不佳」,或「無法發揮特定平台特殊功能」的缺點。這也是沒辦法的事,因為要跨平台,就只能取兩個平台都有的功能(交集)。那些各平台特有的功能,只能靠各平台專用語言(iOS 用 Objective-C 或 Swift。Android 用 Java 或 Kotlin)來撰寫了。
所以,如果你要寫的 App 是記帳程式這類簡單 App,用跨平台的方法寫無可厚非。但要寫手機遊戲這類需要效能的 App,就不推薦了。
希望這樣的回答有幫助!
「xamarin缺點」的推薦目錄:
- 關於xamarin缺點 在 紀老師程式教學網 Facebook 的最佳貼文
- 關於xamarin缺點 在 Re: [請益] xamarin - 看板Soft_Job - 批踢踢實業坊 的評價
- 關於xamarin缺點 在 軟體開發學習資訊分享- 這篇文章分析了Xamarin 有哪些優缺點 的評價
- 關於xamarin缺點 在 [請益] 大家看好Flutter嗎? - Soft_Job - PTT生活政治八卦 的評價
- 關於xamarin缺點 在 [請益] Xamarin在業界的廣泛度aluma66 PTT批踢踢實業坊 的評價
- 關於xamarin缺點 在 『筆記』跨平台原生App 開發實戰使用Visual Studio + Xamarin ... 的評價
- 關於xamarin缺點 在 Re: [閒聊] 請問各位是否使用C# + Xamarin來開發? 的評價
- 關於xamarin缺點 在 [請益] Xamarin在業界的廣泛度| Soft_Job 看板| MyPTT 網頁版 的評價
- 關於xamarin缺點 在 [心得] 從Xamarin轉Swift - 看板MacDev | PTT數位生活區 的評價
- 關於xamarin缺點 在 Re: [請益] xamarin - Mo PTT 鄉公所 的評價
- 關於xamarin缺點 在 [請益] Xamarin在業界的廣泛度 - PTT熱門文章 的評價
- 關於xamarin缺點 在 Xamarin 初心者篇- 10 分鐘帶你體會Xamarin 跨平台開發的魅力! 的評價
xamarin缺點 在 軟體開發學習資訊分享- 這篇文章分析了Xamarin 有哪些優缺點 的推薦與評價
這篇文章分析了Xamarin 有哪些優缺點,對於下一個App 專案想要評估Xamarin 做跨平台的解決方案很有幫助,內文作者有分享一個他使用Xamarin 開發資產管理的App, ... ... <看更多>
xamarin缺點 在 [請益] 大家看好Flutter嗎? - Soft_Job - PTT生活政治八卦 的推薦與評價
15樓 → WunoW: xamarin bug一大堆以前用時官方還有issue掛了10年+沒有解 05/02 22:53 ... 75樓 → ghoster7: flutter最大的缺點應該是動會載入第一次會卡卡的和空值 ... ... <看更多>
xamarin缺點 在 Re: [請益] xamarin - 看板Soft_Job - 批踢踢實業坊 的推薦與評價
難得看到討論Xamarin的文章
身為使用Xamarin一年左右的菜比八來分享一下個人看法
並試著用工程師角度和公司角度提供一些想法
前情提要:
在學校只寫過C、Python和極少的C++
進到公司後開始學習C#
目前語言熟練度 C# > Java = Swift = Obj-C
因為公司是抓原本的工程師們來摸索APP開發
所以造就了現行產品們有原生、有Xamarin、也有Xamarin.Form
又因並不是所有專案都會同時開發及維護
分到哪個專案就要寫哪種語言
所以目前是
Xamarin.雙平台(C#)
Xamarin.Form(C#)
Android(Java)
iOS(Swift&Obj-C)
都能寫的狀況
首先先來簡單說一下Xamarin
Xamarin其實分成兩種
一種是Xamarin雙平台
也就是照著平常寫Android和iOS的方式來撰寫APP
只是語言改成使用C#
但整個Life Cycle、Activity/ViewController等等的觀念都跟原生一樣
也同樣使用AXML和StoryBoard或Xib拉畫面
不過無關乎Android及iOS層的資料和資料邏輯層可以共用
也就是這部份只需要一份程式碼就可以了
而另一種是Xamarin.Form
是屬於Xamarin自己的框架
裡面沒有什麼Activity、Fragment、ViewController之類的東西
而是有屬於自己的LifeCycle和Page
畫面使用自己的XAML格式
從畫面到資料都只需要寫一份Code就可以了
真的需要雙平台各自處理的部分
再寫各自的渲染即可
渲染的部分一樣使用C#
使用Xamarin
基本上在手機上的效能表現而言其實並不會比原生差
因為它並不是先把C#轉回原生再使用
而是自己比照原生語言製作了跟底層的溝通
細節有興趣的人可以去查看相關文件及統計資料
工程師角度:
開發的語言與框架能具備
- 好寫 越多語言及框架幫你處理好的東西越好
- 快速 需要寫的東西越少越好,並盡可能的共用
- 穩定 不會莫名其妙壞掉,一更新好了這個壞了那個
對於原本就熟練C#與.NET的人來說
Java、Obj-C和Swift缺少很多慣用的類別及方法可以使用
(個人覺得Java很囉唆,Obj-C有點過時)
雙平台可以共用資料邏輯層很省事
而UI可以只寫一份的話更好
但穩定度確實差原生一截
公司角度:
產品的開發具備
- 快速 工程師需要的開發時間越短越好,不論是開新產品或增加需求
- 穩定 產品越少Bug越好
- 省成本 每次開發需要的工程師數量越少越好
這時候就要看產品特性了
有些產品注重資料的呈現
有些產品則是對畫面及操作的細節講究
對於注重資料呈現但對於畫面及操作細節沒那麼要求的產品
Xamarin(特別是Xamarin.Form)可以做到快速與省成本
而穩定度的欠缺會因對畫面及細節的不要求而影響程度不高
其實是個不錯的選擇
但對於畫面及細節要求的產品
由於Xamarin依舊需要處理大量的渲染
又比較常發生特定版本的某些功能會壞掉的狀況
Xamarin的缺點比優點來得多
使用原生甚至搭配C++開發會是更好的選擇
最後就我而言
其實Xamarin並沒有前幾篇文章下面推噓文講得那麼差
它有優勢但也有缺點
確實業界內使用Xamarin開發的公司不多
但也不是沒有
依需求和團隊狀況考量
不同的公司應該會有不同的選擇
寫到現在一年多
覺得不論是它本身或是VS for Mac都有越來越穩定
個人認為它的未來是可以期待的
(至於一些信仰問題,在這邊不列入討論,
每個人對個語言、框架和公司等等的信仰都不一樣,
雖然這篇文章多少也有一些我的信仰在裡面XD)
--
我是喜歡異性的堂堂男子漢好嗎...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.104.198
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1535284144.A.647.html
... <看更多>
相關內容