官术网_书友最值得收藏!

1.2 Xamarin簡(jiǎn)介

Xamarin使得C#程序員能夠只用一套代碼即可開(kāi)發(fā)Android、iOS、Windows三種平臺(tái)的原生態(tài)應(yīng)用。

1.2.1 什么是Xamarin

Mono(Xamarin的前身)是一個(gè)由Novell公司主持的項(xiàng)目,致力于開(kāi)創(chuàng).NET跨平臺(tái)的開(kāi)源工程。它包含了一個(gè)C#語(yǔ)言的編譯器、一個(gè)CLR的運(yùn)行時(shí)和一組類庫(kù),并實(shí)現(xiàn)了ADO.NET和ASP.NET。使得開(kāi)發(fā)人員用C#即可開(kāi)發(fā)iOS、Android和Windows Phone程序。該項(xiàng)目的目標(biāo)是創(chuàng)建一系列符合標(biāo)準(zhǔn)ECMA(Ecma-334和Ecma-335)的. NET工具,包括C #編譯器和共同語(yǔ)言(CL即Common Language)執(zhí)行平臺(tái)。與微軟的. NET不同,Mono項(xiàng)目不僅可以運(yùn)行于Windows系統(tǒng),還可以運(yùn)行于Linux、FreeBSD、UNIX、macOS X和Solaris等系統(tǒng)。2011年,Mono的幾位創(chuàng)始人創(chuàng)建了基于Mono的Xamarin平臺(tái),并以此為新公司的名稱。2016年Xamarin被微軟收購(gòu)并開(kāi)源。通過(guò)在iOS、Android和Windows Phone的所有三個(gè)移動(dòng)平臺(tái)上提供單一語(yǔ)言(C#、類庫(kù)和運(yùn)行時(shí)),同時(shí)仍編譯native,Xamarin使得利用C#開(kāi)發(fā)iOS、Android和Windows Phone三個(gè)移動(dòng)開(kāi)發(fā)平臺(tái)應(yīng)用成為可能。Xamarin包括Xamarin.Android、Xamarin.iOS、Xamarin.Forms等版本庫(kù)。

1.2.2 使用Xamarin進(jìn)行開(kāi)發(fā)的優(yōu)點(diǎn)

相對(duì)于原生態(tài)及網(wǎng)頁(yè)開(kāi)發(fā),Xamarin有其自身優(yōu)勢(shì),主要如下。

1. 使用單一的語(yǔ)言和統(tǒng)一的開(kāi)發(fā)環(huán)境

Xamarin是一種用于跨平臺(tái)移動(dòng)應(yīng)用程序開(kāi)發(fā)的工具,可以重復(fù)利用高達(dá)90%的源代碼以加快工程周期。Xamarin不需要在開(kāi)發(fā)環(huán)境之間切換就可在Visual Studio中構(gòu)建所有Xamarin應(yīng)用程序。

Xamarin使用C#為所有移動(dòng)平臺(tái)創(chuàng)建應(yīng)用程序。并且由于Xamarin是本機(jī)編譯的,這使它成為構(gòu)建具有本機(jī)外觀和感覺(jué)的高性能應(yīng)用程序的首選項(xiàng)。

2. 性能接近原生

與基于Web技術(shù)的傳統(tǒng)解決方案相比,Xamarin構(gòu)建的跨平臺(tái)應(yīng)用程序仍然可以歸為本地應(yīng)用。性能與Android的Java和iOS的Objective-C或Swift相當(dāng)。

3. 本地用戶體驗(yàn)

Xamarin允許使用平臺(tái)特定的UI元素創(chuàng)建高性能的應(yīng)用。針對(duì)iOS、Android或Windows的簡(jiǎn)單跨平臺(tái)應(yīng)用可以使用Xamarin.Forms工具構(gòu)建,該工具可在應(yīng)用程序運(yùn)行時(shí)將應(yīng)用程序UI控件轉(zhuǎn)換為平臺(tái)特定的界面元素。Xamarin.Forms顯著提高了應(yīng)用開(kāi)發(fā)的速度,對(duì)于面向業(yè)務(wù)的項(xiàng)目來(lái)說(shuō)是一個(gè)很好的選擇。由于額外的抽象層,性能可能略有下降。對(duì)于自定義應(yīng)用程序用戶界面或需要更高的性能,則可單獨(dú)使用Xamarin.iOS和Xamarin.Android以獲得預(yù)期的結(jié)果。

4. 開(kāi)源

2016年被微軟收購(gòu)后,Xamarin包括運(yùn)行時(shí)、庫(kù)和命令行工具在內(nèi)的Xamarin SDK已開(kāi)放源碼,并已作為Visual Studio的一部分。

1.2.3 使用Xamarin編寫(xiě)第一個(gè)App

下面將介紹使用Xamarin編寫(xiě)第一個(gè)App的操作步驟,具體如下。

1)啟動(dòng)Visual Studio 2019后,執(zhí)行“文件→新建→項(xiàng)目”命令,打開(kāi)“創(chuàng)建新項(xiàng)目”對(duì)話框進(jìn)行新項(xiàng)目的創(chuàng)建,如圖1-7所示。

掃碼看視頻

2)在“創(chuàng)建新項(xiàng)目”對(duì)話框中,單擊“Android應(yīng)用(Xamarin)”選項(xiàng)后,再單擊“下一步(N)”按鈕,將新項(xiàng)目命名為WiseERP,然后單擊“創(chuàng)建”按鈕。

圖1-7 新建項(xiàng)目界面

3)打開(kāi)New Android App對(duì)話框,依次單擊空白應(yīng)用和OK按鈕創(chuàng)建新項(xiàng)目。

創(chuàng)建新項(xiàng)目之后,在“解決方案資源管理器”中展開(kāi)Resources文件夾,然后展開(kāi)layout文件夾。雙擊activity_main.axml文件,在Android Designer中打開(kāi)。擴(kuò)展名為axml的文件為窗體布局文件。

默認(rèn)窗體布局是RelativeLayout。將<RelativeLayout>標(biāo)記更改為<LinearLayout>,并將屬性android:orientation="vertical"添加到LinearLayout開(kāi)始標(biāo)記。

在工具箱(左側(cè)區(qū)域)的搜索文本框中輸入text,并將一個(gè)Text(Large)控件拖動(dòng)至Design Surface上(中央?yún)^(qū)域)。

在Design Surface上選中Text(Large)控件的情況下,可使用屬性面板將Text(Large)控件的Text屬性更改為“WiseERP登錄”,如圖1-8所示。

圖1-8 “屬性”設(shè)置面板

在“工具箱”(左側(cè)區(qū)域)的搜索字段中輸入text,并將一個(gè)Text(Large)控件拖動(dòng)至Design Surface上(中央?yún)^(qū)域)。

在Design Surface上選中Text(Large)控件的情況下,可使用“屬性”面板將Text(Large)控件的Text屬性更改為“賬號(hào)”。

將一個(gè)Plain Text控件從工具箱拖動(dòng)到設(shè)計(jì)圖面上,并將它放置在Text(Large)控件下。直到將鼠標(biāo)指針移動(dòng)到布局中可接受控件的位置,才會(huì)放置控件。在圖1-9中,直到鼠標(biāo)指針移動(dòng)到前一個(gè)TextView的下方(圖1-9右圖),才能放置控件(圖1-9左圖),將其ID屬性更改為@+id/txtusername。

圖1-9 文本控件設(shè)置

用相同的方法添加Text(Large)控件到ID屬性為@+id/txtusername的控件下方,設(shè)置Text(Large)控件的Text屬性為“密碼”,添加Plain Text控件到剛添加的Text(Large)控件下方,并將控件ID屬性設(shè)置為@+id/txtpassword。

將一個(gè)“按鈕(Button)”從工具箱拖動(dòng)到設(shè)計(jì)圖面上,并將它放置在Plain Text控件下方。

在Design Surface上選中“按鈕(Button)”后,使用“屬性”面板將其Text屬性更改為“登錄”,將其ID屬性更改為@+id/btnlogin。

設(shè)置好的登錄界面如圖1-10所示。

圖1-10 登錄界面

4)接下來(lái)編寫(xiě)代碼。要通過(guò)將支持代碼插入MainActivity類中來(lái)添加代碼以關(guān)聯(lián)用戶界面,首先關(guān)聯(lián)btnlogin按鈕。在MainActivity類中找到OnCreate方法。接下來(lái),在OnCreate內(nèi)的base.OnCreate(savedInstanceState)和SetContentView(Resource.Layout.activity_main)調(diào)用下添加該按鈕代碼。修改模板代碼,使OnCreate方法與以下代碼類似。

5)現(xiàn)在的應(yīng)用程序應(yīng)該可正常工作了,下面設(shè)置應(yīng)用名稱。展開(kāi)“值”文件夾(在“資源”文件夾中)并打開(kāi)文件strings.xml,將應(yīng)用名稱字符串更改為WiseERP,具體如下。

