一想到明天是星期五,不对,是今天,心里就很激动,毕竟明天没课。激动之余,来写一篇博客,记录一下最近踏坑Xamarin开发校园助手APP的一些事儿。也许更像是一篇流水账。

在扯Xamarin之前,有必要先交代一下背景。

  自从我上大学以来,一直在做校园助手,直到现在。完成一个优秀的校园助手,是我大学中为数不多的几个梦想之一。想要制作一款软件,就必须要选择一种合适的语言或平台,喜爱微软的我,选择了C# via .Net。在匆匆了解了C#的基础后,便开始尝试使用WPF做一些简单的东西。然后这个时候的境界就停留在拖控件,不过好在也用拖控件的方式完成了一款Win32平台上的校园WIFI助手,结构简单,功能简单。当然此间接触了一些HTTP协议的基础知识。后来入手微软的Windows Phone手机,于是生出了在WP上开发校园WIFI助手的想法,有想法就有行动,不久后,成功完成了一个简易助手,叫《工大WIFI助手》,发布在了Windows商店。众所周知,无论是WinRT,SilverLight还是WP开发,他们的技术体系基本是相通的,都源于WPF,拥有熟悉的依赖属性,数据绑定,XAML等。针对这些内容的学习,为以后做UWP开发做了一些铺垫。

  早在14年10月初,微软就开始了Windows Insider计划,我也加入了其中。对,我不只希望做一名Insider,更希望做一个懂开发的Insider。也就在15年初的时候,微软的Windows10开发已经在整个微软圈子里面开始火了起来,许多以前的WP开发者也都来踩坑。我也正式在这个时候开始学习UWP开发。同样的,UWP开发也有纯正的WPF血统,入门还算顺利。在随后的UWP学习和开发中,对XAML,数据绑定,依赖属性等概念又有了深一步的认识。在15年后半段,我第一个像样的校园助手《工大助手》初版正式完成具备了一些基础的查询功能。后来又陆陆续续修改,添加了一些新的东西。期间也对基本学习到了UWP平台的东西有了更多一步的认识。直到后来。

  后来Xamarin来了。

  在我的950XL频繁罢工后,我意识到信仰和生活是有差距的,于是我入手了第一台自己的安卓设备——小米5。很自然的,遇到了一个现实的问题:在我的大学里,并没有一款像样的安卓版校园助手。怎么办呢?自己来做。其实决定做安卓版的《工大助手》,有一个重要的原因是我被Xamarin这个技术吸引了。这个时候Xamarin开发在跨平台开发领域愈发火热,包括微软收购Xamarin并且宣布Xamarin免费。我一个.net系的伪程序员,在对Java无感,而又不想深入学习安卓的情况下,Xamarin成我了我的理想工具。在Xamarin.Forms中,我可以用熟悉的Xaml、喜爱的C#来开发安卓和IOS应用,简直太完美了。说干就干,我开始正式踩坑。

用Xamarin.Forms开发的好处在于它的逻辑代码全部采用C#编写,不用去学习IOS和安卓的细节知识,而且有比较完善的MVVM框架可用。在我之前的UWP校园助手项目中,我使用了MVVM开发模式,所以从UWP项目到Xamarin.Forms项目,在一定程度上就等价于更换掉MVVM的View层。代码的复用率达到了70%左右。虽是恰巧,可细想也是必然。于是我断断续续用了一周的时间,把《工大助手》成功用Xamarin.Forms重写了,并且发布了可用的APK。值得一提的是,我在此期间对Android的了解基本为0,一切工作都是Xamarin替我完成的。


  在实际的开发中,大问题没有,小问题却也不断。按照整个流程,大致理了理。

  第一步是环境的安装:

  Xamarin开发工具既可以用Xamarin for VS,也可以用Xamarin Studio。本着对VS比较熟悉和喜爱,我选择了用VS。安装VS2015的时候,可以选择添加Xamarin工具。安装过程其实说复杂也不复杂,大家虽然很多人遇到问题,但问题莫过于无法安装安卓相关的一些工具和SDK,解决办法也很简单,找个好点的梯子,所有问题都没有了。值得一提的时候,就在我写这篇博客的当天2016.12.08,谷歌在大陆的开发者网站上线了,地址是https://developers.google.cn/,此处应该有掌声。

  第二步是建立项目:

  在VS中可以选择Cross-Platform——Xamarn.Forms相关的模板建立项目,一般项目分为Portable和Shared两种方式,这个要根据需求选择,但一般选择Portable也没问题。在MVVM框架的选择中,我纠结了好久,最后选择了微软自家Prism框架,它提供了对Xamarin的良好支持,自带一个项目模板,可以直接在新建项目的时候选择该模板建立Xamarin.Forms项目,它会为我们自动搭建好一个MVVM的框架,使我们专注于自己的核心业务逻辑。至于该框架的介绍对比,博客园中有大神已经写博分析过了。

  以上两步虽然简单,但是确实我们开发Xamarin的基础和敲门砖。在这儿引用博客园大神的相关文章:

  老司机学新平台 - Xamarin开发环境及开发框架初探http://www.cnblogs.com/teddyma/p/xamarin_perfect_dev_env_and_frameworks.html

  老司机学新平台 - Xamarin Forms开发框架二探 (Prism vs MvvmCross)http://www.cnblogs.com/teddyma/p/xamarin_dev_framework_research_2.html

  电脑快没电了,所以这是一个连载系列……

