iOS签名ipa包解析

最近有需求需要在打好包的ipa内添加配置文件,由程序读取配置到程序内,因此做了需求调研,最后找到一个方法,现在说明如下:ios签名

一、ipa压缩包结构说明 将ipa解压得到包里的内容如下: 1、_CodeSignature 文件hash列表:存放每个文件的hash值; 2、—–.xcent 授权文件:存放App有哪些权限被允许; 3、—-.mobileprovision 配置文件:存放证书及其它一些相关项目; 4、其它-一些资源文件 由于iOS在打包的过程中会对程序包内的每个文件都做签名,在程序包内的文件是不允许被修改的,否则再次打包就会无法安装; 在里面可以存放“空文件夹”,这样系统就会认为没有变化,再次打包安装是没问题的; //注意: //这个里面的其他位置是无法放置其它文件的,但是在_CodeSignature文件夹内可以添加其它文件,iOS系统是不会校验这个文件夹内多余的文件的;

//这样就可以在ipa打包之后,实现动态的在ipa包内添加工程的相关配置;

iOS签名ipa包解析

二、ipa包内文件的访问 iOS应用都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,ios对沙盒有以下几条限制。     (1)、应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒。     (2)、应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里。     (3)、ios禁止任何读、写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。     (4)、沙盒根目录里有三个文件夹:Documents,一般应该把应用程序的数据文件存到这个文件夹里,用于存储用 沙盒就是应用程序的安装过程中、系统为每个单独的应用程序生成它的主目录和一些关键的子目录   —文件夹 沙盒机制是一种安全体系,它规定了应用程序只能在本应用程序沙盒中读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、音频、视频、属性列表(偏好设置)和文本文件等。 优点 安全 每个应用程序都在自己的沙盒内 不能随意跨越自己的沙盒区访问别的应用程序沙盒的内容,应用程序向外请求或接受数据都需要经过权限认证 缺点 文件访问受限 访问文件不灵活 获取这些目录路径的方法: 1,获取home目录路径的函数: NSString *homeDir = NSHomeDirectory(); 2,获取Documents目录路径的方法: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [paths objectAtIndex:0]; 3,获取Caches目录路径的方法: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachesDir = [paths objectAtIndex:0]; 4,获取tmp目录路径的方法: NSString *tmpDir = NSTemporaryDirectory(); 5,获取应用程序程序包中资源文件路径的方法: 例如获取程序包中一个图片资源(apple.png)路径的方法: NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”]; UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath]; 代码中的mainBundle类方法用于返回一个代表应用程序包的对象。 三、_CodeSignature文件的读取 1、路径文件读取 //资源包路径      NSString *bunPath = [[NSBundle mainBundle]bundlePath];    //获取资源包下所有文件的子路径     NSArray *pathArray = [[NSFileManager defaultManager]subpathsAtPath:bunPath];     //拼接CodeResources路径     NSString *codePath = [bunPath stringByAppendingPathComponent:@"_CodeSignature/CodeResources"];     //数据读取     NSData *ta = [NSData taWithContentsOfFile:codePath]; 2、虽然可以解压ipa,在里面放置文件,但是不能通过程序往里面写入数据,这是不被允许的; Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x17407bf00 {NSFilePath=/private/var/mobile/Containers/Bundle/Application/C30F8A79-A9B0-4907-A528-070110717701/f.app/_CodeSignature, NSUnderlyingError=0x17405dd90 "The operation couldn’t be completed. Operation not permitted"

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/ios%e7%ad%be%e5%90%8dipa%e5%8c%85%e8%a7%a3%e6%9e%90.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2022年6月17日 下午11:08
下一篇 2022年6月17日 下午11:08

猜你喜欢