CN110633083A - 代码文件处理方法、装置、电子设备及计算机可读介质 - Google Patents

代码文件处理方法、装置、电子设备及计算机可读介质 Download PDF

Info

Publication number
CN110633083A
CN110633083A CN201810654765.5A CN201810654765A CN110633083A CN 110633083 A CN110633083 A CN 110633083A CN 201810654765 A CN201810654765 A CN 201810654765A CN 110633083 A CN110633083 A CN 110633083A
Authority
CN
China
Prior art keywords
file
code
classification
project
code file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810654765.5A
Other languages
English (en)
Other versions
CN110633083B (zh
Inventor
吕军委
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810654765.5A priority Critical patent/CN110633083B/zh
Publication of CN110633083A publication Critical patent/CN110633083A/zh
Application granted granted Critical
Publication of CN110633083B publication Critical patent/CN110633083B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及一种代码文件处理方法、装置、电子设备及计算机可读介质。涉及计算机信息处理领域,该方法包括:获取项目工程文件中待处理的代码文件;创建所述代码文件的分类文件;将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。本公开涉及的代码文件处理方法、装置、电子设备及计算机可读介质,能够降低iOS文件中可执行文件的大小。

Description

代码文件处理方法、装置、电子设备及计算机可读介质
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种代码文件处理方法、装置、电子设备及计算机可读介质。
背景技术
随着应用软件的发展,越来越多的应用软件产品投放到应用商城中,供广大用户使用。随着应用软件功能的丰富,应用软件产品的软件体积越来越大,占用的空间越来越多。很多应用软件商城,会限制应用的储存空间尺寸,所以对应用软件进行压缩,是亟待解决的问题。
在现有技术中,通常有如下两种方式进行应用软件安装包的压缩:1、编译器级别优化;2、资源优化;3,可执行文件优化。但是现有技术中的以上几种方式对应用软件的压缩的手段比较单一,特别是没有对应用软件中项目工程文件中的占用空间较大的可执行文件进行有效压缩,收效甚微。
因此,需要一种新的代码文件处理方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种代码文件处理方法、装置、电子设备及计算机可读介质,能够降低iOS文件中可执行文件的大小。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提出一种代码文件处理方法,该方法包括:获取项目工程文件中待处理的代码文件;创建所述代码文件的分类文件;将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
在本公开的一种示例性实施例中,获取项目工程文件中待处理的代码文件包括:获取项目工程文件中待处理的代码文件,所述代码文件为可执行文件。
在本公开的一种示例性实施例中,创建所述代码文件的分类文件包括:创建所述代码文件的category分类文件。
在本公开的一种示例性实施例中,将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码,包括:将所述代码文件中引用了静态库的所述第一代码分离到所述category分类文件中,所述第一代码包括方法和属性。
在本公开的一种示例性实施例中,将所述代码文件中的第一代码分离到所述分类文件中包括:将所述代码文件中的第一代码通过手动方式分离到所述分类文件中;和/或将所述代码文件中的第一代码通过脚本处理分离到所述分类文件中。
在本公开的一种示例性实施例中,将所述代码文件放置到所述项目工程的动态库中包括:将所述代码文件放置到所述项目工程的动态库工程目录中。
在本公开的一种示例性实施例中,所述分类文件放置到所述项目工程的静态库中包括:将所述分类文件放置到所述项目工程的静态库工程目录中。
在本公开的一种示例性实施例中,项目工程文件包括:iOS系统的项目工程文件。
根据本公开的一方面,提出一种代码文件处理装置,该装置包括:获取模块,用于获取项目工程文件中待处理的代码文件;创建模块,用于创建所述代码文件的分类文件;分离模块,用于将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及分类模块,用于将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本公开的代码文件处理方法、装置、电子设备及计算机可读介质,能够降低iOS文件中可执行文件的大小。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种代码文件处理方法及装置的系统框图。
图2是根据一示例性实施例示出的一种代码文件处理方法的流程图。
图3是根据另一示例性实施例示出的一种代码文件处理方法的示意图。
图4是根据一示例性实施例示出的一种代码文件处理装置的框图。
图5是根据一示例性实施例示出的一种电子设备的框图。
图6是根据一示例性实施例示出一种计算机可读存储介质示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
本申请的发明人发现,在现有技术中,对应用软件中可执行文件的压缩主要有以下几种方式:
1.编译器优化级别
在iOS系统中,Build Settings->Optimization Level有几个编译优化选项,release版可以通过选择Fastest,Smalllest开启,以使得代码大小得到优化,并让可执行文件尽可能小。
2.去除符号信息
在iOS系统中,Strip Debug Symbols During Copy和Symbols Hidden byDefault在release版本应该设为yes,可以去除不必要的调试符号。
3.编译优化
有人提出用ARC写的代码编译出来的可执行文件是会比用MRC大的,原因大致是ARC代码会在某些情况多出一些retain和release的指令,例如调用一个方法,它返回的对象会被retain,退出作用域后会被release,MRC就不需要,汇编指令变多,机器码变多,可执行文件就变大了。经过试验验证,将MRC编译的代码转为用ARC编辑,结果是ARC大概会使代码段增加10%的size,考虑代码段占可执行文件大约有80%,估计对整个可执行文件的影响会是8%。但是如果把项目里某些模块改成MRC,会使得项目程序的维护成本上升,所以一般不到特殊情况不建议这么做。
本申请的发明人发现,在对项目工程中的可执行文件进行压缩的时候,还有如下方式可供参考:
1..可执行文件中的无用代码优化
按C++的经验,没有被使用到的类和方法编译器都会优化掉,不会编进最终的可执行文件,但object-c不一样,因为object-c的动态特性,它可以通过类和方法名反射获得这个类和方法进行调用,所以就算在代码里某个类没被使用到,编译器也没法保证这个类不会在运行时通过反射去调用,所以只要是在项目里的文件,无论是否又被使用到都会被编译进可执行文件。对此可以通过脚本,遍历整个项目的文件,找出所有没有被引用的类文件和没有被调用的方法,在保证没有其他地方动态调用的情况下把它们去掉。如果整个项目历时很长,历时代码遗留较多,这个清理对可执行文件省出的空间还是挺可观的,但是需要消耗较长的时间。
2.可执行文件中的类/方法名长度优化
观察linkmap可以发现每个类和方法名都在__cstring段里都存了相应的字符串值,所以类和方法名的长短也是对可执行文件大小是有影响的,原因还是object-c的动态特性,因为需要通过类/方法名反射找到这个类/方法进行调用,object-c对象模型会把类名,方法名列表都保存下来。可以考虑在编译前把所有类和方法名进行混淆,把长名字替换成短名字,这样做的好处除了缩小体积外,还对安全性有很大提升,别人拿到可执行文件对它class-dump出来的结果都是混淆后的类和方法名,就无法从类和方法名中猜出某个方法是做什么的,就难以挂钩子进行hack。不过这样有个缺点就是crash堆栈反解出来的堆栈方法名会是混淆后的,需要再加一层混淆->原名的转换,实现和使用成本有点高。
3.可执行文件中的冗余字符串优化
代码上定义的所有静态字符串都会记录在在可执行文件的__cstring段,如果项目里Log非常多,这个空间占用也是可观的,也有几百K的大小,可以考虑清理所有冗余的字符串。另外如果有特别长的字符串,建议抽离保存成静态文件,因为AppStore对可执行文件加密导致压缩率低,特别长的字符串抽离成静态资源文件后压缩率会比在可执行文件里高很多。
但是,上文中的各种方法,在对应用软件进行压缩的时候,在需要大量人力时间资源的情况下,得到的效果仍旧不理想,只能释放出少量的空间资源。而应用商场对于应用软件的空间审核非常严格,可例如苹果App Store审核限制包的可执行文件大小,如果业务复杂,代码量大,则审核不通过。所以,本申请的发明人提出了本申请中的代码文件处理方法,能够自动化实现文件的筛查及拆分,从而快速的将项目文件进行可执行文件的优化,具备商业价值。还能够直接对代码文件进行优化,根本上解决了可执行文件的优化问题。
图1是根据一示例性实施例示出的一种代码文件处理方法及装置的系统框图。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的应用软件提供支持的后台管理服务器。后台管理服务器可以应用软件相关的代码进行更新或维护,并将处理结果(更新后的代码)上传给应用商城,以便终端设备101、102、103下载并适应该应用软件。
服务器105可例如获取项目工程文件中待处理的代码文件;服务器105可例如创建所述代码文件的分类文件;服务器105可例如将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;服务器105可例如将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
服务器105可以是一个实体的服务器,还可例如为多个服务器组成,需要说明的是,本公开实施例所提供的代码文件处理方法可以由服务器105执行,相应地,代码文件处理装置可以设置于服务器105中。而提供给用户进行下载应用软件并使用应用软件的请求端一般位于终端设备101、102、103中。
根据本公开的代码文件处理方法及装置,通过减小iOS最终打包生成的iPA格式安装包中可执行文件的大小,达到压缩的目的,满足审核的需求。
根据本公开的代码文件处理方法及装置,通过对工程中包含静态代码文件进行拆分,从而达到进一步减小可执行文件的目的。
根据本公开的代码文件处理方法及装置,通过一种创新的方式对工程的可执行文件进行处理,显著的减小可执行文件的大小。
下面以iOS系统中可执行文件压缩为例进行示例性说明,根据本公开的代码文件处理方法及装置,适用于不同语言的可执行文件的大小压缩,本申请不以此为限。
图2是根据一示例性实施例示出的一种代码文件处理方法的流程图。代码文件处理方法20至少包括步骤S202至S208。
如图2所示,在S202中,获取项目工程文件中待处理的代码文件。可例如,所述代码文件为可执行文件A;项目工程文件包括:iOS系统的项目工程文件。可通过用户指定待处理的可执行文件,也可由系统通过自动判断筛选出可执行文件,本申请不以此为限。
其中,可执行文件:包括了代码段(__TEXT,保存程序代码段编译后的机器码)和数据段(__DATA,保存变量值)。例如__text表示编译后的程序执行语句,__data表示已初始化的全局变量和局部静态变量,__bss表示未初始化的全局变量和局部静态变量,__cstring表示代码里的字符串常量,等等。
iOS运行的可执行文件可例如是iPA格式的程序文件。iPA文件实质是一个zip压缩包,包含3个组件:payload目录下的.app目录,是软件的主程序;iTunesArtwork,实质是一个无后缀名的png图片,用来在iTunes中显示图标;iTunesMetadata.plist,记录购买者信息、售价等数据。由于zip包不能记录权限和所有者等信息,苹果规定了iPA的安装方式,即全部iPA都会解包安装在/var/mobile/Applications目录下,全部文件和目录的所有者及用户组均设为mobile(ID为501),主程序(可执行文件)的权限设为0755,可执行文件在plist中定义。全部目录权限设为0755,而其它所有文件都设为0644。iPA解包后并非直接放置于Applications目录下,而是放在一串由随机码构成的目录下,其作用在于,只允许这个软件运行在一个特定的沙盒(Sandbox)中,不能干扰其他软件。因此那串随机码目录下,除了iPA本身的三个组件之外,还有三个目录:Library,一般是用了储存设置文件等数据;Documents,存储数据,多用了保存存档;tmp,临时文件夹。
在系统中,如果代码文件中访问了静态资源,则代码文件只能放在静态库,其中动态库不影响可执行文件的大小,静态库中的代码量是影响可执行文件的关键。
在S204中,创建所述代码文件的分类文件。可例如,创建所述代码文件的category分类文件AC。可以将AC理解为文件A的一个扩充容器,其中可以存放A的部分属性及方法。
其中,Category是在不改变已存在类的情况下,对其添加方法来达到对类进行功能扩展的目的。对类功能进行拓展的时候,会有多种方式,比如说可以通过继承也可以进行功能扩展,通过Category对一个类进行扩展有以下优点:
1、可以不用改变现存的类文件,同样可以框架中的类直接进行功能扩展,这种情况下不需要改变对象所指向的数据类型。
2、可以直接在现存的类中添加Category,这种情况下,可以对类中的功能做一个功能区分,达到将功能分组的目的。
在S206中,将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码。可例如,将所述代码文件A中引用了静态库的所述第一代码分离到所述category分类文件AC中,所述第一代码包括方法和属性。
在一个实施例中,将所述代码文件中的第一代码分离到所述分类文件中包括:将所述代码文件中的第一代码通过手动方式分离到所述分类文件中;和/或将所述代码文件中的第一代码通过脚本处理分离到所述分类文件中。
在S208中,将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。其中,可例如,将所述代码文件放置到所述项目工程的动态库工程目录中。还可例如,将所述分类文件放置到所述项目工程的静态库工程目录中。
在一个实施例中,还包括将项目工程拆分成动态库与静态库。静态库与动态库的区别在于创建时选择的工程配置文件,target->BuildSetting->Mach-o Type设为StaticLibrary(静态库)(默认为Dynamic Library动态库)。本申请中假设存在部分第三方的静态库,无法将其修改成静态库。开始工程中创建的静态库、动态库是项目工程本身要新建的,在后续处理中,静态库与动态库引用了第三方的静态库的代码。
静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。
在一个实施例中,还可例如重复上文中的步骤,直至将项目工程中的可执行文件均一一做了处理为止。
根据本公开的代码文件处理方法,利用分类文件将可执行文件中使用到静态库的代码分离到静态库的方式,能够降低iOS文件中可执行文件的大小。还能够自动化实现文件的筛查及拆分,从而快速的将项目文件进行可执行文件的优化,具备商业价值,根本上解决了可执行文件的优化问题。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
图3是根据另一示例性实施例示出的一种代码文件处理方法的示意图。图3示例性的说明了项目工程P拆分前后的结构图。借助于图3对本申请中代码处理方法进行如下说明:
对P工程进行可执行文件A压缩处理说明如下:
1、项目P包含动态库L1与静态库L2;
2、对需要减小可执行代码文件A创建分类(代码定义category)文件Ac;
3、将与静态库引用相关的代码分离到创建的文件Ac中;
4、将A与Ac分别放到动态库L1与静态库L2;
5、重复1-4对L2中其他文件进行操作直至可执行文件全部处理完毕为止。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图4是根据一示例性实施例示出的一种代码文件处理装置的框图。代码文件处理装置40包括:获取模块402,创建模块404,分离模块406,以及分类模块408。
获取模块402用于获取项目工程文件中待处理的代码文件;可例如,所述代码文件为可执行文件A;项目工程文件包括:iOS系统的项目工程文件。可通过用户指定待处理的可执行文件,也可由系统通过自动判断筛选出可执行文件,本申请不以此为限。
创建模块404用于创建所述代码文件的分类文件;可例如,创建所述代码文件的category分类文件AC。可以将AC理解为文件A的一个扩充容器,其中可以存放A的部分属性及方法。
分离模块406用于将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;可例如,将所述代码文件A中引用了静态库的所述第一代码分离到所述category分类文件AC中,所述第一代码包括方法和属性。
分类模块408用于将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。其中,可例如,将所述代码文件放置到所述项目工程的动态库工程目录中。还可例如,将所述分类文件放置到所述项目工程的静态库工程目录中。
根据本公开的代码文件处理装置,利用分类文件将可执行文件中使用到静态库的代码分离到静态库的方式,能够降低iOS文件中可执行文件的大小。还能够自动化实现文件的筛查及拆分,从而快速的将项目文件进行可执行文件的优化,具备商业价值,根本上解决了可执行文件的优化问题。
图5是根据一示例性实施例示出的一种电子设备的框图。
下面参照图5来描述根据本公开的这种实施方式的电子设备200。图5显示的电子设备200仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230、显示单元240等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元210执行,使得所述处理单元210执行本说明书上述电子处方流转处理方法部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元210可以执行如图2中所示的步骤。
所述存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)2201和/或高速缓存存储单元2202,还可以进一步包括只读存储单元(ROM)2203。
所述存储单元220还可以包括具有一组(至少一个)程序模块2205的程序/实用工具2204,这样的程序模块2205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
图6示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
参考图6所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:获取项目工程文件中待处理的代码文件;创建所述代码文件的分类文件;将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施例的方法。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“第一”、“第二”及“一”等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本公开可实施的范畴。

