Xcode6中的模拟器路径

Xcode6发布后,出现了不少的变更,功能性的变更,在这里不进行过多的赘述,在WWDC上苹果已经进行了讲述,网上也有不少文章,这里要介绍的是一些不太容易发现的,但很重要的小地方。编程


一、Xcode6模拟器路径的变动
在Xcode5和以前的版本中,Xcode的模拟器路径为:/Users/username/Library/Application Support/iPhone Simulator。在该文件夹下,能够查看到全部的模拟器版本,点进去后,可查看应用沙盒状况。
在开发中,建议将文件拖动快捷路径到Finder左侧我的收藏下,能够方便打开查看应用沙盒。
在Xcode6中,将模拟器的位置进行了变动,地址以下:/Users/username/Library/Developer/CoreSimulator,打开后会发现以下状况:
在这里,苹果对模拟器进行了编码处理,并非以模拟器系统版本进行的命名和分类,而是对Xcode6中全部的模拟器进行的区分,里面的16个文件夹分别对应的Xcode6中的16种模拟器 ,那如何根据这个看似乱码的文件夹,判断出是哪一款模拟器呢?
选中某个文件后,打开会看到一个名为data的文件夹,和device.plist的配置文件,打开device.plist的配置文件后,会看到模拟器的UDID、设备类型、系统版本、名称等。经过这个能够知道模拟器的设备和系统版本。打开后,会发现,前面的看似乱码的文件名称,其实就是模拟器的设备UDID,虽然从这里能够获得模拟器的UDID,苹果也用它来进行分类模拟器,但在实际的编程中,若是想最后发布到APP Store的话,仍是放弃UDID吧,这也是苹果比较霸道的一点,固然了也是在保护用户隐私的状况下作出的。
app


二、应用沙盒地址的变动
获得了模拟器路径后,仍是用不少的不一样的,应用的沙盒地址也和以前有所不一样。
在Xcode5及以前的版本中,沙盒地址为以下:/Users/username/Library/Application Support/iP hone Simulator/7.0.3/Applications,在Applications文加下,会找到应用程序的沙盒。
在打开应用沙盒后,会有应用程序文件、Document文件夹、Library文件夹、tmp文件夹。至于这几个文件夹的做用不在此作赘述。
在Xcode6中,应用程序文件、Document文件夹、Library文件夹、tmp文件夹这四个文件放在了不一样的目录中。应用程序文件路径:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Bundle/,Application文件夹下;Document文件夹、Library文件夹、tmp文件夹路径:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Data/,Application文件下。可是不幸的是,这两个路径打开后的文件名,仍是通过编码过的,并且,同一个应用中的应用程序文件和D、L、t文件夹所在的文件夹的文件名是不一样的。只能本身找。
测试


三、NSUserDefault 文件存储位置变动
NSUserDefault是iOS提供的本地化数据存储方式,会在沙盒中自动建立一个.plist的配置文件,将数据保存起来,在读取时,以NSDictionary字典来进行接收
在Xcode5及以前的版本中,具体的路径为:/Users/shifengwei/Library/Application Support/iPhone Simulator/7.0.3/Applications/C9588981-3D82-49BC-92B8-F5BA72185629/Library,Preferences文件夹下,名称为程序Bundle Identifier的plist文件。在删除模拟器中的程序后,在Library文件夹下的plist文件会相应的删除。
在Xcode6中,程序对使用NSUserDefault方式建立的plist文件的位置进行了更换,具体路径为:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Library,Preferences文件夹下。
这里特别说一下,若是按照在Finder里打开的路劲来看,并非这样的,但经过 Finder,前往文件夹,经过该路径查找是能够查到的。上述的路径地址是经过查看Preferences文件夹的显示简介得到的。
经过上述的路径能够看出,经过NSUserDefault建立的plist文件夹仍是在Library文件下,但不一样的是,真正存放的位置变了,成了在模拟器的资料库文件夹下,这样的改变所产生的变化就是,当咱们在删除模拟器中的应用程序后,plist文件仍是会保留,并不会删除。
那么,既然模拟器中的位置变了,那升级到iOS8后,在这方面有什么不一样呢?下面就说说在在真机中调试的不一样。
一、Organizer中,在Xcode5中,是Devices、Projects、Archives三栏,而在Xcode6中,单独将Devices拿了出来,成了和Organizer平级的,在Xcode菜单栏,Window下。若是了解过Xcode从4.X升级到5时,就会知道,Organizer在那个时候也变动过,从原来的四栏变成了三栏,将帮助文档移除了。
二、在进行真机调试时,会打开真机中应用程序的沙盒,进行查看,在Xcode中, 打开Devices的Application中,能够下载下来应用程序的沙盒,经过右击显示包内容来查看沙盒的信息。可是在iOS8和iOS7及以前出现了不一样。
在iOS8下,经过Devices下载的沙盒内容没法查看沙盒里面的内容。
咱们经过第三方的软件,在这里使用的是iFunBox,找到应用程序后,打开发现能够查看到沙盒的内容,复制到本地后,发现,本来的5个文件,只有3个,也就是Document文件夹、Library文件夹、tmp文件夹三个。
这里特别说一下,上述提到过的,在模拟器中,经过NSUserDefault自动建立的plist文件,在删除软件后,还会保留,但在真机中,也是会删除的,相应的plist文件的路径到了经过导出的Library文件夹下的Preferences文件夹下,删除应用程序后,不会保留。这应该算是一个真机和模拟器中的不一样。
这个不一样会形成一种状况,那是否还可使用NSUserDefault?就笔者目前来看,还不至于废弃NSUserDefault,毕竟它只是在模拟器中会出现删除应用保留的状况,在真机中不会,并且NSUserDefault在开发中,做为数据持久化,在保存数据时,仍是很好用的。固然了,也有开发者会不适应这种状况,担忧在真机中会出现,若是有开发者认为不适应的话,能够本身建立一个plist文件在沙盒中,代替,可是若是说应用中使用的NSUserDefault比较多的话,不建议这样,毕竟苹果封装的NSUserDefault仍是很好用的。能够在模拟器删除文件后,在保存plist文件的文件夹下,将plist文件删除便可,多个步骤而已,至少目前来看,在真机中仍是和以前同样的。
固然,在iOS中,除了NSUserDefault会系统自动生成文件进行数据保存外,归档也是同样的,因为笔者没有进行测试,为了不误导,这里就不说了,待测试后,进行总结发布。
编码

 

PS:最后补充一下,打开或关闭Mac的隐藏文件的命令。
打开Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true
关闭Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false
方法:在终端中,输入该命令,回车,而后在强制退出中,重启Finder,便可。spa

相关文章
相关标签/搜索