一、课程介绍

英文原文: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#语言的编译器
<https://baike.baidu.com/item/%E7%BC%96%E8%AF%91%E5%99%A8>
,能够使得开发人员在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)环境准备
<https://c/#%E7%A7%BB%E5%8A%A8%E8%B7%A8%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%EF%BC%881%EF%BC%89%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87>

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/
<https://developer.android.com/guide/>

Xamarin官网:https://www.xamarin.com/ <https://www.xamarin.com/>      
https://developer.xamarin.com/zh-cn/ <https://developer.xamarin.com/zh-cn/>

专注Xamarin开源社区: https://github.com/CSharpCross?page=2
<https://github.com/CSharpCross?page=2>

Xamarin MSDN中文文档: https://docs.microsoft.com/zh-cn/xamarin/
<https://docs.microsoft.com/zh-cn/xamarin/>

Xamarin GitHub :https://github.com/xamarin <https://github.com/xamarin>

Xamarin Components:https://github.com/xamarin/XamarinComponents
<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
<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 <https://baike.baidu.com/item/Linux>的自由及开放源代码的操作系统
<https://baike.baidu.com/item/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F>,主要使用于移动设备
<https://baike.baidu.com/item/%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87>,如智能手机
<https://baike.baidu.com/item/%E6%99%BA%E8%83%BD%E6%89%8B%E6%9C%BA>和平板电脑
<https://baike.baidu.com/item/%E5%B9%B3%E6%9D%BF%E7%94%B5%E8%84%91>,由Google
<https://baike.baidu.com/item/Google>公司和开放手机联盟
<https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E6%89%8B%E6%9C%BA%E8%81%94%E7%9B%9F>
领导及开发。同时也是Google于2007年11月5日Android
logo相关图片(36张) 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

Android SDK:  SDK( software development
kit)软件开发工具包,被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android
SDK给你提供开发测试所必须的Android API类库,开发工具。

备注:Android SDK采用了Java语言,所以需要先安装JDK 。

参考文章:

最新Android系统版本与API等级对应关系表 <https://www.cnblogs.com/rencm/p/5315353.html>

Android各个版本的名称和更新 <https://blog.csdn.net/Darker_k/article/details/51689356>

 



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命令 <https://blog.csdn.net/suxing_ing/article/details/54907860>

思考:风靡一时的微信跳一跳小程序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权限大全
<http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html>

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

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

 

八、在线源码观看地址

 

 

作者:阿笨 <http://study.163.com/u/zfanlong1314> 

      官方QQ群:422315558 
<http://shang.qq.com/wpa/qunwpa?idkey=356d2c387dad9fb5395c6eeaa8451ed91f9eda8432e4acf027bf2048c1ae9e28>
 574187616
<http://shang.qq.com/wpa/qunwpa?idkey=d763b6662e70d8d07555fdce8a780824b6eedb4ed7751d21428853d06fb5bf7a>
 

      个人讲师课堂主页:
https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
<https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628> 

      个人微信公众号课程主页:http://dwz.cn/ABenNET <http://dwz.cn/ABenNET>

 

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信