你的位置:首页 > 操作系统

[操作系统]iOS底层基础知识


一:iOS沙盒知识

出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件、网络资源等(也有例外,比如系统通讯录、照相机、照片等能在用户授权的情况下被第三方应用访问)

1:MyApp.app
该目录包含了应用程序本身的数据,程序打包的时候的资源文件和一些本地文件就是存放在这个目录下的。 程序的可执行程序、plist文件也在这个目录下。
这个目录不会被iTunes同步

2:Documents

使用这个目录来保存关键数据。关键数据指那些应用不可再生的数据。 

这个目录会被iTunes同步

3:Library

用来保存一些配置文件和其他一些文件。其中使用NSUserDefaults写的设置数据都会保存到Library/Preferences目录下的一个plist文件中。Library/Caches可以用来保存可再生的数据,比如网络请求,用户需要负责删除对应文件。
这个目录(除了Library/Caches外)会被iTunes同步

4:tmp
使用这个目录来保存各种应用下次启动不再需要的临时文件。当应用不再需要这些文件的时候,需要主动将其删除。(当应用不再运行的时候,系统可能会将此目录清空。)
这个目录不会被iTunes同步

 

获取主要目录路径的方式沙盒目录NSLog(@"%@",NSHomeDirectory());MyApp.appNSLog(@"%@",[[NSBundle mainBundle] bundlePath]);tmpNSLog(@"%@",NSTemporaryDirectory());DocumentsNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *docPath = [paths objectAtIndex:0];NSLog(@"%@",docPath);LibraryNSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);NSString *libPath = [paths objectAtIndex:0];NSLog(@"%@",libPath);

 

二:iPhone 手机文件目录介绍: 

1、 【/Applications】   

常用软件的安装目录   

2.    【/private /var/ mobile/Media /iphone video Recorder】   

iphone video Recorder录像文件存放目录 

3、 【/private /var/ mobile/Media /DCIM】 

相机拍摄的照片文件存放目录 

4、 【/private/var/ mobile /Media/iTunes_Control/Music】 

iTunes上传的多媒体文件(例如MP3、MP4等)存放目录,文件没有被修改,但是文件名字被修改了,直接下载到电脑即可读取。 

5、 【/private /var/root/Media/EBooks】 

熊猫看书存放目录 

6、 【/Library/Ringtones】 

系统自带的来电铃声存放目录(用iTunes将文件转换为ACC文件,把后缀名改成.m4r,用iPhone_PC_Suite传到/Library/Ringtones即可) 

7、 【/System/Library/Audio/UISounds】 

短信记其它系统默认效果铃声(m4r铃声文件改扩展名为.caf)短信铃声文件名为sms-received开头的caf文件 

8、 【/private/var/ mobile /Library/AddressBook】 

系统电话本的存放目录 

【/private/var/mobile/Library/SMS】 

短信存放目录 

9、 【/private /var/ mobile/Media /iphone Recorder】 

iphone Recorder录音软件文件存放目录 

10、【/Applications/Preferences.app/zh_CN.lproj】 

软件Preferences.app的中文汉化文件存放目录 

11、【/Library/Wallpaper】 

系统q1ang纸的存放目录 

12、【/System/Library/Audio/UISounds】 

系统声音文件的存放目录 

13、【/private/var/root/Media/PXL】 

ibrickr上传安装程序建立的一个数据库,估计和windows的uninstall记录差不多。 

14、【/bin】 

和linux系统差不多,是系统执行指令的存放目录。 

15、【/private/var/ mobile /Library/SMS】 

系统短信的存放目录 

16、【/private/var/run】 

系统进程运行的临时目录?(查看这里可以看到系统启动的所有进程) 

17、【/private/var/logs/CrashReporter】 

系统错误记录报 

 

特殊图标存放目录介绍: 

充电图标: 

System/Library/CoreServices/SpringBoard.app/BatteryBG_1.png 一直到 BatteryBG_17.png ,Batteryfill.png   

