C# Xamarin移动开发基础进修篇

一、课程介绍

英文原文:C# is the best language for mobile app development. Anything you can do in Objective-C, Swift or Java, you can do in C#。 中文译意:C#是移动应用程序开发的最佳语言。 在Objective-C,Swift或Java中你可以做的任何事情,你都可以在C#中完成。 1)、本次分享课程适合人群如下: 1、 热爱Xamarin跨平台移动开发。 2、进一步了解和学习Xamarin For Android移动开发知识。 Xamarin主要有这么几项技术,Xamarin.Android、Xamarin.iOS和Xamarin.Forms,此外还有Xamarin.UWP、Xamarin.Windows、Xamarin.WinPhone等。本次阿笨的分享课程是 Xamarin.Android系列,希望大家要看清楚课程教学重点和覆盖内容。 2)、本次分享课程包含以下干货知识点: 1、BIOS如何开启Virtual Technology虚拟化技术 2、Android手机(魅蓝NOTE 3)如何开启开发者调试 3、如何快速上手通过Xamarin 创建移动Android App应用程序。 4、Android介绍以及SDK、版本。 5、Android ADB常用命令介绍 6、Android常用几种权限(Permission) 7、Android生命周期 8、Android四大组件 9、Android六大布局(Layout) 10、Android五大存储(Storage) 11、Android文件操作(File) 12、Android学习之Intent使用 13、Android页面跳转以及传值(Activity) 14、Android学习之广播使用(Broadcast) 3)、本次分享课程最终目标: 希望学完本次分享课程后能够对Xamarin For Android开发有一定的了解和掌握,从而减少大家的学习成本! 如果您同样对本次分享课程 《C# Xamarin移动开发基础进修篇》感兴趣的话,那么请跟着阿笨一起学习吧! 废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、概念名称含义解释

2.1、Mono介绍

Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目。与微软的.NET Framework(共通语言运行平台)不同,Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris,甚至一些游戏平台。 一句话:Mono一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,能够使得开发人员在Linux用C#开发程序。

2.2、Xamarin 简介和工作原理

1)、Xamarin 简介 考虑如何生成 iOS 和 Android 应用程序时,许多用户都认为本机语言、Objective-C、Swift 和 Java 是唯一的选择。Xamarin 它的目标是用C#开发iOS、Android和Windows Phone原生应用程序。 Xamarin.Android 为 .NET 开发人员提供了完整的 Android SDK。 在 Visual Studio 中使用 C# 或 F# 生成完全本机的 Android 应用。 Xamarin.iOS 为 .NET 开发人员提供了完整的 iOS SDK。 在 Visual Studio 中使用 C# 或 F# 生成完全本机的 iOS 应用。 Xamarin.Mac 为 .NET 开发人员提供了完整的 macOS SDK。 在 Visual Studio for Mac 中生成完全的本机应用。 Xamarin.Forms 是一个跨平台 UI 工具包,允许开发人员有效创建可跨 iOS、Android、Windows Phone、通用 Windows 平台应用共享的本机用户界面布局。 2)、Xamarin工作原理 Android应用程序会被编译为IL代码,启动时再进行JIT编译(动态编译),发布程序的时候会包含一个mono runtime。 而iOS则是直接通过AOT编译(静态编译)为ARM汇编代码。具体见:http://xamarin.com/how-it-works

2.3、Xamarin Studio介绍

Xamarin Studio是一个用C#语言开发跨平台应用的集成开发环境,它和iOS以及AndroidSDK紧密整合。开发者可以使用Xamarin Studio在模拟器和真机上对移动应用进行测试和bug调试。Xamarin Studio能够完美支持Windows和Mac!

2.4、Visual Studio Tools for Xamarin介绍

自从微软收购了 Xamarin 团队后,将Xamarin Studio整合到了Visual Studio中了,可以说是给我们C#开发者带来了极大的福利。微软终于收购了跨平台移动开发公司Xamarin。至于收购金额并未得到公布。微软云端与企业部门执行副总裁Scot Guthrie在博客中指出,Xamarin将联合Visual Studio为客户提供丰富的移动开发产品,开发者将能使用C#开发移动软件并向所有主要移动平台推送全原生态的移动软件。 由于微软2016年2月正式收购了Xamarin,并将Xamarin内置到了VS2015 Update2中(Xamarin被微软收购后,从2016年5月开始,Xamarin for VS已经变为全部免费并开源了),因此2016年6月发布的Xamarin for VS 4.1.0.530不再需要破解,也不再需要单独的账号,直接安装或者升级就是企业版了。

