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

原文:【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/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

 

时间: 2024-10-30 11:48:27

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

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

原文:[Xamarin 跨平台机制原理剖析] [看了请推荐,推荐满100后,将发补丁地址]   Xamarin项目从喊口号到现在,好几个年头了,在内地没有火起来,原因无非有三,1.授权费贵 2.贵 3.原生态Java开发Android的越来越多,人工费用成本降低. 上面说的3条,都跟钱相关,不占技术边,看起来跟本文的标题严重不符.但是,细细看来,如果这个产品的圈子打不开,再牛的技术,也是枉然.因为技术是在不断推进的, 性能问题,技术问题,实现问题,等等都可以随着时间的推动去解决,但是,Xamar

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

原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!!   先看官方   这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核心的Xamarin.IOS 程序集,包含了对应版本的API 2 组件   官方商城上的组件 3 资源文件 位图  音频  视频等文件 4 Main.cs  定义程序启动入口 5  AppDelegate.cs 程序启动后,定义窗口容器,并接收来自系统的事件消息. 6 Main.storybo

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

原文:[Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发] 官方地址:https://developer.xamarin.com/guides/cross-platform/advanced/razor_html_templates/ 使用Xamarin进行网页形式的本地APP开发,感觉有点不爽,不过为前端开发人员提供了开发APP的入口. 呈现引擎支持HTML  和ASP.NET MVC3的Razor引擎! Razor引擎是个好同志! 不过,创建Hybrid应用的框架不仅仅是

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

原文:[Xamarin挖墙脚系列:对设备/模拟器的查看调试监听]   有时候我们需要查看模拟器中的文件,比如进行了文件IO操作,sqlite数据库的操作等.我们想查看内容,这时候,如何将内容导出来?由于Android的系统是Linux内核,其文件的组织方式也是跟随Linux的. 在Linux系统中,所有的设备 数据块 目录 快捷方式  文件等都是以文件的方式组织的,对的,在Linux中,所有的所有都是文件! 文件根Root开始,以倒树的形式进行组织排列.每个文件都是树的节点Node.(熟悉Lin

【Xamarin挖墙脚系列:Xamarin开发环境配置需求】

原文:[Xamarin挖墙脚系列:Xamarin开发环境配置需求] 前言 因为操作的全是大块头,加大你们的内存,CPU网上飙....  卤煮的机器配置      最近的版本部署包,百度云离线下载:版本:Xamarin 4.0.0.1717 http://pan.baidu.com/s/1c1ylyVI     官方文档   开发基于苹果或者谷歌的平台产品,需要安装各自对应平台下的SDK.例如:安卓,IOS的开发SDK包. 跨平台开发的产品,各自对应的支持.在Windows环境下,使用Xamari

【Xamarin挖墙脚系列:Xamarin的核心】

原文:[Xamarin挖墙脚系列:Xamarin的核心]   Xamarin 包含两个商业产品 :Xamarin.IOS, Xamarin.Android.他们都是通过开源的基于.Net的Mono项目构建的.Mono是一个跨平台的.net 运行时,所有基于.net开发的应用,都可以运行在安装Mono的系统上. Mono可以部署在 Windows Linux  Unix MAC OSX...   在IOS开发中,Xamarin是通过AOT的编译方式,在程序发布时,进行预编译,并且直接将代码转化成为

【Xamarin挖墙脚系列:应用的性能调优】

原文:[Xamarin挖墙脚系列:应用的性能调优] 官方提供的工具:网盘地址:http://pan.baidu.com/s/1pKgrsrp 官方下载地址:https://download.xamarin.com/profiler/profiler-windows.msi Xamarin Profiler,使用此工具,帮助我们进行软件性能的调优,找到应用的瓶颈. 内存占用较高的代码调用进行监视.快速解决影响程序性能的代码.   关于此工具的使用,请参见: https://developer.xa

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

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

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

原文:[Xamarin挖墙脚系列:Xamarin4.0的重大变更] Windows下的变更不大,主要还是bug 的修复,性能的优化,API的扩展实现. 变化最大的是在Mac上的那个Xamarin.iOS build host .那个配对的代理软件,消失了!!!!!!!!!!!!你他么是在逗我啊!!!!!!劳资连夜升级,熬夜找那个build host  ,你他么说升级消失了!   官方的意思是:那个代理软件太麻烦啦,换成自动化的SSH登录识别,MAC机器一次性开启远程登录,后续的客户机只要有对应的