18个图标为充电图标 

手机信号图标: 

SystemLibraryCoreServicesSpringBoard.app下Default_0_Bars.png一直到Default_5_Bars.png 和FSO_0_Bars.png--FSO_5_Bars.png 

10个图标为信号图标 

Wifi信号图标: 

SystemLibraryCoreServicesSpringBoard.appDefault_0_AirPort.png---Default_3_AirPort.png和FSO_0_AirPort.png---FSO_3_AirPort.png 

8个图标为wifi信号图标 

Edge信号图标: 

SystemLibraryCoreServicesSpringBoard.app Default_EDGE_ON.png和FSO_EDGE_ON.png  

2个图标为Edge信号图标 

日期美化图标: 

SystemLibraryCoreServicesSpringBoard.app|FSO_LockIcon.png 

待机播放器图标: 

SystemLibraryCoreServicesSpringBoard.app|nexttrack.png , pause.png , play.png, prevtrack.png  

4个图标为待机播放器图标 

IPOD播放信号图标: 

SystemLibraryCoreServicesSpringBoard.appFSO_Play.png ,Default_Play.png 

闹钟信号图标: 

SystemLibraryCoreServicesSpringBoard.appDefault_AlarmClock.png ,FSO_AlarmClock.png 

震动图标: 

SystemLibraryCoreServicesSpringBoard.appsilent.png ,hud.png ,ring.png 

滑块图标: 

SystemLibraryPrivateFrameworksTelephonyUI.framework 目录下: 

Bottombarknobgray.png(待机解锁滑块图标) 

bottombarknobgreen.png(待机状态下移动滑动来接听 滑块图标) 

Bottombarknobred.png(关机滑块 图标) 

待机时间字体: 

/System/Library/Fonts/Cache/LockClock.ttf 

待机时间背景: 

system/library/Frameworks/UIKit.framework/Other.artwork 

滑块文字变为闪光字: 

SystemLibraryPrivateFrameworksTelephonyUI.framework/bottombarlocktextmask.png 

解锁滑条路径: 

SystemLibraryPrivateFrameworksTelephonyUI.framework/ opbarbkgnd.png ,bottombarbkgndlock.png 

滑块文字路径: 

/System/Library/CoreServices/SpringBoard.app/zh_CN.lproj 

移动: 

改彩色的文件名为:Default_CARRIER_CHINAMOBILE.png 

改黑白的文件名为:FSO_CARRIER_CHINAMOBILE.png 

联通: 

改彩色的文件名为:Default_CARRIER_CHINAUNICOM.png 

改黑白的文件名为:FSO_CARRIER_CHINAUNICOM.png 

 

iPhone 特殊文件目录介绍: 

1. 【/private/var/mobile】   

新刷完的机器,要在这个文件夹下建一个Documents的目录。 

2. 【/private/var/mobile/Applications】   

通过AppStore和iTunes安装的程序都在里面。 

3. 【/private/var/stash】  iPhone4这条不能用 

这个文件夹下的Applications目录里面是所有通过Cydia和app安装的程序,Ringtones目录里是所有的手机铃音,自制铃音直接拷在里面即可,Themes目录里是所有Winterboard主题,可以手工修改。 

4. 【/var/mobile/Media/ROMs/GBA】   

gpsPhone模拟器存放rom的目录。 

5. 【/var/mobile/Media/textReader】   

textReader看书软件读取的电子书的存放路径。 

6. 【/System/Library/Fonts/Cache】 

系统字体目录,要替换的字体放在该目录下,权限644不变 

7. 【/private/var/mobile/Media/Maps】 

离线地图目录,把地图文件夹放到该目录下,文件夹赋予777权限 

8. 【/private/var/mobile/Library/Downloads】 

ipa文件存放目录,用Installous安装 

9. 【/private/var/mobile/Library/Keyboard】 

系统拼音字库文件位置 