[Xamarin]我的Xamarin填坑之旅(一)的更多相关文章

  1. bootstrap-table填坑之旅<一>认识bootstrap-table

    应公司需求,改版公司ERP的数据显示样式.由于前期开发的样式是bootstrap,所以选bootstrap-table理所当然(也是因为看了bootstrap-table官网的example功能强大, ...

  2. React Native填坑之旅--与Native通信之iOS篇

    终于开始新一篇的填坑之旅了.RN厉害的一个地方就是RN可以和Native组件通信.这个Native组件包括native的库和自定义视图,我们今天主要设计的内容是native库方面的只是.自定义视图的使 ...

  3. React Native填坑之旅--Flow篇(番外)

    flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...

  4. React Native填坑之旅--布局篇

    代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN ...

  5. 使用vue开发微信公众号下SPA站点的填坑之旅

    原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...

  6. https填坑之旅

    Boss说,我们买了个权威证书,不如做全站式的https吧,让用户打开主页就能看到受信任的绿标.于是我们就开始了填坑之旅. [只上主域好不好?] 不好...console会报出一大堆warning因为 ...

  7. stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED

    转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...

  8. [Xamarin]我的Xamarin填坑之旅(二)

    上一篇交代了我Xamarin填坑的背景,大概聊了聊第一步环境配置,第二步创建项目和开发框架选择.如果有一个可用的梯子,这部分基本不会出错. 接下来就具体聊一聊写代码的过程中遇到的一些事儿. 第三步是码 ...

  9. React Native填坑之旅--Stateless组件

    Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...

随机推荐

  1. 4-js 函数

    总是有些奇奇怪怪的问题: <div> <p class="productStatus"> <span>成交量 <em>${goods ...

  2. jquery源码学习-初始(1)

    最近几天一直在研究jquery源码,由于水平太低看得昏头转向.本来理解的也不是很深刻,下面就用自己的想法来说下jquery是如何定义构造函数初始化的.如果有什么不对的地方,希望个位高手指出. 首先要了 ...

  3. linux下静默安装 weblogic12.2.1.3中间件

    第一步:准备需要的安装包文件,这里注意 weblogic12.2.*需要的最低JDK版本为1.8以上 1.查看当前的镜像列表:docker images 2.运行镜像,并进入容器,这里运行基本的cen ...

  4. sobel 使用说明

    转自http://www.cnblogs.com/justany/archive/2012/11/23/2782660.html OpenCV 2.4+ C++ 边缘梯度计算 2012-11-23 0 ...

  5. JS 读取本地Excel文件

    首先我们先引用一个Excel的类库xlsx.full.min.js 中间处理: 'use strict'; var ExcelReader = { isFirstRead: true, fixdata ...

  6. myschool 相思树

    题目描述 一群妖王排成一排站在苦情巨树下,寻找自己的转世恋人.虽然都是妖王,但按照涂山的规定必须进行标号,标号为1的妖王排在最后面,标号为n的妖王排在最前面.每个妖王只有一个妖力值a[i]表示它们现在 ...

  7. LaTeX 公式(转自)Iowa_Battleship 神犇

    传送门 (我这个蒟蒻只是mark一下 这个LaTex公式很全!!我是照着打数学公式的!! orz大佬Iowa

  8. toArray()

  9. 开始Java之旅

      从今天起,cgg将给大家讲讲Java这种神奇的东西.   至于配置环境变量,大家可以看看我的博客:环境变量上面有详细解释.   下面先给大家一个公式:    public class [文件名]{ ...

  10. NET(C#)连接各类数据库-集锦

    1.C#连接连接Access程序代码:------------------------------------------------------------------------------- u ...