小白带你入坑xamarin系列之环境搭建和准备

序言:

移动端的跨平台百花齐放,各种技术方案和方法都是层出不穷。目前xamarin确实是一套成熟可靠,完全值得信赖的开发框架。尤其是对传统做WPF ASP.NET的开发团队来说要节约成本开始移动端开发。这个是很好的一个选项。

开始之前回答2个问题。

1、我学了xamarin是不是可以不用学习安卓和iOS了? 答案当然是否定的,你还是要了解安卓,了解JAVA,同样的你一样要学习iOS的和Object-C的内容。

2、既然我还得学安卓和iOS为什么我还要学xamarin这样的东西?首先这里掌握安卓和iOS,并不要求你掌握多么全面,有一些基础的了解即可。当然掌握得越全面你接下来解决各种问题的能力会越强。我们选用xamarin是为了跨平台,是为了更快的开发效率,如果不能解决这个问题这样的技术实际上是不能作为一个技术选型的。根据小白的项目经验表示在一个实际开发团队中,绝大部分内容都是基础和简单的。所以只要团队里有那么一个人掌握全面了。基本上这个团队开发xamarin就没太大问题。

 

开发环境准备

一般情况下移动端开发我们只考虑Android 、iOS和 UWP   目前2大主流开发环境   由于iOS开发的限制所以必须有XCODE和Mac主机  即使你使用xamarin开发也逃不开这样的限制。

目前环境搭建分为2个部分。

一、Windows篇+Mac 代理机

安装包下载

1、 VS2017下载 https://www.visualstudio.com/zh-hans/downloads/ 社区和企业版均可

2、 下载Java环境http://download.xamarin.com/Installer/MonoForAndroid/jdk-8u101-windows-i586.exe

3、 Android NDK http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe

4、 Android SDK  https://dl.google.com/android/installer_r24.4.1-windows.exe

2  3  4如果无法正常下载 可以使用百度云盘 https://pan.baidu.com/s/1hsfCYvM

 

Windows安装VS2017即可。

默认情况下安装VS2017只用勾选Xamarin不要勾选Android相关选项。最好是单独安装组件,不然就这个安装过程会让你抓狂的。

 

 

勾选单个组件里面的

 

 

这个时候是没有安装成功的 但是VS里面已经有了对应的开发模板 比如安卓的项目模板。

打开工具   选项  选择xamarin节点

选择

 

 

对应的Java环境 SDK NDK 都为空 这个时候下载安装对应的环境并指向。

 

安装对应的Java JDK   然后安装Android SDK  Android NDK

成功后

 

 

Android SDK安装完毕后 会提示没有SDK 这个时候 应该进入对应的Android SDK目录

 

 

运行批处理 下载对应Android  SDK版本

 

 

如果手上有安卓手机这个时候已经可以正常开发了。

把你的安卓手机开启 开发者模式 USB连接到Windows电脑上。

Vs2017新建项目 选择默认的安卓模板 点Debug运行

就可以看到第一个xamarin 安卓APP了

如果没有真机这个时候还需要安装一个模拟器。

打开VS2017 选择工具  选择Android 选择Android仿真程序管理器

 

 

Create一个新的AVD即可。最后还是强烈建议使用真机。

关于mac主机说明

Mac主机的问题解决方案有以下几种。1、安装虚拟机 2、使用黑苹果(只要是Intel系CPU绝大部分还是可以装成功的。具体可以准备一台普通PC在X宝寻求帮助)3、购买二手的Mac主机根据层色和需求(1k-7k都有)也是可以的

Mac的开发环境搭建。

首先进入Appstore 安装XCode 预计耗时半个到一个小时

 

 

安装完毕

Mac需要安装以下几个环境

Mono 运行时 https://download.mono-project.com/archive/5.0.1/macos-10-universal/MonoFramework-MDK-5.0.1.1.macos10.xamarin.universal.pkg

Xamarin.IOS https://dl.xamarin.com/MonoTouch/Mac/xamarin.ios-11.6.1.2.pkg

环境就搭建完毕了  一般情况下我建议大家再安装vs for mac 目前很好用的ide

vs for mac https://dl.xamarin.com/VsMac/VisualStudioForMac-7.0.1.24.dmg

远程Agent需要配置如下

1选择系统偏好设置  2选择 共享  3选择 远程登录 4选择所有用户

 

 

 

 

 

这个时候可以在你Windows的VS上尝试连接下mac主机

 

 

一般情况下会默认找到您的mac主机。

没有找到可以点击下面的Add Server 输入mac机器的ip地址

 

 

点击连接会提示让你输入用户名和密码 输入你登录mac的用户名和密码即可

登录成功后工具栏的mac主机就会变成绿色

 

点击

 

看看mac主机是否弹出模拟器。如果弹出则说明成功,不能弹出则说明连接失败。检查下是否允许远程登录。

此刻Window下开发安卓和IOS均已成功。

尝试写个demo跑起来看看。

二、纯Mac开发机环境搭建

