Xamarin 跨移動端開發系列(01) -- 搭建環境、編譯、調試、部署、運行

   (本文是基于老版本的VS和Xamarin,而VS2017已經集成了Xamarin,所以,本文已經過時,最新的Xamarin開發介紹請參見?使用?Xamarin開發手機聊天程序 。)

?  如果是.NET開發人員,想學習手機應用開發(Android和iOS),Xamarin?無疑是最好的選擇,編寫一次,即可發布到Android和iOS平臺,真是利器中的利器啊!好了,廢話不多說,就開始吧,本文將描述基礎環境的搭建,以及將應用在android環境中調試、發布、運行,iOS部分將在后面的文章中專門講解。

一.搭建環境

1. 安裝 VS2015。

2. 安裝 Xamarin。我安裝的是目前的最新版本:Xamarin.VisualStudio_4.2.0.703.msi。

3. 安裝JDK:我安裝的是目前的最新版本:jdk1.7.0_71。

4. 下載 Android SDK。

(1)下載完成后,?Android SDK?目錄下有兩個exe:AVD Manager.exe 和?SDK Manager.exe。

(2)SDK Manager 用于管理不同版本的SDK,在其管理界面中可以下載新版本的SDK或升級舊版本的SDK。

   ?

   ?我下載了版本號的5.1.1,6.0,7.0的SDK(其文件目錄在子文件夾platforms下)。這些版本的SDK會在項目編譯時用到,以及安卓模擬器也會用到它們。

(3)AVD Manager.exe 用于管理安卓模擬器。

  ?

   ?與SDK的版本號對應,我創建了三個安卓模擬器,供調試時使用。

5. 在VS中配置Xamarin選項。

  ? ?

  由于我暫時沒有用到原生的安卓開發,所以,我沒有配置NDK。

二. 新建Xamarin.Forms項目、編譯、部署、調試

  Xamarin.Forms 是Xamarin提供的一個套件,用于跨移動平臺的Form應用開發,所以,如果是使用Xamarin開發App,那么,Xamarin.Forms 將是很好的選擇。

1.新建一個Cross-Platform跨平臺項目,選擇Xaml App(Portable)。

  

  ?Xaml App 與 普通的App的區別在于,?Xaml App是使用Xaml文件來控制Form上的控件的布局的。

2.項目新建成功后,會在解決方案管理器中,生成三個項目。

  ?

  ?ESFramework.XamarinDemo 是可移植的類庫,App的絕大部分邏輯和UI都是在其中完成。

  ?ESFramework.XamarinDemo.Droid 對應了安卓版本,ESFramework.XamarinDemo.iOS 對應了iOS版本,它們都引用了?ESFramework.XamarinDemo 項目。

   對于一般簡單的應用而言,只需要在ESFramework.XamarinDemo中編寫代碼就可以了,ESFramework.XamarinDemo.Droid 和?ESFramework.XamarinDemo.iOS中的代碼幾乎不用動。  ?

3.編譯?ESFramework.XamarinDemo.Droid 項目

?  

  在項目屬性面板中,要選擇編譯所使用的安卓SDK的版本號,我選擇的是6.0。

4.部署、調試

  編譯成功后,就可以嘗試部署到虛擬機,并運行調試了。

(1)啟動安卓虛擬機。

  運行上述的AVD Manager.exe ,我選擇了自己創建的and6虛擬機,點擊界面右側的Start按鈕,啟動一個虛擬機實例。

  

(2)部署并運行

  在VS上的工具欄,選擇剛才啟動的虛擬機實例and6,點擊調試按鈕(綠色的三角形),即可開始部署、運行的流程。(注意,要選擇Debug模式)

  ?

(3)調試

  部署運行成功后,模擬器就會顯示demo App 的UI界面:

    

  此時,可以在源碼中加入斷點開始調試程序了。

三. 發布 apk

1.將項目切換到Release。

2.設置清單信息Manifest

  

  包括:應用的名稱、apk包的名稱、圖標、版本號、權限等。

3.設置Linker

  

  Linking 設置為none,意味著要將所有的SDK打包到apk中,這樣,一個apk至少是40多M。

  Linking 一般設置為 SDK Assemblies Only,表示 apk 使用手機中自帶的SDK。

4.Archive - 存檔apk

  

  在發布apk之前,先要Archive得到apk。注意:Archive得到的apk不能直接部署到手機真機,運行會閃退。還需要經過最后的Distribute正式發布。

