一、课程介绍

英文原文: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应用程序。如果您继续感兴趣的话可以跟着阿笨一起学习吧。欲知后事如何,且看下回分解!

俗话说的好:师父领进门修行在个人,希望大家在学习的道路上一直坚持下去!

八、在线源码观看地址

C# Xamarin移动开发基础进修篇的更多相关文章

  1. C# Xamarin移动开发项目实战篇

    一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...

  2. Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表

    Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...

  3. Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型

    Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型 OxyPlot组件中支持5种类型的金融图表,它们分别为销量图.高低图.股票K线图.股票走势图和旧式股票图,如图1.20~1. ...

  4. Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图, ...

  5. Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型 OxyPlot组件支持26种图表,这些图表按照功能和样式可以分为4大类,分别为线型图表.条型图表.金融图表和其它图表. 线型图表 ...

  6. Xamarin图表开发基础教程(9)OxyPlot框架

    Xamarin图表开发基础教程(9)OxyPlot框架 OxyPlot组件构成 OxyPlot组件主要由两个类构成,分别为PlotView和PlotModel.这两个类我们在上文中也使用到了.本节将讲 ...

  7. Xamarin图表开发基础教程(8)OxyPlot框架

    Xamarin图表开发基础教程(8)OxyPlot框架 [示例OxyPlotFormsDemo]在Xamarin.Forms中实现线图的显示. (1)打开Xamarin.Forms项目. (2)将Ox ...

  8. Xamarin图表开发基础教程(7)OxyPlot框架

    Xamarin图表开发基础教程(7)OxyPlot框架 Xamarin.Forms中使用OxyPlot框架 在Xamarin. Forms平台上实现图表显示需要完成以下的步骤: 1.添加OxyPlot ...

  9. Xamarin图表开发基础教程(6)OxyPlot框架

    Xamarin图表开发基础教程(6)OxyPlot框架 Xamamin iOS中绘制线图OxyPlotiOSDemo [示例OxyPlotiOSDemo]下面将实现线图的显示.具体的操作步骤如下: ( ...

随机推荐

  1. [转]Maven与nexus关系

    开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,当时很是困惑,nexus是什么呢,为什么它总是和maven一起被提到呢? 我们一步一步来了解吧. 一.了解Mav ...

  2. Docker Client (another java docker client api)

    前一篇提到了docker-java,这里介绍另一个docker client 库,Docker Client 版本兼容 兼容17.03.1~ce - 17.12.1~ce (点 [here][1]查看 ...

  3. Python_socketserver

    socketserver ----->> 服务器端的开发 socketserver:   实现服务器端同时处理多个请求 通过两个主要的类来处理网络请求: 服务类 请求处理类 一.服务类 1 ...

  4. vue $mount 和 el的区别

    两者在使用效果上没有任何区别,都是为了将实例化后的vue挂载到指定的dom元素中. 如果在实例化vue的时候指定el,则该vue将会渲染在此el对应的dom中,反之,若没有指定el,则vue实例会处于 ...

  5. youDao

    2018-09-22Journeys end in lovers' meeting.漂泊止于爱人的相遇. All extremes of feeling are allied with madness ...

  6. 049 DSL语句

    1.说明 2.sql程序 package com.scala.it import org.apache.spark.sql.hive.HiveContext import org.apache.spa ...

  7. POJ 3126 Prime Path【BFS】

    <题目链接> 题目大意: 给你两个四位数,它们均为素数,以第一个四位数作为起点,每次能够变换该四位数的任意一位,变换后的四位数也必须是素数,问你是否能够通过变换使得第一个四位数变成第二个四 ...

  8. P2661 信息传递

    P2661 信息传递dfs求最小环,要加时间戳,记录这个点是哪一次被dfs到的.] #include<iostream> #include<cstdio> #include&l ...

  9. P=(1+1/(1-L))/2

    1 y=1/x 2 y=1/(1-x) 3 4

  10. Xamarin Essentials教程语音播报TextToSpeech

    Xamarin Essentials教程语音播报TextToSpeech   语音播报是一种将文本信息转化为音频信息的技术.使用该技术,开发者可以让用户不用盯着屏幕,就可以获取到信息.例如,支付宝为商 ...