[Xamarin]我的Xamarin填坑之旅(一)
一想到明天是星期五,不对,是今天,心里就很激动,毕竟明天没课。激动之余,来写一篇博客,记录一下最近踏坑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填坑之旅(一)的更多相关文章
- bootstrap-table填坑之旅<一>认识bootstrap-table
应公司需求,改版公司ERP的数据显示样式.由于前期开发的样式是bootstrap,所以选bootstrap-table理所当然(也是因为看了bootstrap-table官网的example功能强大, ...
- React Native填坑之旅--与Native通信之iOS篇
终于开始新一篇的填坑之旅了.RN厉害的一个地方就是RN可以和Native组件通信.这个Native组件包括native的库和自定义视图,我们今天主要设计的内容是native库方面的只是.自定义视图的使 ...
- React Native填坑之旅--Flow篇(番外)
flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...
- React Native填坑之旅--布局篇
代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN ...
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- https填坑之旅
Boss说,我们买了个权威证书,不如做全站式的https吧,让用户打开主页就能看到受信任的绿标.于是我们就开始了填坑之旅. [只上主域好不好?] 不好...console会报出一大堆warning因为 ...
- stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED
转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...
- [Xamarin]我的Xamarin填坑之旅(二)
上一篇交代了我Xamarin填坑的背景,大概聊了聊第一步环境配置,第二步创建项目和开发框架选择.如果有一个可用的梯子,这部分基本不会出错. 接下来就具体聊一聊写代码的过程中遇到的一些事儿. 第三步是码 ...
- React Native填坑之旅--Stateless组件
Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...
随机推荐
- 简述Markdown的使用方法
MarkdownPad Document Markdown的使用技巧 一.标题 一个”#“表示H1.“##”表示H2... 二.列表 第一点 第二点 注意1.2. -与文本之间要有一个空格 这一点 三 ...
- java的PDF纵横向打印
PDF默认是纵向打印的,通过rotate()来让其改变为横向打印,一般在打印A4 12*21纸以及发票的时候会用横向打印.横向打印时页面会出现行转列以及列转行的情况,因此在设置页面大小的时候一定要宽度 ...
- oracle pl/sql程序
简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...
- 品味性能之道<六>:图形化SQL分析工具
在上一章里,重点分享了命令行SQL分析工具的使用方法.在本章将重点分享PL/SQL的SQL分析工具. 一.如何打开PL/SQL执行计划 开启PL/SQL这工具,推荐如下方法: 点击 ...
- Fully Update And Upgrade Offline Debian-based Systems
Let us say, you have a system (Windows or Linux) with high-speed Internet connection at work and a D ...
- 2018.10.16 spoj Can you answer these queries V(线段树)
传送门 线段树经典题. 就是让你求左端点在[l1,r1][l1,r1][l1,r1]之间,右端点在[l2,r2][l2,r2][l2,r2]之间且满足l1≤l2,r1≤r2l1\le l2,r1 \l ...
- 2018.09.15 bzoj1977:次小生成树 Tree(次小生成树+树剖)
传送门 一道比较综合的好题. 由于是求严格的次小生成树. 我们需要维护一条路径上的最小值和次小值. 其中最小值和次小值不能相同. 由于不喜欢倍增我选择了用树链剖分维护. 代码: #include< ...
- Django入门与实践-第22章:基于类的视图
http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/ http://127.0.0.1:8000/ #boards/views.py from d ...
- Class^=,Class*= ,Class$=含义(转)
在Twitter 中有看到如下selector: .show-grid [class*="span"] { background-color: #eee; text-align: ...
- Deployment is out of date due to changes in the underlying project contents. Deployment is out of date due to changes in the underlying project contents. You'll need to manually 'Redeploy' the projec
原因1:导入的jar包路径不对,造成第一个错误, 原因2:设置右键工程->属性->myeclipse->web->deployment选use workbenk defaul ...