6)最后運(yùn)行應(yīng)用。通過(guò)在Android設(shè)備或仿真器上運(yùn)行應(yīng)用程序來(lái)測(cè)試該應(yīng)用程序。輸入用戶名和密碼,單擊“登錄”按鈕登錄系統(tǒng)。

1.2.4 調(diào)試、部署

編譯成功后,即可部署到虛擬機(jī)上進(jìn)行調(diào)試。

1. 啟動(dòng)安卓虛擬機(jī)

運(yùn)行AVD Manager.exe,選擇創(chuàng)建的and6虛擬機(jī),單擊界面右側(cè)的Start按鈕,啟動(dòng)虛擬機(jī)實(shí)例。

2. 部署并運(yùn)行

在VS的工具欄中選擇剛啟動(dòng)的虛擬機(jī)實(shí)例and6,單擊調(diào)試按鈕(綠色的三角形),即可開(kāi)始部署、運(yùn)行的流程,如圖1-11所示。(注意,要選擇Debug模式)。

圖1-11 調(diào)試按鈕界面

3. 調(diào)試

部署運(yùn)行成功后,模擬器就會(huì)顯示demo App的UI界面,如圖1-12所示。此時(shí),可以在源碼中加入斷點(diǎn)調(diào)試程序了。

圖1-12 登錄界面

注意:Xamarin開(kāi)發(fā)的Android項(xiàng)目在調(diào)試階段運(yùn)行模擬器,如果出現(xiàn)ADB0020:The package does not support the CPU architecture of this device.錯(cuò)誤,可以在Android項(xiàng)目上單擊鼠標(biāo)右鍵,選擇“屬性”命令,然后選擇Android為“高級(jí)”,在支持的體系結(jié)構(gòu)下拉列表中勾選x86和x86_64復(fù)選框。

掃碼看視頻

1.2.5 發(fā)布apk

App只有發(fā)布后才能產(chǎn)生實(shí)用價(jià)值,那么要如何發(fā)布程序呢?本節(jié)將介紹從設(shè)置程序清單到復(fù)制在真機(jī)上的整個(gè)實(shí)現(xiàn)過(guò)程。

1)將項(xiàng)目切換到Release(Release為發(fā)行版本),編譯出的程序比Debug版本更小也更優(yōu)化,發(fā)布apk時(shí)一般選Release模式發(fā)布。

2)設(shè)置Android清單信息,包括應(yīng)用的名稱、apk包的名稱、圖標(biāo)、版本號(hào)、權(quán)限等,如圖1-13所示。

圖1-13 設(shè)置清單界面

3)Linking一般設(shè)置為SDK Assemblies Only,表示apk使用手機(jī)中自帶的SDK,如圖1-14所示。如果設(shè)置為none,則意味著將所有的SDK打包到apk中,這樣一個(gè)apk的大小至少有40多MB。

圖1-14 選項(xiàng)界面

4)執(zhí)行存檔apk操作,在發(fā)布apk之前,先要Archive(即存檔)得到apk,如圖1-15所示。

5)發(fā)布,在Archive成功后,會(huì)出現(xiàn)圖1-16所示的界面。

圖1-15 存檔界面

圖1-16 存檔管理界面

6)單擊“分發(fā)”按鈕,進(jìn)入發(fā)布apk的流程。首先,要對(duì)apk進(jìn)行簽名,如圖1-17所示。

圖1-17 簽名選擇界面

如果是第一次走這個(gè)流程,首先要單擊綠色的+按鈕,創(chuàng)建一個(gè)密鑰文件,然后選擇密鑰文件,再單擊“另存為”按鈕,即可保存簽名后的apk。

7)將上述得到的App1.apk復(fù)制到真機(jī),就可以安裝了。安裝完畢后,單擊圖標(biāo)即可運(yùn)行此App。

注意:Archive得到的apk并不能直接部署到真機(jī)上運(yùn)行,會(huì)出現(xiàn)閃退的問(wèn)題,需經(jīng)過(guò)最后的Distribute正式發(fā)布才行。

主站蜘蛛池模板: 桦甸市| SHOW| 炉霍县| 灵石县| 江华| 喜德县| 休宁县| 紫金县| 徐闻县| 饶阳县| 将乐县| 兴仁县| 黔西| 个旧市| 南开区| 盘山县| 普宁市| 都江堰市| 如东县| 南靖县| 周口市| 惠东县| 株洲县| 弥渡县| 宁乡县| 睢宁县| 海兴县| 台北县| 华亭县| 和龙市| 汶上县| 宁都县| 邹城市| 河东区| 靖边县| 平乐县| 吕梁市| 连南| 荣成市| 民县| 皮山县|