5.Distribute

  在Archive成功后,會出現如下界面:

  

?  ?點擊Distribute按鈕,進入發布apk的流程。首先,要對apk進行簽名:

  

  如果是第一次走這個流程,先要點擊綠色的“+”,創建一個密鑰文件,然后選擇它,再點擊“Save As”按鈕,即可保存簽名后的apk。  

6.拷貝到真機

  將上述得到的ESFramework.XamarinDemo.apk,拷貝到真機,就可以安裝了。晚裝完畢,點擊圖標,即可運行我們的demo App了。

四.結語

  以上的整個流程是我們在為ESFramework通信框架的Xamrain版本實現一個入門Demo時,完整的記錄,希望對剛剛開始研究Xamrain開發的朋友有所幫助。

  后續的文章,我們將介紹這個Demo的后續開發過程,基于Xamarin實現手機與PC互通的的IM 聊天小程序。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260378.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內網穿透 無需公網ip_無需端口映射、無需公網IP,60秒實現FTP服務遠程訪問

互聯網的一大特點是實現信息共享,其中文件傳輸是信息共享十分重要的內容之一。科技公司更是離不開它。銷售、庫存、客戶資料等等數據需要隨時共享同步。當需要考慮到文件傳輸安全、傳輸質量、傳輸穩定性、訪問控制等諸多因素時,FTP服務器就成了解決文件傳…

mysql查詢的時候會涉及到鎖_Mysql 查詢 鎖的問題?

以下五種方法可以快速定位全局鎖的位置,僅供參考。方法1:利用 metadata_locks 視圖此方法僅適用于 MySQL 5.7 以上版本,該版本 performance_schema 新增了 metadata_locks,如果上鎖前啟用了元數據鎖的探針(默認是未啟用的)&#x…

Clojure:導入lein項目到IntelliJ IDEA

首先,我們需要先創建一個lein項目(廢話。。) lein new [項目名稱] 然后生成Maven的pom.xml文件 cd [項目目錄]lein pom 最后,在InteliJ IDEA中選擇導入Maven項目,選擇剛剛生成的pom.xml文件即可。 轉載于:https://www.…

git 工具_Github開源工具分享之自托管GIT服務工具Gogs

介紹Gogs項目旨在構建一種簡單,穩定和可擴展的自托管Git服務,該服務可以通過最輕松的方式進行設置。使用Go語言開發的git自托管服務,部署十分簡單,可以在Go支持的所有平臺(包括Linux,macOS,Windows和ARM)上…

Mariadb 二進制半自動安裝腳本

Mariadb 二進制半自動安裝腳本系統環境:centosx86_64Mariadb版本:mariadb-5.5.36-linux-x86_64#!/bin/bash#auth:code7#description:auto-mariadb#version:1.0groupadd -r -g 306 mysqluseradd -r -g 306 -u 306 mysql#創建mysql的組和用戶tar -xvf mari…

hdu 4414 Finding crosses

http://acm.hdu.edu.cn/showproblem.php?pid4414 簡單枚舉 代碼&#xff1a; #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <queue> #include <vector> #include <algorithm>#define LL …

mysql皮秒轉成年月日時分秒_MySQL performance_schema 中 TIMER_*類字段 的易讀轉換