10. 【/var/stash/Themes.XXXXXX】 iPhone4这条不能用 

winterboard主题文件存放路径 

11. 【/private/var/mobile/Media/DCIM/999APPLE】 

系统自带截屏文件存放路径 

 

iPhone系统常用文件夹位置

1、【/Applications】

常用软件的安装目录

2. 【/private /var/ mobile/Media /iphone video Recorder】

录像文件存放目录

3、【/private /var/ mobile/Media /DCIM】

相机拍摄的照片文件存放目录

4、【/private/var/ mobile /Media/iTunes_Control/Music】

iTunes上传的多媒体文件(例如MP3、MP4等)存放目录,文件没有被修改,但是文件名字被修改了,直接下载到电脑即可读取。

5、【/private /var/root/Media/EBooks】

电子书存放目录

6、【/Library/Ringtones】

系统自带的来电铃声存放目录(用iTunes将文件转换为ACC文件,把后缀名改成.m4r,用iPhone_PC_Suite传到/Library/Ringtones即可)

7、【/private/var/ mobile /Library/AddressBook】

系统电话本的存放目录。

8、【/private /var/ mobile/Media /iphone Recorder】

录音文件存放目录

9、【/Applications/Preferences.app/zh_CN.lproj】

软件Preferences.app的中文汉化文件存放目录

10、【/Library/Wallpaper】

系统q1ang纸的存放目录

11、【/System/Library/Audio/UISounds】

系统声音文件的存放目录

12、【/private/var/root/Media/PXL】

ibrickr上传安装程序建立的一个数据库,估计和windows的uninstall记录差不多。

13、【/bin】

和linux系统差不多,是系统执行指令的存放目录。

14、【/private/var/ mobile /Library/SMS】

系统短信的存放目录

15、【/private/var/run】

系统进程运行的临时目录?(查看这里可以看到系统启动的所有进程)

16、【/private/var/logs/CrashReporter】

系统错误记录报告

电话界面

/Applications/MobilePhone.app/

资料路径:

/private/var/mobile/Library/AddressBook 联系人

/private/var/mobile/Library/CallHistory 通话记录

/private/var/mobile/Library/SMS 短信

/private/var/mobile/Library/Notes 备忘录

/private/var/mobile/Library/Safari Safari 浏览器保存的书签等

/private/var/mobile/Library/Mail 电子邮件

/private/var/mobile/Media/DCIM 照片里面的胶卷

/private/var/mobile/Media/Photos 照片里面的图片

/private/var/mobile/Media/Videos Cycorder摄像机软件拍摄文件保存路径

/private/var/mobile/Library/Preferences com.apple.mobilephone.speeddial.plist 个人收藏(电话快速拨号)

/private/var/mobile/Media/Recordings 语音备忘录

 

进程优化: 

【/System/Library/LaunchDaemon】目录下,就是那些【.plist】文件.要不启动这些进程的最简单的方法就是删除相应的【.plist】文件. 

前先一定要备份,以防万一!你可以在你的iPhone或iPod的【/private/var/】下面建一个【backup】目录,然后把要删除的【.plist】文件用iFile直接剪切并存储到【backup】目录下 ,或者直接备份整个【/System/Library/LaunchDaemon】目录! 

完全可以安全删除的进程:   

1. com.apple.DumpPanic.plist -这是苹果公司用来评估系统崩溃的,完全没必要运行.   

2. com.apple.DumpBasebandCrash.plist -这是苹果公司用来苹果基带崩溃的,也没必要运行.   

3. ReportCrash -有5个带"ReportCrash"的".plist"文件,都是用来收集系统或系统程序崩溃的信息

4. com.apple.CrashHouseKeeping.plist -和程序崩溃相关的,可以删.   

5. com.apple.powerlog.plist -用来监测第三方不兼容的充电器,可以删.   

6. com.apple.tcpdump.server.plist -似乎是用来转存网络数据的删除后不影响设备.   