对于已经有Mac主机并且准备一直用做主力开发机的同学来说。和Windows搭建唯一的区别就是需要配置下Java和Android SDK  NDK

建议使用

如果下载不顺https://pan.baidu.com/s/1hsfCYvM 可以使用百度网盘

https://xampubdl.blob.core.windows.net/static/installer_assets/v3/Mac/Universal/InstallationManifest.xml 中的连接进行下载安装。

分别安装

1、 Mono  

https://dl.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-5.4.1.7.macos10.xamarin.universal.pkg

2、 JDK

http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-macosx-x64.dmg  (2018.01.18 进行更新)

无法直接下载的 请在oracle官网下 下载  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 

3、 Android SDK

http://dl.google.com/android/android-sdk_r24.4.1-macosx.zip 解压即可

4、 Android NDK

http://dl.google.com/android/ndk/android-ndk-r14b-darwin-x86_64.bin 下载后解压会对习惯Win的同学会稍微麻烦。需要在终端中执行

win(Command) +空格 输入T 一般情况下就能够找到终端了(类似CMD)

1.获取文件权限

chmod a+x android-ndk-r14b-darwin-x86_64.bin

2. 解压出文件

./android-ndk-r14b-darwin-x86_64.bin

 

5、配置XCode 在Appstore安装即可

6、安装VS for Mac

https://dl.xamarin.com/XamarinforMac/Mac/xamarin.mac-4.0.0.214.pkg 下载安装即可

运行VS第一次默认是英文绝大部分人不习惯情况下 在头部

 

 

可以选择偏好 也可以输入快捷键 Win(Command) + , (逗号)可以打开配置

 

配置

 

 https://dl.xamarin.com/MonoforAndroid/Mac/xamarin.android-8.1.5-0.pkg 

下载并安装xamarin Android

选择位置

 

 

配置好对应的环境

Apple的开发环境只要安装好Xcode即可

自此环境搭建完毕。

如果需要安卓模拟器的还是一样

选择工具  选择Google仿真器管理。如果出现

 

 

目前的SDK版本过新 要用命令行进行管理AVD

2种处理逻辑

1、 降低SDK版本

打开工具

 

 

其他都取消掉

 

然后在打开Google仿真模拟器

就有熟悉的AVD管理了。

还是建议使用真机。

2、 使用AndroidStudio 创建AVD

原文地址:http://www.cnblogs.com/jasondun/p/8098791.html 


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3402-[模板]可持久化并查集【主席树】

正题 题目链接:https://www.luogu.org/problemnew/show/P3402 题目大意 合并x,yx,yx,y所在的两个集合回到操作kkk之后询问x,yx,yx,y是否在同一个集合 解题思路 正常的并查集,不使用路径压缩,但是使用按秩合并,将深度小的合并到深度大的上面…

Sentinel(十二)之实时监控

转载自 实时监控 Sentinel 提供对所有资源的实时监控。如果需要实时监控&#xff0c;客户端需引入以下依赖&#xff08;以 Maven 为例&#xff09;&#xff1a; <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-sim…

Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本

Dora.Interception 1.0&#xff08;可以访问GitHub地址&#xff1a;https://github.com/jiangjinnan/Dora&#xff09;推出有一段时间了&#xff0c;最近花了点时间将它升级到2.0&#xff0c;主要有如下的改进&#xff1a;提供了原生的动态代理生成底层框架Dora.DynamicProxy&a…

欢乐纪中某A组赛【2019.7.8】

前言 你以为我是jzojjzojjzoj&#xff0c;其实我是GMojGMojGMoj哒 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 上至222分XJQXJQXJQ,下至200ZZY200ZZY200ZZY都有我们SSLSSLSSL的人(滑稽) |RankRankRank|PersonPersonPerson|ScoreScoreScore|AAA|BBB|CCC| RankR…

Sentinel(十四)之控制台

转载自 Sentinel 控制台 1. 概述 Sentinel 提供一个轻量级的开源控制台&#xff0c;它提供机器发现以及健康情况管理、监控&#xff08;单机和集群&#xff09;&#xff0c;规则管理和推送的功能。这里&#xff0c;我们将会详细讲述如何通过简单的步骤就可以使用这些功能。 …

C# 这些年来受欢迎的特性

原文地址:http://www.dotnetcurry.com/csharp/1411/csharp-favorite-features在写这篇文章的时候&#xff0c;C# 已经有了 17 年的历史了&#xff0c;可以肯定地说它并没有去任何地方。C# 语言团队不断致力于开发新特性&#xff0c;改善开发人员的体验。在这篇文章中&#xff0…

P2657-[SCOI2009]windy数【数位dp,dfs】

正题 题目链接:https://www.luogu.org/problemnew/show/P2657 题目大意 求A∼BA\sim BA∼B中不含前导零且没两个相邻的位数相差至少为222的数字个数。 解题思路 考虑记忆化搜索&#xff0c;用fi,jf_{i,j}fi,j​表示到第iii位数字为jjj时的方案数。 然后用1∼B1\sim B1∼B中…

