微软的Build 2016结束的有段时间了,对于一个简单的小屌丝程序员--我来说,关注最大的无疑是Xamarin的免费(开源什么的让大神们上吧),内心激动啊。大会结束的周末我就迫不及待的安装了,然后。。。一脸的懵逼,更新vs后什么sdk,jdk都不知道,唯一知道的就是没法运行,后来大神们相继出了一些文章,才开始了解一些大概,有错误的请在下面留言提出,免得我误导了别人。

  xamarin可以简单分为一下几个:

  Xamarin.Forms:个人觉得这才是Xamarin真正的优势所在,真正的跨平台,一次编写,到处运行。

  Xamarin.IOS和Xamarin.Android:这个。。。嗯,我简单的理解为Xamarin.原生,只是把java和object-c或者swfit换成了C#,其他的貌似也就多了个业务层共享吧,当然这个也是现在能应用吧,毕竟可以引用安卓和苹果的众多的第三方SDK。

  所以如果你想立马尝试C#编写Android和IOS程序,可以上手学习Xamarin.IOS和Xamarin.Android,但是这样会让你远离Xamarin真正的核心--跨平台,所以我建议还是学习Xamarin.Forms。

  简单说说Xamarin的安装,只要保持vs 2015的最新,即目前的Update2,在修复选项中的跨平台移动开发中选择Xamarin就行了,他会主动勾选其他所必需的,然后点击下一步,等待它完成就行了,正常情况呢,Android SDK会安装失败,但是你的C:\Program Files (x86)文件加下会多一个Android名称的文件夹,你一路点进去会发现一个SDK Manager的应用程序,你运行后,你发现没有多少安装项,这是因为你。。。没。。。翻。。。墙!但是我劝你也别FQ了,Android SDK整个安装下来欻不多要26G,你真要FQ,也得下载到猴年马月了,土豪除外,再说了26个G的SDK我怎么舍得让它占用我的C盘,比vs都大很多啊,不要担心,直接把Android文件夹剪切到你希望的盘中就行了,JDK、NDK同样啊(占的不多这两个我就没移动),现在再来说说这26个G的SDK怎么下载。。。当然是国内镜像了,http://www.androiddevtools.cn/这个地址,拿好(以前开发安卓的除外),我选的是mirrors.neusoft.edu.cn,端口号80(别问我为什么,因为最初我懵逼的时候,百度出来的都是这玩意儿),JDK就不说了,应该都知道,不知道了就算了,NDK简单说就是google提供的C/C++的开发APP的组件,Xamarin就是基于C实现跨平台开发的,所以如果你把NDK删除了,是编译不过的,安装就简单说这么多。

  这段呢。。。就简单的说下Hello world!,新建项目选择Cross-platform,选择下面红圈里面的第一个(别问为什么,我也不知道,因为官方示例就是选的这个,来个大神解释下呗,或者谁英语水平不错,到stack overflow提个问,然后留个言告诉下我),反正红圈里面的第三个是类库,这个没得跑。

当然项目创建的过程中,你懂的你可能或报错,具体的忘了,貌似是什么值不能为null,value:path1之类的吧,这个就是Android SDK没有下载的原因,在工具->选项中找到Xamarin节点,点击查看,你就会明白了,如果你不知道如何下载SDK,看上面那段应该能解决。

好,到这里,应该已经创建了一个项目了(我只有安卓,没有苹果,所以后面的实践也只代表安卓项目),然后让我们运行它,我擦。。。。妈蛋,又报错!淡定!到了这一步,已经离万里长征的第。。。。。。。。。一步了不远了,如果正常的话,你能在你的错误列表中找到下面类似的错误,你也只需找到这种错误(其他的都是“误导”),因为其他的我也不知道,也帮不了你!

这个错误你也看到很简单了,下载他叫你下载的就行了(当然根据个人的情况,下载的是不一样的,我这图里面是让下载r10.zip,这个后来卸载了,大多数是下载r22.zip,貌似),完了,你会得到一个压缩包,但是别听它的话,把压缩包放到他说的这个文件夹里面,打开后面的本地路径(路径到Xamarin就行了,后面的没用),在里面找到zips文件夹,打开,你会看到里面有一个名称类似Guid的压缩包,复制下它的名字,重名名到你刚刚下载的压缩包上,然后删掉zips中的压缩包,把你刚刚重命名下载的压缩包拷贝或者剪切进去就行了,然后你就能顺利的编译你得安卓项目了。

  就到这里了,我也就只躺了这几个坑!