三、Xamarin  App移动开发环境和工具

3.1工欲善其事必先利其器

工欲善其事,必先利其器是说:工匠想要使他的工作做好,一定要先让工具锋利。比喻要做好一件事,准备工作非常重要。我们不使用vs2015,我们不使用VS自带微软提供给我们的移动设备模拟器,我们不使用第三方移动设备模拟器比如:genymotion等等。大家时间都是宝贵的,把有限的时间投入到无限的工作中上。这里阿笨不陪大家折腾了,我们直接上真机真环境上开启我们的Xamarin For Android移动开发之旅。 早期VS2015+Xamarin Studio环境配置教程: C#移动跨平台开发(1)环境准备 Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

vs2017安装xamarin

3.2、为什么选择Visual Studio 2017 宇宙第一IDE工具?

Visual Studio 2017 可是号称宇宙第一个IDE,而且自从微软收购xamarin公司后,VS已经集成了Xamarin Studio工具,我们可以在Visual studio 2015上开发移动应用项目了,现在升级到Visual Studio 2017 后移动开发项目得到了很大的升级和完善,直接做到了安装vs后就可以开发移动应用了,免去早期了很多繁琐的java 、android sdk环境的安装和配置工作。 可以这么说Visual Studio 2017 +是.NET程序员开发Xamarin App移动应用程序的最佳选择工具!

3.3、为什么要一台Android设备的手机?

提供的移动模拟器启动速度很慢,毕竟和真机环境还是有一些出入的,所以我们应用程序还是在部署在我们实际中的手机设备中去,真实的还原第一“现场”体验。

3.4、为什么需要安装虚拟镜像手机软件?

小萝贝控机大师:是一款免费的用电脑控制手机的工具,能够帮助你通过USB或WIFI用电脑实时控制手机;可以用一台电脑同时控制操作多台手机;可以录制控制脚本等等。一句话说白了就是可以在电脑上实时的监控我们的手机屏幕。

四、Xamarin开发资源分享

Android官网:https://developer.android.com/guide/ Xamarin官网:https://www.xamarin.com/ https://developer.xamarin.com/zh-cn/ 专注Xamarin开源社区: https://github.com/CSharpCross?page=2 Xamarin MSDN中文文档: https://docs.microsoft.com/zh-cn/xamarin/ Xamarin GitHub :https://github.com/xamarin Xamarin Components:https://github.com/xamarin/XamarinComponents

Xamarin Components

五、如何快速的学习和掌握Xamarin For Android移动开发

学习Xamarin For Android移动开发,阿笨总结了两点: 1、具备一定的C#语言基础开发知识。 只要你有一定的C#语言基础,那么上手Xamarin开发将毫无压力。 2、掌握一定的Android基础原理和知识。 Android界面布局(Layout)和常用的控件的使用以及Android原理知识这几点必须要有一定的掌握,可以学习从java android 方面的视频课程,因为这块的android知识都是一样的,跟开发语言并没有什么太大的关系。    小窍门:很多人觉得写布局很烦,写起来太困难,属性太多,其实布局文件理解起来很简单,就把它当做在做css+div布局就行,这样理解起来会对我们写布局有很大的帮助。

六、Xamarin For Android实战实例分享

6.1、BIOS如何开启Virtual Technology虚拟化技术

Virtualization Technology(VT),虚拟化技术,对于安卓模拟器而言,开启VT能够显著提高运行性能和效率。 核心步骤就是:进入BIOS,选择Configuration选项,选择Intel Virtual Technology并回车并选择Enabled。具体方法可以百度自行搜索。http://www.udaxia.com/upqd/5254.html

6.2、Android手机(魅蓝NOTE 3)如何开启开发者调试

魅蓝note3怎么进入开发者选项步骤: 1、点击设置按钮,先进入设置界面,切换到全部设置界面; 2、下滑界面,进入“关于手机”选项,下滑界面,找到“版本号”,在“版本号”的项目栏里,连续点击7次,就会提示开启开发人员选项; 3、回到设置界面,下滑到最后,就可以看到“开发人员选项”,进入“开发人员选项”就可以打开“USB调试”了。