Sentinel(十三)之动态规则扩展

转载自 动态规则扩展 规则 Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较…

AspectCore动态代理中的拦截器详解(一)

前言在上一篇文章使用AspectCore动态代理中&#xff0c;简单说明了AspectCore.DynamicProxy的使用方式&#xff0c;由于介绍的比较浅显&#xff0c;也有不少同学留言询问拦截器的配置&#xff0c;那么在这篇文章中&#xff0c;我们来详细看一下AspectCore中的拦截器使用。两种配…

P3279-[SCOI2013]密码【Manacher】

正题 题目链接:https://www.luogu.org/problemnew/show/P3279 题目大意 一个字符串满足: 有nnn个字符仅包含小写字母告诉你每个字符为中心的最大回文串长度告诉你每个两个字符的间隙为中心的最大回文串长度 求满足要求的字典序最小的字符串。 解题思路 因为字典序最小&…

Actor-ES框架:Ray

并发1. 并发和并行并发&#xff1a;两个或多个任务在同一时间段内运行。关注点在任务分割。并行&#xff1a;两个或多个任务在同一时刻同时运行。关注点在同时执行。本文大多数情况下不会严格区分这两个概念&#xff0c;默认并发就是指并行机制下的并发。2. 好处随着多核处理器…

Sentinel(十五)之在生产环境中使用 Sentinel

转载自 在生产环境中使用 Sentinel 引言 Sentinel 目前已可用于生产环境&#xff0c;除了阿里巴巴以外&#xff0c;也有很多企业在生产环境中广泛使用 Sentinel。 生产环境的 Sentinel Dashboard 需要具备下面几个特性: 规则管理及推送&#xff0c;集中管理和推送规则。se…

P3934-Nephren Ruq Insania【欧拉定理,树状数组】

正题 题目链接:https://www.luogu.org/problemnew/show/P3934 题目大意 长度为nnn的序列aaa 1lrw:1\ l\ r\ w:1 l r w:让l∼rl\sim rl∼r这个区间增加www。2lrp:2\ l\ r\ p:2 l r p:求alal1al2...%pa_l^{a_{l1}^{a_{l2}^{...}}}\% palal1al2...​​​%p直到ara_rar​ 解题思路…

Entity Framework Core 懒加载

众所周知在EF 6 及以前的版本中&#xff0c;是支持懒加载&#xff08;Lazy Loading&#xff09;的&#xff0c;可惜在EF Core 并不支持&#xff0c;必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持&#xff08;目前还未发布&…

Sentinel(十六)之AHAS Sentinel 控制台

转载自 AHAS Sentinel 控制台 AHAS Sentinel 是 Sentinel 的阿里云上版本&#xff0c;提供企业级的高可用防护服务&#xff0c;包括&#xff1a; 可靠的实时监控和历史秒级监控数据查询&#xff0c;包含 QPS、RT、load、CPU 使用率等指标&#xff0c;支持按照调用类型分类&a…

和各路巨佬の随机挑战3总结

第三次挑战\huge \texttt{\color{purple}第\color{blue}三\color{green}次\color{block}挑\color{red}战}第三次挑战 规则 随机挑取一蓝一紫一黑来做&#xff0c;拥有两次换题机会&#xff0c;若黑题是暂未学过的算法可以拥有无限次换题机会。 van♂van♂van♂成记录 过程 晚…

浅析Entity Framework Core2.0的日志记录与动态查询条件

一、 Entity Framework Core2.0的日志记录早在Entity Framework Core1.0 ,我们就使用相关的ILoggerProvider ILogger 这些基础接口类.来实现过日志记录.在Entity Framework Core2.0 估计是为了配合ASP.NET Core的日志.所以对这些接口进行了更进一步的包装,也弃用了一些接口和类…

Sentinel(十七)之启动配置项

转载自 启动配置项 配置方式 Sentinel 提供如下的配置方式&#xff1a; JVM -D 参数方式properties 文件方式&#xff08;1.7.0 版本开始支持&#xff09; 其中&#xff0c;project.name 参数只能通过 JVM -D 参数方式配置&#xff08;since 1.8.0 取消该限制&#xff09;&…

jzoj3337-[NOI2013模拟]wyl8899的TLE【字符串hash,二分】

正题 题目大意 两个字符串A,BA,BA,B。可以修改AAA中的一个字符使得AAA中的1∼k1\sim k1∼k是BBB的子串&#xff0c;求kkk的最大值。 解题思路 先将AAA和BBB字符串hashhashhash&#xff0c;然后枚举BBB作为子串的起始位置&#xff0c;然后二分出不修改字符的第一个不相等处xxx…

Actor-ES框架:Ray--事件(Event)编写说明

Event作用&#xff1a;存储事件数据。IEventBaseK&#xff1a;是Actor的StateId的类型&#xff0c;可以是long、可以是string&#xff0c;Ray一般使用OGuid生成的字符串作为主键。编写Event继承IEventBase接口&#xff0c;Base部分如下&#xff1a; public string Id {…