原文:【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】

【注意:】团队里总是有人反映卸载Xamarin,清理不完全。之前写过如何完全卸载清理剩余的文件。今天写了Windows下的批命令,MAC下的Shell脚本。

Windows 批:

echo 'please run it as windows Administartor...'

rd /s/q "C:\ProgramData\Mono for Android"
rd /s/q "C:\ProgramData\MonoTouch"
rd /s/q "C:\Users\admin\AppData\Local\Xamarin"
rd /s/q "C:\Program Files (x86)\MSBuild\Xamarin"
rd /s/q "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Xamarin" echo 'del /f/s/qete Xamarin over.....' pause

 Mac Shell:

rm -rf ~/Library/MonoTouch
sudo rm -rf /Library/Frameworks/Xamarin.iOS.framework
sudo rm -rf /Developer/MonoTouch

保存为******.sh ,然后去命令终端运行即可。(记住加权:chmod +x *****.sh)

------------------------------------------------割了---------------------------------------------------------

由于苹果的限制,IOS系统中不允许动态解析IL代码并执行,这跟苹果的程序安全机制有关系。IOS的程序都是运行在安全沙盒中,不允许在运行过程中动态加载分析执行代码。

所以,Xamarin采用的是 AOT编译机制。Android以JIT方式编译,而通过Xamarin编译后产生的文件为原生平台的ARM机器码,并且,Android和iOS皆为1对1的方式对应至原生SDK。

生成的对应的平台的机器码是不是就是跟原生程序一样了?既然是吧本机的程序集文件 扔到了Mac下编译的,那肯定是对应平台的原生代码了。所以,跟用OC开发的是一样的,只不过Xamarin转化了,估计体积略大,有冗余!

http://www.mono-project.com/docs/advanced/aot/

Mono的官方文档解释:

The Mono code generator can operate in two modes: Just-in-Time compilation or JIT, and Ahead-of-Time compilation or AOT.

AOT compilation works in two stages. The first stage consists of precompiling the assemblies. As of Mono 1.2, this is a manual process that individual deployments must do. The second stage is automatic, the Mono runtime will automatically load any precompiled code that you have generated.

-----------------有关沙盒机制------------------

原文:http://blog.csdn.net/totogo2010/article/details/7669837

1、iOS沙盒机制

iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。

1.1、每个应用程序都有自己的存储空间
 1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
 1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制。

2、打开模拟器沙盒目录

下面看看模拟器的沙盒文件夹在mac电脑上的什么位置。

文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library。

2.1 方法1、可以设置显示隐藏文件,然后在Finder下直接打开。设置查看隐藏文件的方法如下:打开终端,输入命名

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

输完单击Enter键,退出终端,重新启动Finder就可以了
重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->

现在能看到资源库文件夹了。

打开资源库后找到/Application Support/iPhone Simulator/文件夹。这里面就是模拟器的各个程序的沙盒目录了。

2.2 方法2、这种方法更方便,在Finder上点->前往->前往文件夹,输入/Users/username/Library/Application Support/iPhone Simulator/  前往。

username这里写你的用户名。

3、目录结构

默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件
Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

tmp:提供一个即时创建临时文件的地方。

iTunes在与iPhone同步时,备份所有的Documents和Library文件。

iPhone在重启时,会丢弃所有的tmp文件。

我们创建一个IosSandbox的项目来展开沙盒和文件读写等操作的练习。

创建后找到模拟器上对应的目录,

这是目录全展开了。

这是上面提到的三个目录 :Documents、Library、 tmp

下篇介绍目录路径获取和文件操作

