解除框架包模式符号依赖的方法及装置与流程

文档序号:35532374发布日期:2023-09-21 13:48阅读:26来源:国知局
解除框架包模式符号依赖的方法及装置与流程

本发明涉及软件开发,具体涉及一种解除框架包模式符号依赖的方法及装置。


背景技术:

1、在ios平台上,由于苹果公司主力推荐引导,swift的代码市场份额越大庞大,众多第三方库均是由swift编写。而第三方库,在ios开发中,往往通过cocoapod进行依赖引用。对于swift编写的第三方库,若有正常引入、编译或使用,首要要求在podfile声明文件中增加use_frameworks!框架包模式符号,换而言之,swift的第三方库对于use_frameworks!符号声明是必需的。

2、但use_frameworks!符号是一个极度不友好的符号。从上世纪80年代已通用至今的objective-c语言,当前已在市场上占有率较高,因此objective-c编写的第三方库同样占有率高。use_frameworks!对于objective-c语言编译好的.a库,会引起依赖传递的问题,而导致工程产生编译冲突。

3、当前行业内对于以上问题,推荐的方案,往往是更换.a库,找到其他同类的库进行替代。本质上,并未解决use_frameworks!符号会导致存在.a库的工程,在编译时产生冲突的问题。同时找寻同类替代库是一件费时费力的工作,且不一定有合适的替代库。


技术实现思路

1、针对现有技术的不足,本发明提出一种解除框架包模式符号依赖的方法,包括:

2、a、获取基于swift语言编写的第三方提供的目标源码;

3、b、使用xcode新建project工程,将所述目标源码载入所述project工程;

4、c、在project工程的build settings中,找到mach-o type选中为dynamiclibrary,设置setting值为valid_archs,value值为arm64、armv7、x86_64和i386;

5、d、使用对应的xcode打开project工程,通过xcode的build进行编译,获得四个架构的framework包,framework包内部包含可直接被链接器加载的动态库实体;

6、e、重复执行步骤d,获取不同swift版本编译出的framework包;

7、f、将所述framework包上传至pod库,作为第三方pod库的实体,替代对应的swift源码库实体。

8、在其中一个实施例中,上述所述步骤b之前,还包括:

9、g、根据swift和xcode版本的对应关系进行梳理,提炼swift的关键版本;

10、所述步骤d,具体为:

11、d1、使用swift的关键版本对应的第一xcode版本打开project工程,通过xcode的build进行编译,获得四个架构的framework包,framework包内部包含可直接被链接器加载的动态库实体。

12、在其中一个实施例中,上述所述步骤d1之后,还包括:

13、h、对framework包进行多级检测,确定framework包的可靠性;

14、所述步骤f,具体为:

15、f1、将可靠的framework包,使用podspec定义、声明和发布,并上传至cocoapod平台进行管理。

16、在其中一个实施例中,上述所述步骤h,包括:

17、h1、根据各个版本的xcode中通用的调用逻辑,编辑通用测试代码;

18、h2、根据第一xcode版本新建project工程,载入已编译好的framework包,根据通用测试代码使用真机运行程序,当程序正常运行且通用测试代码能正常打印出swift代码中定义的类对象,判断一级检测通过;

19、h3、根据第二xcode版本新建project工程,载入已编译好的framework包,根据通用测试代码使用真机运行程序,当程序正常运行且通用测试代码能正常打印出swift代码中定义的类对象,判断二级检测通过,所述第二xcode版本和第一xcode版本对应同一swift的关键版本。

20、在其中一个实施例中,上述所述步骤h3之后,还包括:

21、i、若检测未通过,使用第二xcode版本打开project工程,通过第二xcode版本的build进行编译,获得与第二xcode版本对应的四个架构的framework包。

22、在其中一个实施例中,上述所述步骤f1之后,还包括:

23、j、当检测xcode版本和swift版本同时更新时,使用更新后的xcode版本和swift版本至少重新执行步骤g、d1、h和f1。

24、本发明还提供了一种解除框架包模式符号依赖的装置,包括:

25、第一获取模块,用于获取基于swift语言编写的第三方提供的目标源码;

26、载入模块,用于使用xcode新建project工程,将所述目标源码载入所述project工程;

27、设置模块,用于在project工程的build settings中,找到mach-o type选中为dynamic library,设置setting值为valid_archs,value值为arm64、armv7、x86_64和i386;

28、第二获取模块,用于使用对应的xcode打开project工程,通过xcode的build进行编译,获得四个架构的framework包,framework包内部包含可直接被链接器加载的动态库实体;

29、第三获取模块,用于获取不同swift版本编译出的framework包;

30、替换模块,用于将所述framework包上传至pod库,作为第三方pod库的实体,替代对应的swift源码库实体。

31、在其中一个实施例中,上述装置还包括第一确定模块和第二确定模块;

32、第一确定模块,用于根据swift和xcode版本的对应关系进行梳理,提炼swift的关键版本;

33、所述第二获取模块,具体用于:

34、使用swift的关键版本对应的第一xcode版本打开project工程,通过xcode的build进行编译,获得四个架构的framework包,framework包内部包含可直接被链接器加载的动态库实体;

35、第二确定模块,用于对framework包进行多级检测,确定framework包的可靠性;

36、所述替换模块,具体用于:

37、将可靠的framework包,使用podspec定义、声明和发布,并上传至cocoapod平台进行管理;

38、所述第二确定模块,具体用于:

39、根据各个版本的xcode中通用的调用逻辑,编辑通用测试代码;

40、根据第一xcode版本新建project工程,载入已编译好的framework包,根据通用测试代码使用真机运行程序,当程序正常运行且通用测试代码能正常打印出swift代码中定义的类对象,判断一级检测通过;

41、根据第二xcode版本新建project工程,载入已编译好的framework包,根据通用测试代码使用真机运行程序,当程序正常运行且通用测试代码能正常打印出swift代码中定义的类对象,判断二级检测通过,所述第二xcode版本和第一xcode版本对应同一swift的关键版本。

42、本发明还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的解除框架包模式符号依赖的方法。

43、本发明还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的解除框架包模式符号依赖的方法。

44、本发明实施例通过预先获取基于swift语言编写的第三方提供的目标源码;使用xcode新建project工程,将所述目标源码载入所述project工程;在project工程的buildsettings中,找到mach-o type选中为dynamic library,设置setting值为valid_archs,value值为arm64、armv7、x86_64和i386;使用对应的xcode打开project工程,通过xcode的build进行编译,获得四个架构的framework包,framework包内部包含可直接被链接器加载的动态库实体;并获取不同swift版本编译出的framework包;将所述framework包上传至pod库,作为第三方pod库的实体,替代对应的swift源码库实体。因为本发明实施例不再需要编swift库,不再需添加use_frameworks!符号声明,工作量减轻。同时,也不需要在podinstall之前,在xcode的build settings中配置swift_version,工作量进一步减轻。另外objective-c语言编译好的.a库,在use_frameworks!符号声明下,会引起依赖传递的问题,而本发明实施例可以彻底解决上述依赖传递的问题。开发人员无需另外找寻替代库,并重新替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1