使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)

      如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微软收购并被大力推广,.NET开发人员将时间投资在Xamarin上,以应对移动开发的热潮,应该是值得的。

        好了,废话不多说,就开始吧。本系列文章将详细介绍如何使用Xamarin开发出一个简单的即时通信IM聊天系统(文末有源码下载,可先睹为快),本文作为第一篇基础篇,将着重介绍Xamarin Android和Xamarin iOS环境的搭建,包括安装、设置、模拟器、部署、运行调试等。本系列后面的文章将详细介绍手机聊天系统结构原理和具体代码实现。

一.搭建环境

1. 安装 Xamarin。

     VS2017已经集成了Xamarin,只要在安装的时候,将“使用.NET的移动开发”选项勾选上,即可。

      

2.设置Xamarin Android。

(1)启动VS 2017之后,打开菜单 工具->选项->Xamarin->Android设置,在设置面板上做如下设置:

        

(2)使用 Genymotion 作为安卓模拟器。

3.设置Xamarin iOS。

(1)在我的MacBook笔记本上安装 Visual Studio for Mac。

(2)在MacBook的系统偏好设置 中找到“共享”选项,打开“共享”界面如下。 开启远程管理和远程登录。

         

(3)在PC端VS “工具” 选择卡中依次选择 IOS ->Xamarin.Mac代理,点击左下方的“Add Server”按钮,输入对应远程Macbook机器的IP,并进行登录。

         

(4)登录成功后,界面上会显示如下链接的图标表示远程成功。

          

(5)连接成功后,在VS中就可以进行调试MAC机器上的模拟器或者真机了。

         

(6)在PC端VS中,打开菜单 工具->选项->Xamarin->iOS设置,在设置面板上做如下设置:

        

  

二. 新建Xamarin.Forms项目、编译

  Xamarin.Forms 是Xamarin提供的一个套件,用于跨移动平台的Form应用开发,所以,如果是使用Xamarin开发App,那么,Xamarin.Forms 将是很好的选择。

1.新建一个Cross-Platform跨平台项目,选择Cross Platform App(Xamarin)。

     

2.项目新建成功后,会在解决方案管理器中,生成三个项目。

   

   XamarinDemo 项目是可移植的类库,App的绝大部分逻辑和UI都是在其中完成。

   XamarinDemo.Droid 项目对应了安卓版本,XamarinDemo.iOS 项目对应了iOS版本,它们都引用了 ESFramework.XamarinDemo 项目。

   对于一般简单的应用而言,只需要在XamarinDemo中编写代码就可以了,XamarinDemo.Droid 和 XamarinDemo.iOS中的代码只需要做少量修改。   

3.编译 XamarinDemo.Droid 项目

        在解决方案管理器中选中 XamarinDemo.Droid 项目,右键->属性,打开设置面板。

   

  在项目属性面板中,要选择编译所使用的安卓SDK的版本号,我选择的是最新6.0。

4.编译 XamarinDemo.iOS 项目

       在解决方案管理器中选中 XamarinDemo.iOS项目,右键->属性,打开设置面板。

       

        在项目属性面板中,选择编译所支持的CPU体系结构,由于现在是使用iOS模拟器,所以选择x86_64。

        如果是使用真机调试,则应该选择 ARMv7+ARMv7s+ARM64。

三.部署、调试

  编译成功后,就可以尝试部署到虚拟机,并运行调试了。

1. 安卓版本

(1)启动安卓虚拟机。

    运行上述的Genymotion。  

       

       选择6.0的虚拟机,点击Start按钮运行起来。

       

(2)部署

  在VS上的工具栏,选择刚才启动的虚拟机实例Genymotion Custom Phone - 6.0.0,点击调试按钮(绿色的三角形),即可开始部署、运行的流程。(注意,要选择Debug模式)

  

(3)调试

  部署运行成功后,模拟器就会显示demo App 的UI界面:

    

  此时,可以在源码中加入断点开始调试程序了。

2.iOS版本

(1)启动虚拟机

      

