本发明涉及代码集成领域,具体是一种在iosipa包植入代码的便捷方法。
背景技术:
传统的ios平台sdk传统接入方法都是在ipa生成前执行源代码接入,传统方法接入,一般来说需要做以下步骤:
1)sdk
2)参考接入文档,在原代码工程中添加相关sdk
3)sdk执行运行环境
4)sdkapi
5)ipa,完成接入。
由此可以看出,传统的接入方法,过程繁琐,sdk工作量大,运行效率慢。
技术实现要素:
本发明的目的在于提供一种在iosipa包植入代码的便捷方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种在iosipa包植入代码的便捷方法,具体步骤如下:
(1)添加勾子脚本
在ios工程源码中将勾子脚本加入到工程代码中,勾子脚本是通过objective-c语言开发的,通过ios提供的打包工具生成ipa发布包;
(2)植入代码
对步骤(1)生成的ipa包,利用解压工具将其解压,将需要引入的代码编译成动态库,添加到framework目录中;
(3)重签名,并打包成新ipa
将执行步骤(2)后的相关解压缩文件重新生成ipa包,利用ios提供的codesign工具对payload文件夹进行重新签名,完成后利用zip工具压缩paylod文件夹,命名扩展名为ipa即可;
(4)动态调用
新ipa包运行时,通过勾子脚本与动态库动态衔接,调用植入代码的功能,利用objective-c语言中的一个methodswizzling特性,在objective-c中调用一个方法,向一个对象发送消息,根据selector的名字查找消息,利用objective-c的动态特性实现在运行时偷换selector对应的方法挂钩。
与现有技术相比,本发明的有益效果是:使用本发明方法,不仅可以使得源代码工程中接入sdkhook脚本,并生成ipa,而且还可以对应实现工具,完成接入,极大的减少了sdk接入的工作量。
附图说明
图1为本发明的流程示意图。
图2为本发明中结构目录示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1~2,本发明实施例中,一种在iosipa包植入代码的便捷方法,具体步骤如下:
(1)添加勾子脚本
在ios工程源码中将勾子脚本加入到工程代码中,勾子脚本是通过objective-c语言开发的,通过ios提供的打包工具生成ipa发布包;
(2)植入代码
对步骤(1)生成的ipa包,利用解压工具将其解压,将需要引入的代码编译成动态库,添加到framework目录中;
(3)重签名,并打包成新ipa
将执行步骤(2)后的相关解压缩文件重新生成ipa包,利用ios提供的codesign工具对payload文件夹进行重新签名,完成后利用zip工具压缩paylod文件夹,命名扩展名为ipa即可;
(4)动态调用
新ipa包运行时,通过勾子脚本与动态库动态衔接,调用植入代码的功能,利用objective-c语言中的一个methodswizzling特性,在objective-c中调用一个方法,向一个对象发送消息,根据selector的名字查找消息,利用objective-c的动态特性实现在运行时偷换selector对应的方法挂钩。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。