Claims (11)

1.一种代码文件处理方法,其特征在于,包括:
获取项目工程文件中待处理的代码文件;
创建所述代码文件的分类文件;
将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及
将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
2.如权利要求1所述的方法,其特征在于,获取项目工程文件中待处理的代码文件包括:
获取项目工程文件中待处理的代码文件,所述代码文件为可执行文件。
3.如权利要求1所述的方法,其特征在于,创建所述代码文件的分类文件包括:
创建所述代码文件的category分类文件。
4.如权利要求3所述的方法,其特征在于,将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码,包括:
将所述代码文件中引用了静态库的所述第一代码分离到所述category分类文件中,所述第一代码包括方法和属性。
5.如权利要求1所述的方法,其特征在于,将所述代码文件中的第一代码分离到所述分类文件中包括:
将所述代码文件中的第一代码通过手动方式分离到所述分类文件中;和/或
将所述代码文件中的第一代码通过脚本处理分离到所述分类文件中。
6.如权利要求1所述的方法,其特征在于,将所述代码文件放置到所述项目工程的动态库中包括:
将所述代码文件放置到所述项目工程的动态库工程目录中。
7.如权利要求1所述的方法,其特征在于,所述分类文件放置到所述项目工程的静态库中包括:
将所述分类文件放置到所述项目工程的静态库工程目录中。
8.如权利要求1所述的方法,其特征在于,项目工程文件包括:
iOS系统的项目工程文件。
9.一种代码文件处理装置,其特征在于,包括:
获取模块,用于获取项目工程文件中待处理的代码文件;
创建模块,用于创建所述代码文件的分类文件;
分离模块,用于将所述代码文件中的第一代码分离到所述分类文件中,所述第一代码为引用了静态库的代码;以及
分类模块,用于将所述代码文件放置到所述项目工程的动态库中,所述分类文件放置到所述项目工程的静态库中。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
CN201810654765.5A 2018-06-22 2018-06-22 代码文件处理方法、装置、电子设备及计算机可读介质 Active CN110633083B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810654765.5A CN110633083B (zh) 2018-06-22 2018-06-22 代码文件处理方法、装置、电子设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810654765.5A CN110633083B (zh) 2018-06-22 2018-06-22 代码文件处理方法、装置、电子设备及计算机可读介质