(2)在VS上的工具栏,选择iPhone 6 Plus iOS 11.2,点击调试按钮(绿色的三角形),即可开始部署、运行的流程。

        

(3)调试

  部署运行成功后,模拟器就会显示如下Demo的登录界面:

        

四.源码下载

  虽然还未正式开始介绍聊天程序的代码实现,但是还是先将demo的源码分享给大家,基于以上介绍的内容,大家已经可以将demo运行起来看效果了。并且,源码中除了Xamarin移动端外,还包含了聊天服务端和PC客户端以及WebSocket客户端,而且,Xamarin移动端和PC客户端以及Web端之间都可以相互聊天哦!

  下面是手机端运行的效果图:

              

(1)源码:服务端+PC客户端 (基于VS 2010)

(2)源码:Xamarin 移动端(包括Android 和 iOS)    (基于VS 2017)

  最后,在使用Xamarin开发本Demo的过程中,踩过了很多很多的“坑”,对这些坑的解决方案我们也会在本系列的文章中分享出来,如此能为后来者节省一些时间。敬请期待!

原文:http://www.cnblogs.com/zhuweisky/p/8032828.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 数据库连接池入门

转载自 芋道 Spring Boot 数据库连接池入门 本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-19 目录。 原创不易,给点个 Star 嘿,一起冲鸭! 1. 概述 在我们的项目中,数据库连接池基…

.net core 实现简单爬虫—抓取博客园的博文列表

一.介绍一个Http请求框架HttpCode.CoreHttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的,移除了HttpCode与windows相耦合的api,且修改了异步实现,其余特性完全与…

SpringBoot2.1.9 Mybatis由于@Mapper注解多数据源配置不生效问题

一、场景复现 (1)项目 目录 配置文件 spring:application:name: multi-datasourceprofiles:active: dev1datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/base?…

使用Windows兼容包简化向.NET Core的迁移

从.NET迁移到.NET Core的一个主要原因,在于后者具备在Linux上运行的能力。但是对于大型企业应用,不可能实现一步迁移到位。由此,Microsoft推荐采用一种逐步迁移做法:第一步,迁移到ASP.NET Core(依然使用.NE…

springboot使用xml配置mybatis

前面用注解配置了mybatis&#xff0c;非常的简单&#xff0c;但是在写动态sql语句的时候会非常的麻烦&#xff0c;所以这边我们用xml来重新配置一下 在resource目录下新建 SqlMapConfig.xml 主配置文件 <?xml version"1.0" encoding"UTF-8" ?> &…

SpringBoot2.1.9 Mybatis多数据源配置

一、配置文件 目录 application.yaml spring:application:name: multi-datasourceprofiles:active: devdatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/base?autoReconnecttrue&ze…

自动类型安全的REST .NET标准库refit

在SCOTT HANSELMAN 博客上看到一个好东西《Exploring refit, an automatic type-safe REST library for .NET Standard》&#xff0c;他推荐了一个.NET标准1.4 的自动类型安全的REST库refit。 refit 类似于Java的Retrofit&#xff0c;是一套RESTful架构的.NET客户端实现&#x…

Visual Studio的语言服务器协议

语言服务器协议&#xff08;LSP&#xff09;是Visual Studio Code的一个重要组件。语言服务器实际上是单独运行的编译器或分析器&#xff0c;它负责处理各种任务&#xff0c;如编译器错误报告、文本悬浮、代码自动完成&#xff08;也就是IntelliSense&#xff09;等。语言服务器…

C#和NewSQL更配 —— TiDB入门

一、背景在上一篇尝试CockroachDB&#xff08;传送门在此&#xff1a;http://www.cnblogs.com/Zachary-Fan/p/cockroachdb_net_csharp.html&#xff09;的过程中&#xff0c;发现如果从常规的RDBMS迁移过去几乎是不太可能的事情&#xff0c;所以掉头开始调研一下也是这2年比较火…

Mysql调优你不知道这几点,就太可惜了

转载自 Mysql调优你不知道这几点&#xff0c;就太可惜了 一、Mysql的逻辑分层 Mysql分为&#xff1a;连接层、服务层、引擎层、存储层。 当客户端向服务端发起操作请求的时候&#xff0c;执行过程是这样的&#xff1a; 1、客户端端与Mysql服务端的连接层建立连接&#xff…

Unity/DotNetty中集成Lidgren实现可靠UDP

lidgren有几个优点&#xff1a;分channel&#xff0c;每个channel都有单独的消息队列&#xff0c;不互相影响。每个消息可以单独选择使用可靠/不可靠传输。支持内网穿透自带加密算法。前端Unity&#xff1a;先贴一张前端使用的网络框架图&#xff1a;Lidgren的Github地址&#…

欢乐纪中A组周六赛【2019.4.13】

前言 做A组被虐好惨 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC222巨佬WHF巨佬WHF巨佬WHF140140140404040100100100000222巨佬ZZY巨佬ZZY巨佬ZZY140140140404040100100100000555巨佬HJW巨佬HJW巨佬HJW10010010010010010000000014…

面试官问:如果MySQL引起CPU消耗过大,你会怎么优化

转载自 面试官问&#xff1a;如果MySQL引起CPU消耗过大&#xff0c;你会怎么优化 谁在消耗cpu? 用户系统IO等待软硬中断空闲 祸首是谁&#xff1f; 用户 用户空间CPU消耗&#xff0c;各种逻辑运算 正在进行大量tps 函数/排序/类型转化/逻辑IO访问… 用户空间消耗大量cpu&…

【译】使用Jwt身份认证保护 Asp.Net Core Web Api

原文出自Rui Figueiredo的博客&#xff0c;原文链接《Secure a Web Api in ASP.NET Core》摘要&#xff1a;这篇文章阐述了如何使用 Json Web Token (Jwt)方式 来配置身份验证中间件。这种方式十分适合移动App 后端等不使用cookie的后端程序。网络上有许多资源可以教你如何保护…

禁用Cookie后,Session怎么样使用

转载自 禁用Cookie后&#xff0c;Session怎么样使用 在上篇中更多的是在分析通过Session Cookie这一方式&#xff0c;在每次请求时都将 sessionId以Cookie的形式发到服务端&#xff0c;来保持一致。这也是许多人印象中的 Session在浏览器关闭之后就失效这一说法的来源。 其…

ASP.NET MVC使用Oauth2.0实现身份验证

随着软件的不断发展&#xff0c;出现了更多的身份验证使用场景&#xff0c;除了典型的服务器与客户端之间的身份验证外还有&#xff0c;如服务与服务之间的(如微服务架构)、服务器与多种客户端的(如PC、移动、Web等)&#xff0c;甚至还有需要以服务的形式开放给第三方的&#x…

Spring Boot API 接口文档 Swagger 入门

转载自 芋道 Spring Boot API 接口文档 Swagger 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Swagger/ 「芋道源码」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 本文在提供完整代码示例&#xff0c;可见 https://github.com/YunaiV/SpringBoot-Lab…

ICanPay 统一支付网关

https://github.com/hiihellox10/ICanPay 统一支付网关。对原代码优化。支持NET46和NETSTANDARD2_0。支持支付宝&#xff0c;微信&#xff0c;银联支付渠道通过Web&#xff0c;App&#xff0c;Wap&#xff0c;QRCode方式支付。简化订单的创建、查询、退款跟接收网关返回的支付通…

使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)

引子这一篇文章将用一个完整的实例&#xff0c;给大家介绍如何基于dotnet core&#xff08;微软.NET的最新版本&#xff0c;支持跨平台&#xff0c;跨设备的应用开发&#xff0c;详情请参考 https://www.microsoft.com/net 开发一个Web API Service&#xff0c;并且利用Azure的…

如何基于Canal 和 Kafka,实现 MySQL 的 Binlog 近实时同步

转载自 如何基于Canal 和 Kafka&#xff0c;实现 MySQL 的 Binlog 近实时同步 近段时间&#xff0c;业务系统架构基本完备&#xff0c;数据层面的建设比较薄弱&#xff0c;因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统…