Xamarin.Forms学习之初的更多相关文章

  1. Xamarin.Forms学习之Platform-specific API和文件操作

    这篇文章的分享原由是由于上篇关于Properties的保存不了,调用SavePropertiesAsync()方法也不行,所以我希望通过操作文件的方式保存我的需要的数据,然后我看了一下电子书中的第二十 ...

  2. Xamarin.Forms学习之Page Navigation(一)

    在最初接触Xamarin.Forms的时候,我是跟着Xamarin官方的名为“learning-xamarin-ebook”的pdf文档进行学习的,我在成功运行Hello world程序之后,我开始跟 ...

  3. Xamarin.Forms学习之XAML命名空间

    大家好,我又悄咪咪的来了,在上一篇的Xamarin文章中简单介绍了Xamarin的安装过程,妈蛋没想到很多小朋友很感激我,让他们成功的安装了Xamarin,然后......成功的显示了经典的两个单词( ...

  4. Xamarin.Forms学习系列之Android集成极光推送

    一般App都会有消息推送的功能,如果是原生安卓或者IOS集成消息推送很容易,各大推送平台都有相关的Sample,但是关于Xamarin.Forms的消息推送集成的资料非常少,下面就说下Xamarin. ...

  5. Xamarin.Forms学习之位图(二)

    上篇文章分享了如何加载网络图片和PCL中的图片,所以今天继续分享关于如何加载平台的内嵌图片,在这之前说一下上篇文章开头的一个问题:为什么不能加载UWP项目,这是因为我升级了UWP的SDK,而Xamar ...

  6. Xamarin.Forms 学习系列之优秀UI收集

    1.各种优秀UI例子 https://github.com/jsuarezruiz/xamarin-forms-goodlooking-UI 输入框例子 https://github.com/enis ...

  7. Xamarin.Forms学习系列之Syncfusion 制作图形报表

    Syncfusion是一家微软生态下的第三方组件/控件供应商,除了用于HTML5和JavaScript的控件外,他们产品还涉及如下领域: WEB ASP.NET MVC ASP.NET WebForm ...

  8. Xamarin.Forms学习系列之SQLite

    在App中我们通常不会实时获取服务器数据,会在用户手机中保存历史数据,这个时候就需要用到数据库SQLite,由于微软的封装,在Xamarin中操作SQLite非常简单,类似EF的操作. 1.我们需要在 ...

  9. Xamarin.Forms 学习系列之底部tab

    App中一般都会有一个底部tab,用于切换不同的功能,在Xamarin中应该制作底部tab了,需要把Android的TabbedPage做一次渲染,IOS的则不用,接下来说下详细步骤: 1.在共享项目 ...

随机推荐

  1. opencv提取surf特征点出现的错误

    opencv实现surf特征的提取.本来是一个非常easy的代码,结果我执行时却出现了各种错误,以下来谈谈我出现的错误及问题的解决过程. 首先,我把提取surf特征的过程整合成了一个函数,我单独建立一 ...

  2. Apache 使用gzip、deflate 压缩页面加快网站访问速度

    Apache 使用gzip 压缩页面加快网站访问速度 介绍: 网页压缩来进一步提升网页的浏览速度,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少.   原理 ...

  3. /proc/meminfo详解 = /nmon analysis --MEM

    memtotal hightotal lowtotal swaptotal memfree highfree lowfree swapfree memshared cached active bigf ...

  4. iOS Core ML与Vision初识

    代码地址如下:http://www.demodashi.com/demo/11715.html 教之道 贵以专 昔孟母 择邻处 子不学 断机杼 随着苹果新品iPhone x的发布,正式版iOS 11也 ...

  5. android开发全然退出activity

    我们退出Activity能够调用:finish(),system(0),可是这些都仅仅是单单退出单个Activity 也有人会说,直接把进程杀死,这些做法都不是非常可取.事实上我们翻看api能够发现. ...

  6. Python课程之元组

    元组(Tuple) 一.定义: 与列表(list)不同的是,元组不支持修改,但是若元组中的元素本身是可变对象,如列表,则可以修改.元素之间用逗号隔开,并且元素的类型可以任意. 二.操作: 1.创建:直 ...

  7. js遮罩层弹出显示效果组件化

    1.在web开发中经常遇到遮罩层的效果,可以将这种常用方法通用化 function showid(idname){ var isIE = (document.all) ? true : false; ...

  8. Android AIDL Service 跨进程传递复杂数据

    黑夜 黑夜给了我黑色的眼睛,我却用它寻找光明~ 传值方式 AIDL是同意跨进程传递值的,一般来说有三种方式: - 广播:这样的算是比較常见的一种方式了,传递小数据不错 - 文件:这个是保存到文件里.然 ...

  9. nginx环境下启动php-fpm

    nginx环境下启动php-fpm 1.首先查看是否安装了php-fpm 这个我试了好多命令都不行比如 rpm -qa php-fpm , rpm -ql php-fpm , which php-fp ...

  10. NIO之DatagramChannel

    Java NIO中的DatagramChannel是一个能收发UDP包的通道.操作步骤: 1)打开 DatagramChannel 2)接收/发送数据 同样它也支持NIO的非阻塞模式操作,例如: pu ...