Publications (2)

Publication Number Publication Date
CN110633083A true CN110633083A (zh) 2019-12-31
CN110633083B CN110633083B (zh) 2024-06-18

Family

ID=68967758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810654765.5A Active CN110633083B (zh) 2018-06-22 2018-06-22 代码文件处理方法、装置、电子设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN110633083B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352632A (zh) * 2020-03-02 2020-06-30 北京字节跳动网络技术有限公司 软件产物检测装置、系统、方法及存储介质
CN111538506A (zh) * 2020-04-30 2020-08-14 烽火通信科技股份有限公司 精简可执行文件的方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870303A (zh) * 2014-02-10 2014-06-18 广东欧珀移动通信有限公司 减小软件安装包大小的方法及装置
US20150331882A1 (en) * 2013-01-30 2015-11-19 Tencent Technology (Shenzhen) Co., Ltd. Redundant file deletion method, apparatus and storage medium
CN105138333A (zh) * 2015-08-27 2015-12-09 北京暴风科技股份有限公司 基于安卓系统的apk文件压缩的方法及系统
CN106325896A (zh) * 2015-06-18 2017-01-11 腾讯科技(深圳)有限公司 安装包的共享函数库文件处理方法及装置
CN106775781A (zh) * 2017-02-17 2017-05-31 北京金山安全软件有限公司 减小应用安装包的方法、装置及电子设备
CN106775916A (zh) * 2017-02-17 2017-05-31 北京金山安全软件有限公司 减小应用安装包的方法、装置及电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150331882A1 (en) * 2013-01-30 2015-11-19 Tencent Technology (Shenzhen) Co., Ltd. Redundant file deletion method, apparatus and storage medium
CN103870303A (zh) * 2014-02-10 2014-06-18 广东欧珀移动通信有限公司 减小软件安装包大小的方法及装置
CN106325896A (zh) * 2015-06-18 2017-01-11 腾讯科技(深圳)有限公司 安装包的共享函数库文件处理方法及装置
CN105138333A (zh) * 2015-08-27 2015-12-09 北京暴风科技股份有限公司 基于安卓系统的apk文件压缩的方法及系统
CN106775781A (zh) * 2017-02-17 2017-05-31 北京金山安全软件有限公司 减小应用安装包的方法、装置及电子设备
CN106775916A (zh) * 2017-02-17 2017-05-31 北京金山安全软件有限公司 减小应用安装包的方法、装置及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZJ: "深入理解Objective-C:Category", pages 1 - 19, Retrieved from the Internet <URL:https://tech.meituan.com/2015/03/03/diveintocategory.html> *
腾讯BUGLY: "不给"爸爸"添麻烦 - iTOP iOS 动态库改造", pages 1 - 5, Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1071843> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352632A (zh) * 2020-03-02 2020-06-30 北京字节跳动网络技术有限公司 软件产物检测装置、系统、方法及存储介质
CN111538506A (zh) * 2020-04-30 2020-08-14 烽火通信科技股份有限公司 精简可执行文件的方法及系统