7.com.apple.chud.chum.plist -这个进程应该和苹果的CHUD工具相关(计算机硬件协议开发/ComputerHardware Understanding Developer).如果你不是一个软件开发者,应该不用启动这个进程.   

8. com.apple.chud.pilotfish.plist -着也是和苹果CHUD工具相关的一个进程.如果你不开发苹果软件,可以删除这个. 

1. com.apple.AddressBook.plist -如果不启动这个进程,那么电话中的通讯录的载入速度会稍微变慢一些.若不介意这一点,则可以删除这个进程.   

2. com.apple.accessoryd.plist -不启动这个进程就会禁用一些辅助设备功能,例如: FM收音机, iPhone座充, AV数据线.当然,即便禁用了这个进程,用iPhone座充还是能充电,但也只能有充电的功能啦.   

3. com.apple.dataaccess.dataaccessd.plist -禁用了这个进程,就不能通过Exchange或者Google来同步了.   

4. com.apple.datamigrator.plist -这个进程的作用是把联系人从你的SIM卡传到你的iPhone里. iPod用户就没必要启动它了.尽管我是iPhone,但我也没有启动它,因为我从来不在SIM卡中存联系人.   

5. com.apple.racoon.plist -这是VρN需要的进程. 

6. com.apple***leInternetSharing.plist -这是网络共享功能. iPod用户完全可以删除. iPhone用户就看你自己是否需要网络共享.  

7. com.apple.aggregated.plist -这个应该和"音频输入"有关.第一代的iPod完全不需要这个进程.第二代iPod可以根据自己的需要来决定. iPhone用户需要这个进程.   

8. com.apple.AOSNotification.plist -这是同步MobileMe用的.不用MobileMe的人完全不需要它.   

9.com.apple.AdminLite.plist-这个进程的作用是:当某个程序启动或反应时间过长,则iPhone或iPod会自动终止这个程序(即:让程序崩溃),从而把控制权转交到你手中.如果你不愿意经常看到程序崩溃,那么你可以关闭这个进程,但结果是,当遇到某个程序启动或反应过慢时,你得多等一会儿.一般情况下不建议关闭这个进程.   

10. com.saurik.Cydia.Startup.plist -安装Cydia后产生的进程,应该是用来执行自动安装deb软件的. 

 

三:iOS系统目录

1:/Applications/目录存放系统App和从Cydia下载的App,而 /var/mobile/Containers/ 目录存放的则是StoreApp。

2: /var/mobile/Containers,存放StoreApp。值得注意的是,App的可执行文件在bundle与App中的数据目录被分别存放在 /var/mobile/Containers/Bundle 和 /var/mobile/Containers/Data这俩个不同的目录下

3:/Applicatons: 存放所有的系统App和来自Cydia的App,不包括StoreApp。如下图。

 

4:/library: 存放一些提供系统支持的数据,其结构图如下图所示。其中 /Library/MobileSubstrate下存放了所有基于CydiaSubstrate(原名MobileeSubstrare)的插件。

5:/Devalop: 如果一台设备链接Xcode后被指定为调试用机,Xcode就回在iOS中生成这个目录,其中会含有一些调试需要的工具和数据,它的目录结构如下图所示。

 

6:/System/Library: iOS文件系统中最重要的目录之一,存放大量系统组件,其目录结构如下图所示。

对于该目录,需要重点关注的有:

  • /System/Library/Frameworks 和 /System/Library/PrivateFrameworks:存放iOS中的各种framework。
  • /System/Library/CoreServices里的SpringBoard.app:iOS中桌面管理器(类似于Windows里的explore),是用户与系统交流的最重要中介。

7:/User: 用户目录,实际指向 /var/mobile,其目录结构如下图所示。

  • /var/mobile/Media/DCIM下存放照片;

  • /var/mobile/Media/Recordings下存放录音文件;

  • /var/mobile/Library/SMS下存放短信数据库;

  • /var/mobile/Library/Mail下存放邮件数据;