6.3、如何快速上手通过Xamarin 创建移动Android App应用程序。

阿笨将带来xamarin for android小白快速的上手一个Hello World的应用程序示例。 初步认识一下android移动开发,了解一下android布局文件,android资源文件,android项目结构等等基础知识。初步到达感受体验对android开发的有一个比较基本的了解和认识吧。

6.4、Android介绍以及SDK、版本。

Android介绍是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机平板电脑,由Google公司和开放手机联盟领导及开发。同时也是Google于2007年11月5日Android logo相关图片(36张) 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。 Android SDK:  SDK( software development kit)软件开发工具包,被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK给你提供开发测试所必须的Android API类库,开发工具。 备注:Android SDK采用了Java语言,所以需要先安装JDK 。 参考文章: 最新Android系统版本与API等级对应关系表 Android各个版本的名称和更新

SKD版本

SKD版本

6.5、Android ADB常用命令介绍

Android 调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率, ADB 的命令有很多,今天就来总结下我在开发常用到的一些 ADB 命令。 1)、Android模拟设备启动完成后查看连接到本地计算机上的Android设备列表:  adb devices (重点) 2)、查看Android 版本  :adb version 3)、启动 adb server :adb start-server 4)、停止 adb server :adb kill-server 5)、列出手机装的所有app的包名:adb shell pm list packages 6)、列出系统应用的所有包名:adb shell pm list packages -s 7)、列出除了系统应用的第三方应用包名:adb shell pm list packages -3 8)、安装一个apk,执行以下命令:adb install  直接卸载:adb uninstall 9)、查看ADB帮助:adb help 10)、参考文章:常用ADB命令 思考:风靡一时的微信跳一跳小程序C#开挂程序,实现就是通过模拟adb发送指令给手机从而达到控制的目的。

6.6、Android常用几种权限(Permission)

访问网络android.permission.INTERNET,访问网络连接,可能产生GPRS流量 获取网络状态android.permission.ACCESS_NETWORK_STATE,获取网络信息状态,如当前的网络连接是否有效 获取WiFi状态android.permission.ACCESS_WIFI_STATE,获取当前WiFi接入的状态以及WLAN热点的信息 写入外部存储android.permission.WRITE_EXTERNAL_STORAGE,允许程序写入外部存储,如SD卡上写文件 更新详细的android权限可以参考:android权限大全

6.7、Android生命周期

Android系统是一个多任务(Multi-Task)的操作系统,可以在用手机听音乐的同时,也执行其他多个程序。每多执行一个应用程序,就会多耗费一些系统内存,当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统就会觉得越来越慢,甚至不稳定。为了解决这个问题,Android引入了一个新的机制,即生命周期(Life Cycle)。

6.8、Android四大组件

Android四大组件分别为activity、service、content provider、broadcast receive

6.9、Android六大布局(Layout)

六大界面布局方式包括: 线性布局(LinearLayout)、框架布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout) 

6.10、Android五大存储(Storage)

1、 使用SharedPreferences存储数据 2、 文件存储数据      3 、SQLite数据库存储数据(重点学习) 4 、使用ContentProvider存储数据 5 、网络存储数据

6.11、Android文件操作(File)

Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用.Android提供了一个工具类,方便我们操作获取assets文件下的文件:AssetManager

6.12、Android学习之Intent使用

Xamarin Android中Activity之间传递一个简单的数值 //传入       Intent it =new Intent(this,typeof(OtherActivity));   it.PutExtra("name","科比")   StartActivity(it);   //接收   string Name = Intent.GetStringExtra("name");   Xamarin Android中Activity之间传递多个数值传递多个值可以使用Bundle对象作为容器,通过调用Bundle的Put**** 先将数据存储到Bundle中,然后调用Intent的PutExtras方法将Bundle存入Intent中,调用的时候也是一样的道理。这种键值的形式传递数据,区分大小写,注意!  //传入   Intent it = new Intent(this,typeof(OtherActivity));   Bundle bd = new Bundle();   bd.PutBoolean("isNiubi",true);   bd.PutInt("Id",123456);    bd.PutString("name","詹姆斯");   it.PutExtras(bd);   StartActivity(it);   //接收 Bundle bd = Intent.Extras;   int Id = bd.GetInt("Id"); string Name = bd.GetString("name");  bool niubi = bd.GetBoolean("niubi");  

6.13、Android页面跳转以及传值(Activity)

开启一个新的Activity有两种方法:StartActivity()和StartActivityForResult()。  startActivity好理解,startActivityForResult()就麻烦一点,下面这张图方便我们的理解: requestCode,请求码,自己随意设置,但必须是非负数。只有是非负数时,Activity退出时,这个码会返回到onActivityResult()。 resultCode,结果码,用于标识返回数据来自于哪个新Activity,它的值一般是RESULT_CANCELED, RESULT_OK, RESULT_FIRST_USER。

startActivityForResult图解

6.14、Android学习之广播使用(Broadcast)

广播是Android中一种很重要的传递消息的方式。 广播可以静态的注册,也可以动态的注册 。 静态注册就是在AndroidManfiest.xml文件夹中注册。(静态注册就是在AndroidManfiest.xml文件夹中注册) 动态注册就是在代码中实现。

七、总结

1、我们应该具有网管的精神-重启!。我们必须承认事物没有完美的,况且Xamarin还在进化阶段,有bug是很正常的,不稳定也可以理解。我之前经常遇到VS挂掉、连接模拟器失败,怎么都解决不了、代码不按照正常思维执行、VS自己闪退、视图编辑器打开失败、编译总是失败等等一些问题,经过重启环境更甚至于重启电脑后,一切正常! 2、阿笨计划后续将给大家带来实际项目中开发的一个Xamarin For Adroid App应用程序。到时候在《C# Xamarin移动开发项目实战篇》课程中,阿笨将自己的实际项目经验毫无保留的分享给大家。快速通过Xamarin打造一个Android适合于后端管理系统App应用程序。如果您继续感兴趣的话可以跟着阿笨一起学习吧。欲知后事如何,且看下回分解! 俗话说的好:师父领进门修行在个人,希望大家在学习的道路上一直坚持下去!

八、在线源码观看地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

如何构建一台属于自己的基站?

? 上周我去特拉维夫(Tel Aviv)探望我的朋友结果有了一些收获,一块崭新的BladeRF(x40),即一个支持USB3.0的SDR平台,这就意味着可以同...

2829
来自专栏葡萄城控件技术团队

全新的.NET解释器 - Mono已经到来

1574
来自专栏张善友的专栏

如何有效监控.NET 应用程序

     当你的.NET应用出现性能问题的时候能很快得找到问题的症结吗? 这是一个运营的企业应用所必需考虑的问题,最近工作中碰到很多这方面的问题,运行中的系统完...

2307
来自专栏张善友的专栏

WCF Data Service工具包

WCF Data Service工具包是一组WCF Data Service(OData的.NET实现),目的是使更容易地构建WCF Data Service,...

1886
来自专栏我有一个梦想

QT Creator 快速入门教程 读书笔记(一)

一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入...

4086
来自专栏walterlv - 吕毅的博客

用 AppContext 解决类库的更新兼容问题

2017-09-30 15:45

1711
来自专栏.NET开发者社区

(码友推荐)2018-07-09 .NET及相关开发资讯速递

4.为什么Kubernetes获得了胜利?--让Kubernetes成为开发人员最喜欢的容器编排平台的的秘诀是什么? - DockOne.io

983
来自专栏听Allen瞎扯淡

解决 Windows10 笔记本关上后仍会掉电的问题

一开始我只是想在谷歌上搜索一下,为啥我的 Win10 笔记本在盖上盖子以后放入背包中,每次拿出来之后电量都会有所下降,结果就一下子看到了很多很神奇的东西,包括 ...

1.4K2
来自专栏施炯的IoT开发专栏

Windows Phone SDK 8.0 新特性-Speech

1. 引言     随着Windows Phone SDK 8.0的发布,其包含的新特性也受到了广大开发者的关注,其中之一就是语音方面的提升。其实在Window...

20410
来自专栏施炯的IoT开发专栏

利用SDF2.3获取Windows Mobile上的IP地址和MAC地址

OpenNETCF的Smart Device Framework为开发者提供了许多开发捷径,其SDF1.x系列提供了完全的源代码,即Full Source,从...

1889

扫码关注云+社区