例子代码:https://github.com/schelling/YcDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】的更多相关文章

  1. 【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】

    原文:[Xamarin 挖墙脚系列:IOS 开发界面的3种方式] xcode6进行三种基本的界面布局的方法,分别是手写UI,xib和storyboard.手写UI是最早进行UI界面布局的方法,优点是灵 ...

  2. 【Xamarin挖墙脚系列:IOS现有的设备SDK /OS/硬件一览】

    附件下载: http://pan.baidu.com/s/1o7rsrUE

  3. 【Xamarin 跨平台机制原理剖析】

    原文:[Xamarin 跨平台机制原理剖析] [看了请推荐,推荐满100后,将发补丁地址] Xamarin项目从喊口号到现在,好几个年头了,在内地没有火起来,原因无非有三,1.授权费贵 2.贵 3.原 ...

  4. 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】

    原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!! 先看官方 这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核 ...

  5. 【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】

    原文:[Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发] 官方地址:https://developer.xamarin.com/guides/cross-platform/adv ...

  6. 【Xamarin挖墙脚系列:对设备/模拟器的查看调试监听】

    原文:[Xamarin挖墙脚系列:对设备/模拟器的查看调试监听] 有时候我们需要查看模拟器中的文件,比如进行了文件IO操作,sqlite数据库的操作等.我们想查看内容,这时候,如何将内容导出来?由于A ...

  7. 【Xamarin挖墙脚系列:多窗口之间的导航】

    原文:[Xamarin挖墙脚系列:多窗口之间的导航] 在Android中:Intent对象,通知松散耦合的Activity等组件 在IOS中:Segue对象连接视图 <button opaque ...

  8. 【Xamarin挖墙脚系列:Xamarin4.0的重大变更】

    原文:[Xamarin挖墙脚系列:Xamarin4.0的重大变更] Windows下的变更不大,主要还是bug 的修复,性能的优化,API的扩展实现. 变化最大的是在Mac上的那个Xamarin.iO ...

  9. 【Xamarin挖墙脚系列:学习资料大放送】

    原文:[Xamarin挖墙脚系列:学习资料大放送] 最靠谱的还是官方的文档,英文的,借着翻译工具,硬看吧.还能学习英文........... https://developer.xamarin.com ...

随机推荐

  1. [jquery]高级篇--获取div子元素

    参考: http://zhidao.baidu.com/link?url=IfeQQBn1xMLqWvwdkKbQYJ8mC6ciGi_8M1NYkm6iQ-kXBMX2f2ylN-ckzFLiynn ...

  2. 两种js监听滚轮事件的方式

    前段时间在写前端的时候,需要监听浏览器的滚轮事件 网上查了一下,找到两种监听滚轮事件的方法: 一.原生js通过window.onscroll监听 //window.onscroll = functio ...

  3. 2016/7/7 自定义函数copy

    题目:输入整数n(n<=10000),表示接下来将会输入n个实数,将这n个实数存入数组a中.请定义一个数组拷贝函数将数组a中的n个数拷贝到数组b中. 分析: (1)输入n,再输入n个实数存入数组 ...

  4. 专题三、ArrayList遍历方式以及效率比较

    一.遍历方式 ArrayList支持三种遍历方式. 1.第一种,随机访问,它是通过索引值去遍历 由于ArrayList实现了RandomAccess接口,它支持通过索引值去随机访问元素. 代码如下: ...

  5. JS到PHP使用RSA算法进行加密通讯

    我们平时做用户登录表单提交,用户名密码都是明文直接POST到后端,这样很容易被别人从监听到. 在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑 ...

  6. [原创整理]这些术语你知道吗?(Web篇)

    每一个术语代表的或是一种技术,或是一项标准,那么,作为混在IT界这个江湖的你,对这些术语熟悉么? 你知道它们所指代的事物么?你知道他们被创造的目的么?你了解了设计者的思想与精髓了么?亲,跟上时代的脚步 ...

  7. 百度地图LBS应用开发代码

    最近因为工作需要,领导要我将51地图API开发的一个应用迁移到百度地图,或者说用百度地图API进行重写,实现同样的功能.我先是把现有的这个51地图的应用了解了一下,然后就试着用百度地图做一些demo, ...

  8. 组织http请求

    post方式 string stratTime=""; string end=""://要拼接的参数 string postURL = "http:/ ...

  9. jquery中邮箱地址 URL网站地址正则验证实例代码

    QQ网站有一个网站举报的功能,看了一些js代码觉得写得很不错,我就拿下来了,下面是一个email验证与url网址验证js代码,分享给大家 email地址验证 复制代码代码如下: function ch ...

  10. asp.net使用MVC4框架基于NPOI做导出数据到Excel表

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...