天天看點

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

Visual Studio 2019調試 安卓和IOS開發的app 

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

 上圖為C# 同一份源碼在紅米note 1S 的真機上運作安卓app,和iphone 13 模拟器運作ios版app。 (因為ios要在Iphone真機中調試,還需要其它操作開發環境配置,會在後續文中詳解。)

寫在最前:

本文将以最簡單明了闡述 C#一份源碼同時開發出ios和android的app, 為讓不懂技術小白和初學者都一看就懂,故會跳過其它部落客已經釋出的xamarin建項目每步步驟,要學習可以參考他們。

1、在VS2019中項目解決方案結構:

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

 在Visual Studio 2019中項目模闆選擇 移動應用(Xamarin.Forms)建立項目,會獲得上圖中的解決方案結構。

解決方案結構有三個項目組成,它們是

  • StockDiffEanrs,源碼項目,所有的C#源碼,和UI設計在這裡面開發
  • StockDiffEarns.Android,安卓項目
  • StockDiffEarns.IOS, ios項目

重點在這裡,不需要同時編寫安卓項目和ios項目的源代碼,隻需要在第一個源碼項目中完成,即一份c#代碼同時完成安卓和ios app開發。

 2、展開第一個項目開發UI,如下圖

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

1) 建立Views檔案夾,

2) 在該檔案夾下,添加新項,選擇内容頁,取名“CalcT.xaml”

3) 在CalcT.xaml中編寫代碼如上圖,該部分代碼就是app的UI 部分

至此 安卓app和ios app 的UI 界面就同時完成了!

3、編寫C# 代碼完成實際功能

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP
  • 該app隻有一個按鈕功能就是計算差價 

如上圖,點開CalcT.xaml在它對應的 CalcT.xaml.cs檔案中編寫C#代碼

代碼原理:計算差價,差價是負數,顯示金額并以綠色顯示,否則紅色顯示,并保留2數小數。

4、運作調試安卓app

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

1) 如上圖選擇 “Android裝置管理器” 

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

 2) 在打開視窗中,建立一個安卓仿真器。 (過程中會連網下載下傳安卓調試缺失的環境,會因為國内連接配接GOOGLE伺服器不暢問題導緻建立失敗。根據對應錯誤網上查找解決辦法)

3) 将第二個安卓項目設為啟動項目

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

4) 從建立的安卓仿真器運作 app

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

5) 運作過程VS2019會自動編譯,并啟動仿真器,将app部署進安卓仿真器中,顯示運作結果:

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

5、安卓app放到安卓手機中安裝運作

1)  當完成上述過程,仿真器運作後在安卓項目檔案夾下已經生成了apk安裝包,那能直接拿去用呢?

答案是可以,但是需要改變VS2019編譯方式從Debug模式改Release模式,再重新編譯一次。要問為什麼,原因就是本人親測不這樣做直接在安卓手機中可以安裝,但運作會閃退!

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

右擊第二個安卓項目,點選屬性。顯示上圖。 取消兩處勾選,将改為Release模式

2) 更改安卓app最低支援的安卓版本

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

 如果最低版本選擇安卓5.0,這樣安卓4以下都無法安裝此安裝包。部落客要在老手機安卓4.4.4紅米note1s 的MIUI中運作,是以這裡選擇了4.3。 另外有小米MIX4 miui12 同樣可以運作

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

6、生成ios app并運作調試

安卓的C#代碼 開發的app可直接生成ios app并調試,但因為蘋果裝置特殊限制,Winddows電腦需要無線連着蘋果電腦, 同時蘋果電腦已經安裝相應的XCODE 版本。

為了實作這個調試,VS2019需要 XCODE 12以上 蘋果電腦進行協同工作,不同的XCODE 版本有最低限度支援的macOS版本。是以,本人的蘋果電腦macOS版本不支援運作XCODE 12,不得不将蘋果電腦系統更新為了macOS 11.7, 這樣就能運作 XCODE 13.1 比 XCODE12 高肯定支援。 經過一番折騰終于讓蘋果電腦系統和開發環境達到要求。

1)連接配接蘋果電腦,右擊第三個項目,設定為啟動裝置,點選VS2019調試按鈕,VS2019提示遠端連接配接蘋果電腦的步驟後進入狀态,

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP
c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

 VS2019會自動檢測蘋果電腦的Mono版本,

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

并檢查Xamarin SDK版本,如果版本不一緻或缺失會自動安裝。

最後會檢查XCODE版本,這個不一緻,則需要我們開發者手動在蘋果電腦上安裝!~

一切通過後,則顯示蘋果ios裝置仿真器 

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

7、生成ios app在iPhone和ipad中部署 

c# 比JAVA弱嗎? 用c#一份源碼同時生成安卓和IOS APP

在蘋果裝置真機中部署ios app則需要C#編碼以外的工作,則不在本文詳解中,具體做法如上圖所述。并會在後述文中進行闡述。

寫在最後:

本文開宗明義,以最簡單直白的圖文讓技術小白和初學者能快速了解C#的強大和跨平台特性,一份代碼同時生成安卓和IOS app。在開發中遇到的情況和避坑文中已盡量做到詳細。

針對軟體産品經理和軟體公司老闆,或者有意外包的客戶。請不要因為如此覺得程式員的工作量得到的降低。應該看到是一個開發團隊同時完成了兩個開發團隊的工作量。 這樣的好處是讓app開發效率提高,不是工作量的降低,讓app程式在後續中的維護和二次開發、版本管理,相應的統一。這樣的好處不是針對程式員本身,恰恰這優點是針對軟體公司老闆,和産品源碼傳遞給客戶後的管理和二次開發。

也會有人質疑這種C#開發的跨平台app沒有JAVA原生開發安卓,objectiveX原生開發的IOS 執行效率好。關于這悖論從C# 在20年前誕生在與C++的程式上就一直存在。就揪着這一點對C#進行打壓,而無視它本身的優點。如今.NET開源, 并在跨平台上得到很全面的發展,C#做為.NET頂流開發語言,它的優點,跨平台性、類庫豐富性從PC到移動端開發,可以說是一枝獨秀。值得初學者明白和學習,開發者在真實的工作中多了一個強有力的移動平台開發語言和工具!