performance_schema中有很多的表(語句信息表&#xff0c;事務信息表等)記錄執行的SQL的具體信息&#xff0c;執行事務的具體信息&#xff0c;其中都會有一個叫做TIMER_START的字段&#xff0c;這個字段的值易讀性很差&#xff0c;官方文檔說是皮秒&#xff0c;但也沒說怎么轉成…

c++函數相關

1&#xff0c;內連函數 inline 返回值類型 函數名&#xff08;形參列表&#xff09; 普通函數成為內連函數&#xff1a;在普通函數聲明之前加上inline 成員函數成為內連函數&#xff1a;在類中定義的函數全部默認為內連函數&#xff0c;可以顯示加上inline或者不加&#xff1b;…

goto語句_11. Go語言流程控制:goto 無條件跳轉

本文原文&#xff1a;http://golang.iswbm.comGithub&#xff1a;https://github.com/iswbm/GolangCodingTimeGo里的流程控制方法還是挺豐富&#xff0c;整理了下有如下這么多種&#xff1a;if - else 條件語句switch - case 選擇語句for - range 循環語goto 無條件跳轉語句def…

[BT5]信息收集1-2 Dnsmap

0.工具介紹 dnsmap is mainly meant to be used by pentesters during the information gathering/enumeration phase of infrastructure security assessments. During the enumeration stage, the security consultant would typically discover the target companys IP netb…

httpf發送 json_Java用HttpClient3發送http/https協議get/post請求,發送map,json,xml,txt數據...

使用的是httpclient 3.1&#xff0c;使用"httpclient"4的寫法相對簡單點&#xff0c;百度&#xff1a;httpclient https post當不需要使用任何證書訪問https網頁時&#xff0c;只需配置信任任何證書其中信任任何證書的類MySSLProtocolSocketFactory主要代碼&#xff…

分頁優化的四種方式

轉自&#xff1a;http://www.orczhou.com/index.php/2009/03/four-way-pager-display/ 很久以前讀了一篇關于分頁的文章&#xff0c;后來越想越有道理&#xff0c;最近又重新找出來&#xff0c;并做了翻譯&#xff0c;原文參考:Four ways to optimize paginated displays. 翻譯…

使用 VMControl 2.4 實現多網絡的 Power 服務器捕捉和系統部署

VMControl 作為 IBM Systems Director 的一個高級管理器&#xff0c;提供了一系列的管理功能幫助 Power 管理員快速捕獲部署虛擬機系統&#xff0c;進行虛擬化環境的管理。而現代的數據中心&#xff0c;出于安全性&#xff0c;網路負載等多重因素的考慮&#xff0c;一般會存在有…

windows python安裝_window 安裝 python

官網地址下載安裝包點擊下載 會自動識別你當前的系統&#xff0c;或者點擊你需要安裝的平臺或者選擇其他版本執行安裝高級選項說明&#xff1a;Install for all users 所有用戶可使用Associate files with Python 關聯PY相關的文件Create shortcuts for installed applications…

iOS應用內付費(IAP)開發步驟列表

iOS應用內付費(IAP)開發步驟列表 前兩天和服務端同事一起&#xff0c;完成了應用內付費&#xff08;以下簡稱IAP, In app purchase&#xff09;的開發工作。步驟繁多&#xff0c;在此把開發步驟列表整理如下。因為只是步驟列表&#xff0c;所以并不含詳細的說明教程&#xff0c…

【unity3d--初始學習五--c#腳本對xml文件的創建和解析】

本人用c#編寫腳本。 創建xml文件時&#xff0c;主要用到System.Xml包中的XmlDocument,XmlNode,XmlElement。下面是創建xml文檔的一般步驟&#xff1a; XmlDocument docnew XmlDocument(); //<?xml version"1.0"?> XmlNode xmlnoddoc.CreateNode(XmlNodeType.…

python計算機視覺編程(全)(強烈推薦)_推薦一個計算機視覺圖書:python計算機視覺編程...

編輯部的主頁&#xff1a;好像沒啥用每章的代碼&#xff0c;github上面的&#xff1a;中文版github上面&#xff0c;英文版&#xff1a;項目主頁&#xff1a;中文在線的書&#xff1a;然后下載安裝安裝好了以后&#xff0c;點擊自動的編輯器&#xff1a;新建工程&#xff0c;插…

mysql工具的使用_產品操作MySQL入門篇-工具使用

MYSQL本資料為產品崗位作為日常工作參考&#xff0c;語言口語化At 2019/4/15 By David.Yang數據庫怎么登錄/管理&#xff1f;登錄數據庫的方式有多種&#xff0c;比如本地Client登錄、通過數據庫管理工具登錄、通過瀏覽器訪問數據庫端WEB軟件登錄。通過各種方式登錄后&#xff…

在windows下運行spark

1.下載spark:spark-2.0.0-bin-hadoop2.7.tgz 2.解壓至D:\bigdata\spark-2.0.0-bin-hadoop2.7 3.配置環境變量 HADOOP_HOME:D:\bigdata\hadoop-2.7.2 SPARK_HOME:D:\bigdata\spark-2.0.0-bin-hadoop2.7 Path中添加&#xff1a;%HADOOP_HOME%\bin;%SPARK_HOME%\bin; 4.運行 先運行…

UIView使用UIMotionEffect效果

UIView使用UIMotionEffect效果 這個效果在模擬器上看不了,所以無法截圖. UIViewMotionEffect.h UIViewMotionEffect.m // // UIViewMotionEffect.h // // Copyright (c) 2014年 Nick Jensen. All rights reserved. //#import <UIKit/UIKit.h>interface UIView (Moti…