Also Published As

Publication number Publication date
CN110633083B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
US8806475B2 (en) Techniques for conditional deployment of application artifacts
CN110795649A (zh) 目标页面展示方法、装置、系统及电子设备
CN110895471A (zh) 安装包生成方法、装置、介质及电子设备
CN110716720A (zh) 一种实现应用热部署的方法和装置
CN113407165B (zh) Sdk的生成和自升级方法、装置、可读介质和设备
CN113760324A (zh) 构建微前端应用的方法和装置
CN110928571A (zh) 业务程序开发方法和装置
CN110795181A (zh) 基于跳转协议的应用程序界面展示方法、装置及电子设备
CN110688096A (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN115982491A (zh) 页面更新方法及装置、电子设备和计算机可读存储介质
CN110489162B (zh) 安装包so文件精简方法、装置、介质和设备
CN107678755B (zh) 安装包打包的方法、装置、电子设备和计算机可读介质
CN110633083B (zh) 代码文件处理方法、装置、电子设备及计算机可读介质
WO2023092580A1 (zh) 页面显示方法、装置、存储介质及电子设备
CN108845864B (zh) 一种基于spring框架的JVM垃圾回收方法和装置
CN112214250A (zh) 一种应用程序组件的加载方法和装置
CN112835568A (zh) 一种项目构建方法和装置
CN113094085A (zh) 组件集成方法、装置、计算机可读存储介质及电子设备
CN111367512B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
CN116700745A (zh) 基于容器云平台的应用部署方法、装置、电子设备和介质
US20150378688A1 (en) Developing rich internet application
US20180341475A1 (en) Just In Time Deployment with Package Managers
CN115080077A (zh) 插件更新方法、装置、电子设备、系统和存储介质
CN113760292A (zh) 开发应用程序的方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant