Xamarin入门浅析
1. 安装
1) 使用标准安装流程(JDK1.6 -> Android SDK -> NDK -> Xamarin Studio -> Xamarin Visual Studio)
2) Android SDK Manager更改源,可时刻保持最新,一个镜像源地址:mirrors.neusoft.edu.cn;ubuntu.buct.cn;Port: 80,Android SDK的目录结构介绍,Android的一些相关资源 (http://ubuntu.buct.edu.cn/android/repository/)。
3) Windows端破解流程两步:替换IDE的Dll,两个位置,一个是VS的Common下,一个Xamarin Studio的bin下;替换对应版本的mandroid.exe和mtouch.exe
4) Mac端破解流程,Mac端只负责IOS相关的东西,不考虑在Mac端开发Android,首先要安装的东西包括:MonoFramework-MDK-3.12.1.3.macos10.xamarin.x86.pkg; monotouch-8.8.2.4.pkg ;XamarinStudio-5.8.2.7-0.dmg;(版本号注意要匹配,现在这一系列的版本号匹配的是Windows端的3.9.525)
装完之后主要要替换三个东西:/Developer/MonoTouch/usr/bin/mtouch-64;
Mtouch-64替换完毕后需要在终端执行命令:chmod a+x /Developer/MonoTouch/usr/bin/mtouch-64
然后替换/Applications/Xamarin Studio.app/Contents/Resources/lib/monodevelop/AddIns/Xamarin.Ide/Xamarin.Components.Ide.dll
最后替换
/Applications/Xamarin.iOS Build Host.app/Contents/MonoBundle/Xamarin.Components.Ide.dll
2. 模拟器
1) 可以不使用android的标准模拟器,使用Xamarin Android Player,据说性能要好一些,但是版权原因还没测试。
2) 如果使用标准模拟器,可配置硬件加速
a) 首先,你的CPU必须支持Intel虚拟化技术,如果支持进BISO打开
b) 使用 Android SDK 下载对应的 x86架构的系统镜像
c) 上Intel官网下载最新的HAXM虚拟引擎,或者直接用SDK下载
d) 下载后需要手动安装,如果双击安装无效,使用管理员权限运行CMD,执行安装目录下的那个Bat文件;如果提示不支持Intel虚拟化技术,但是我们确认是打开了的,可能是因为操作系统装了Hyper的原因,卸载Hyper重启再试一次
e) 进AVD创建基于X86的虚拟机
3.安卓引用的文件结构
文件夹 |
作用 |
Components |
登录Xamarin账户可下载它官方提供的一些组件直接使用 |
Assets |
存放字体、本地数据库、配置文件等一系列本地资源 |
Properties |
除了常规的程序集版本号等信息,含包括Android程序的权限描述文件AndroidManifest.xml |
Resources |
包好Strings,images, layout等资源的文件夹,注意程序的视图界面也在该文件夹下,还包括一个AboutResources.txt资源描述文件 |
4. 安卓应用的逻辑结构
安卓应用跟传统应用不一样,没有单点入口,应用和安卓操作系统紧密联系,操作系统可以随时将应用进程载入内存激活应用。因此应用中有一个Activity的概念,一个应用由很多Activity组成。
Activity的特性:
Label:告诉操作系统这个类属于哪个程序,它会去AndroidManifest.xml里去匹配。
MainLauncher:告诉操作系统打开程序后激活哪个页面。
Activity的生命周期:
created, started and paused, resumed and destroyed, and so on。
通过重写基类的生命周期方法来实现自己的逻辑,如:OnCreate(应用程序被装载到内存中时调一次),OnResume(设备执行别的任务后,该Activity返回设备界面时触发),OnPause(设备将执行其他任务,该Activity离开设备界面时触发)
5. Xamarin.Forms相关
1) 简介
可以跨平台的构建用户交互相关的东西,简而言之就是写一套代码三个平台通用,在此基础上也能够结合各平台特有的Xamarin本地代码混合一起。
Forms除了跨平台的好处意外,还支持Xaml编写用户界面,不用借助Goft.Mvvm.light等第三方框架原生支持数据绑定等。
2) 使用前置条件
Android4.0以上;
IOS6.1以上;
开发环境VS2013;
解决方案必须是.Net4.5以上,PCL模板,Vs2013update2可使用SharedProject。
3) 适用程序
Xamarin.Forms |
Xamarin.iOS & Xamarin.Android |
以单纯数据展示为主 |
程序会用到特殊的交互 |
快速原型、概念类程序 |
界面UI经过精心设计的程序 |
只会用到很少的平台特殊功能(API) |
会用到很多的平台特殊功能(API) |
共享代码比用户UI更加重要 |
用户UI比共享代码更加重要 |
4) Xaml相关
Forms要针对各个平台做界面微调时OnPlatForm
5) FormsFQA
第一次运行Forms程序会提示“无法链接到远程服务器”,详细看这里
Verify the project is selected to be deployed in the Solution Configuration Manager.详细看这里
6. Mvvm相关
三套框架:MvvmCross、MvvmLight、XamarinFormsLab
MvvmLight For Android要求Android版本在2.3(API10)以上
7. FQA
1) 一个纠缠很久的问题,Android设计界面中Layout无法加载,报什么网络错误,原因为Android SDK升级了最新的Tools到24.3,最新版的SDK会引起Xamarin出现这个错误,如果使用最新的Xamarin则已修复这个错误,如果不想更新Xamarin则需要进行SDK降级操作
2) 限制屏幕旋转功能,指定程序只能使用竖屏或横屏,参考《Xamarin Forms Preview Edition 2》第五章,88(PDF 101)页。
8. 其他资源
安装、破解:http://www.jianshu.com/p/c67c14b3110c
Xamarin入门浅析的更多相关文章
- Xamarin入门,开发一个简单的练手APP
之前周末用Xamarin练手做了个简单APP,没有啥逻辑基本就是个界面架子,MVVM的简单使用,还有Binding,Command的简单使用,还有一个稍微复杂点两个界面交互处理(子页面新增后关闭,父页 ...
- gulp的入门浅析
阅读目录 介绍gulp 安装gulp gulpfile.js 运行gulp 介绍gulp的api 介绍gulp gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/c ...
- DLL入门浅析(5)——使用DLL在进程间共享数据
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的 ...
- DLL入门浅析(4)——从DLL中导出类
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90663.html 前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小 ...
- DLL入门浅析(3)——从DLL中导出变量
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90643.html 前面介绍了怎么从DLL中导出函数,下面我们来看一下如何从DLL中导出 ...
- DLL入门浅析(2)——如何使用DLL
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90621.html 上文我简单的介绍了如何建立一个简单DLL,下面再我简单的介绍一下如何 ...
- DLL入门浅析(1)——如何建立DLL
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90619.html 初学DLL,结合教程,总结一下自己的所得,希望对DLL初学者们有所帮 ...
- Android Dragger2快速入门浅析
定Dagger2的基本介绍:dagger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建. 使用Dagger2的好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象 (不使 ...
- DLL入门浅析【转】
1.建立DLL动态库 动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数 ...
随机推荐
- Martian Addition
In the 22nd Century, scientists have discovered intelligent residents live on the Mars. Martians are ...
- 常用算法Java实现之选择排序
选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...
- java — 线程池
线程池的作用 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控 ...
- lintcode-11-二叉查找树中搜索区间
二叉查找树中搜索区间 给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点.找到树中所有值在 k1 到 k2 范围内的节点.即打印所有x (k1 <= x <= k2 ...
- iOS- AVSpeechSynthesizer——iOS7语音合成器
语音合成器的技术是iOS7推出的,可以实现无网络语音功能,支持多种语言 1. 定义一个成员变量,记录语音合成器 AVSpeechSynthesizer #import <AVFoundation ...
- RabbitMQ安装与初始配置【转载】
Erlang安装 rabbitmq依赖于Erlang,需先安装,推荐安装rabbitmq/erlang-rpm: #clone源码 git clone https://github.com/rabbi ...
- [计算机网络-传输层] 无连接传输:UDP
UDP(用户数据报协议) 下面是UDP的报文段格式: 可以看出UDP的首部长度是固定的,共64bit,即8个字节. 校验和:提供了差错检测得功能,即用于确定当UDP报文段从源到达目的时,其中的比特是否 ...
- deep learning3
9.3.Restricted Boltzmann Machine (RBM)受限玻尔兹曼基 假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所 ...
- 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组+离散化
题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一 ...
- BZOJ4770 图样(概率期望+动态规划)
考虑求出所有MST的权值和再除以方案数,方案数显然是2mn. 按位考虑,显然应该让MST里的边高位尽量为0.那么根据最高位是0还是1将点集划分成两部分,整张图的MST就是由两部分各自的MST之间连一条 ...