CN110941443B - 修改sdk中文件名的方法、装置及电子设备 - Google Patents

修改sdk中文件名的方法、装置及电子设备 Download PDF

Info

Publication number
CN110941443B
CN110941443B CN201911273604.2A CN201911273604A CN110941443B CN 110941443 B CN110941443 B CN 110941443B CN 201911273604 A CN201911273604 A CN 201911273604A CN 110941443 B CN110941443 B CN 110941443B
Authority
CN
China
Prior art keywords
file
sdk
file name
conflict
resource
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.)
Active
Application number
CN201911273604.2A
Other languages
English (en)
Other versions
CN110941443A (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.)
AlipayCom Co ltd
Original Assignee
AlipayCom 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 AlipayCom Co ltd filed Critical AlipayCom Co ltd
Priority to CN201911273604.2A priority Critical patent/CN110941443B/zh
Publication of CN110941443A publication Critical patent/CN110941443A/zh
Application granted granted Critical
Publication of CN110941443B publication Critical patent/CN110941443B/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/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了修改SDK中文件名的方法、装置及电子设备。方案包括:获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;修改所述冲突文件的文件名。

Description

修改SDK中文件名的方法、装置及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种修改SDK中文件名的方法、装置及电子设备。
背景技术
现有技术中,程序接入方有时候会多次接入服务输出方的一个软件开发工具包(Software Development Kit,SDK),另外,为了更好的服务,会不断的优化SDK,因此同一个SDK会有多个不同的版本。因此,当服务输出方在输出每个SDK时,都需要查看服务接入方是否已经接入该SDK,并确定已接入的版本是否与待接入的SDK相同。如果版本不同,则需要解决不同版本之间进行兼容的问题。
需要提供更快速的对于同一SDK的版本不兼容的解决方案。
发明内容
有鉴于此,本申请实施例提供了一种修改SDK中文件名的方法、装置及电子设备,用于提高程序接入的处理效率。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种修改SDK中文件名的方法,包括:
获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;
基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
修改所述冲突文件的文件名。
本说明书实施例提供的一种修改SDK中文件名的装置,包括:
第一获取模块,用于获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
第二获取模块,用于获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;
冲突文件确定模块,用于基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
文件名修改模块,用于修改所述冲突文件的文件名。
本说明书实施例提供的一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;
基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
修改所述冲突文件的文件名。
本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上述修改SDK中文件名的方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:在将第一SDK发送至程序接入端之前,首先获取程序接入端存储的第二SDK,第一SDK框和第二SDK的包名相同,然后对比第一SDK和第二SDK的中的文件的文件名是否相同。如果相同,就修改第一SDK的文件名,从而避免第一SDK在程序接入端中进行编译的时候,与第二SDK发生冲突的问题出现。上述方法可以有效的解决同一机器中存在两个不同版本的SDK,而发生版本冲突不兼容的问题,与现有技术中通过人为的升级软件低版本的解决方法相比,提高了程序接入的处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种修改SDK中文件名的方法的流程示意图;
图2为本说明书实施例提供的对应于图1的一种修改SDK中文件名的装置的结构示意图;
图3为本说明书实施例提供的对应于图1的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
当一个应用APP(程序接入方)需要接入另一个应用(服务输出方)的某项服务(如付款码服务)时,例如某个购物APP需要接入微信、支付宝等支付平台的支付码服务的时候,就需要调用服务输出方(微信、支付宝)提供的付款码服务的SDK,接入方的开发人员通过对付款码SDK进行解压后,学习该SDK的逻辑之后,就可以实现该SDK的功能。这项服务发生在应用的开发阶段,只有程序接入方成功接入了该项服务,程序接入方对应的应用APP才能够上线,并应用APP的注册用户使用。
但是,在一些情况下,服务输出方的开发平台的功能比较多,为了方便开发人员的编程,会把一些经常用到的实现基础功能的程序进行封装,生成基础SDK。开发人员在开发某项服务时,需要实现某项功能时只需调用这些基础SDK来实现即可,无需再重新进行编程。因此,一些服务除了主程序之后,还包括调用的多个基础SDK。随着发展,为了应对需求的改变,经常会对基础SDK进程升级。因此,在不同的时间段内,服务输出方输出的基础SDK的版本是不相同的。因此,在服务输出方在向程序接入方输出某项服务之前,假设该项服务包括登录SDK,假设程序接入方已经接入过登录SDK,而且,程序接入方已经接入的登录SDK是一个低版本,而服务输出方将要输出给程序接入方的登录SDK是高版本。如果直接将高版本的登录SDK直接输出至程序接入方,那么在编译的时候,就会出现不同版本不兼容的问题。
为了解决不同版本不兼容的问题,可以采用程序接入方和服务输出方的开发人员线下沟通的方法,将服务输出方的低版本升级到高版本之后,服务输出方再进行服务输出。这样操作的话,依赖于线下操作,过程繁琐,接入效率低下。
为了解决上述不同版本的SDK不兼容的问题,提高接入效率,本说明书实施例在将第一SDK发送至程序接入端之前,首先获取程序接入端存储的第二SDK,第一SDK和第二SDK的包名相同,然后对比第一SDK和第二SDK的中的文件的文件名是否相同。如果相同,就修改第一SDK文件中的文件名,从而避免第一SDK在程序接入端中进行编译的时候,与第二SDK发生冲突的问题出现。上述方法可以有效的解决同一机器中存在两个不同版本的SDK,而发生版本冲突不兼容的问题,与现有技术中通过人为的升级软件低版本的解决方法相比,提高了处理效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例提供的一种修改SDK中文件名的方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。该方案的执行主体是服务输出方的设备,可以是开发服务器也可以任意一个开发客户端。
如图1所示,该流程可以包括以下步骤:
步骤102:获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名。
SDK一般是一些软件工程师为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。因此一个具有特殊功能的SDK中会包括很多文件,而这些文件可以是调用的开发软件中的模块,如Java中的类库。
Java官方为开发者提供了很多功能强大的类,这些类被分别放在各个包中,随JDK一起发布,称为Java类库或Java API。API(Application Programming Interface,应用程序编程接口)是一个通用概念。
Java中的类库是开发人员已经开发好的模块,可以被其他开发者调用。从字面上理解,类库就像是一个仓库,仓库里有许多个已经开发好的类。因此,在某项服务时,经常会用到这些类。
第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名,这些文件名信息可以通过调用第一SDK来获取,也可以只调取与第一SDK中的文件的文件名相关的文件。假设,第一文件名信息存在于第一SDK的某个文件中,那么只需要获取该文件里的内容就可以。
在这个方案中,第一SDK可以是单独发送给程序接入端,也可以是与其他SDK共同发送给程序接入端,还可以是第一SDK与其他SDK进行打包后再发送给程序接入端。
需要说明的是,“第一文件名信息”中的“第一”和“第一SDK”中的“第一”只是用来进行区分,不具有实际的含义。
步骤104:获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名。
在确定需要发送至程序接入端的第一SDK之后,就需要确定程序接入端是否已经接入与第一SDK的包名相同的第二SDK。如果程序接入端已经接入了第二SDK,就需要判断第一SDK和第二SDK是否冲突。第一SDK和第二SDK的包名相同,即表示第一SDK和第二SDK实现的功能是相同或相近的。
第二文件名信息的获取方式可以是获取从程序接入端接入的第二SDK,然后从第二SDK中获取第二文件信息;还可以只根据第二SDK的包名和版本号从服务输出方,从服务输出方存储的第二SDK中的获取第二文件名信息,这样可以无需调用程序接入端的第二SDK,简化的操作。
步骤106:基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同。
由于是要修改第一SDK中的文件名,以避免存在与第二SDK相同的文件名,因此需要确定第一SDK中的冲突文件。冲突文件可以理解为如果第一SDK中的某个文件的文件名也同样存在与第二SDK中,那么该文件就可以称为冲突文件。
具体的筛选方法可以是将第一文件名信息对应的文件名和第二文件名信息对应的文件名一一进行比对,筛选出文件名相同的文件的文件名。比如,以第一文件名信息中的文件名作为比较的对象,对于文件名A,如果第二文件名信息中存在所述文件名A,那么文件名A对应的第一SDK中的文件即为冲突文件;如果第二文件名信息中不存在所述文件名A,那么文件名A对应的第一SDK中的文件就不是冲突文件。
步骤108:修改所述冲突文件的文件名。
确定了冲突文件,就需要将冲突文件的文件名进行修改,以使修改后的文件名与第二SDK的文件的文件名不存在相同的,以避免冲突。
为了与第二SDK中的文件进行区别,只需修改第一SDK中的文件名。对于文件名的修改,可以增加一些字符或字符串,加以区别。这些字符和字符串可以是随机生成的,也可是根据某些规则生成的。可以是没有实际意义的,也可是代表特殊含义的,可以根据文件名中的这些字符和字符串来获得一些特殊的信息。
图1中的方法,在将第一SDK发送至程序接入端之前,首先获取程序接入端存储的第二SDK,第一SDK框和第二SDK的包名相同,然后对比第一SDK和第二SDK的中的文件的文件名是否相同。如果相同,就修改第一SDK的文件名,从而避免第一SDK在程序接入端中进行编译的时候,与第二SDK发生冲突的问题出现。上述方法可以有效的解决同一机器中存在两个不同版本的SDK,而发生版本冲突不兼容的问题,与现有技术中通过人为的升级软件低版本的解决方法相比,提高了程序接入的处理效率。
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方式,下面进行说明。
在一些具体的场景中,在步骤102:获取第一文件名信息之前,还包括:
获取第一SDK的第一版本号信息;
根据所述第一SDK的包名确定所述第二SDK,所述第二SDK的包名与所述第一SDK的包名相同;
获取所述第二SDK的第二版本号信息;
基于所述第一版本号信息和所述第二版本号信息,判断所述第一SDK和所述第二SDK的版本是否相同,得到判断结果;
所述获取第一文件名信息,具体包括:
当所述判断结果表示当所述第一SDK和所述第二SDK的版本不同时,获取所述第一文件名信息。
在本实施例中,某个服务的实现往往会需要调用多个基础SDK,由于基础SDK一直在更新,每个服务的输出时间不同,导致选择的基础SDK的版本可能也不相同。因此,发生冲突的两个SDK有可能是一个SDK的两个不同版本。
因此,在确定了要输出的第一SDK之后,首先需要确定程序接入端是否已经接入与第一SDK的包名相同的SDK。确定的方法可以是由程序接入端主动提供的,或者在服务输出端会存在一张表格,记录每次发送至程序接入端的SDK的名字和版本号。如果程序接入端没有存储与第一SDK的包名相同的SDK,那么第一SDK发送至程序接入端之后,编译的时候不会发生冲突。如果确定程序接入端已经存储了与第一SDK的包名相同的第二SDK,就需要判断第一SDK和第二SDK的版本号是否相同。获取所述第二SDK的第二版本号信息可以由程序接入端提供,也可以从服务输出端存储的数据表里获取。
如果第一SDK的版本号和第二SDK的版本号相同,就说明程序接入端已经存储的第二SDK与第一SDK完全相同,编译的时候不会造成冲突。如果第一SDK的版本号和第二SDK的版本号不相同,就需要对会与第二SDK发生冲突的第一SDK中的文件进行修改。为了简化操作,只需要修改第二SDK中的文件的文件名即可,因此,只需获取第一SDK和第二SDK的文件名信息进行比对就可以找出发生冲突的文件。
为了与第二SDK中的文件进行区别,只需修改第一SDK中的文件名。对于文件名的修改,可以增加一些字符或字符串,加以区别。具体的,为了提高修改效率,所述修改所述冲突文件的文件名,具体包括:
在所述冲突文件原有的文件名中增加特定字符串,其中,当所述冲突文件为多个时,多个所述冲突文件的文件名增加的特定字符串相同。
Java类库中有很多包:
以java.*开头的是Java的核心包,所有程序都会使用这些包中的类;
以javax.*开头的是扩展包,x是extension的意思,也就是扩展。虽然javax.*是对java.*的优化和扩展,但是由于javax.*使用的越来越多,很多程序都依赖于javax.*,所以javax.*也是核心的一部分了,也随JDK一起发布。
以org.*开头的是各个机构或组织发布的包,因为这些组织很有影响力,它们的代码质量很高,所以也将它们开发的部分常用的类随JDK一起发布。
假设发生冲突的文件名为okio.A,其中,okio为工具包名(不能修改),A为类名。修改冲突文件的文件名,就是设置一个类映射关系,将okio.A映射到修改后的文件名,比如okio.custom.A,其中,custom为增加的字符串。
假设还有一个冲突文件的文件名为java.util.Date,其中,java.util为工具包名,Date为类名,那么修改后的文件名为java.util.custom.Date。因此,就做到了将所有冲突文件都加入一个特定的字符串,提高了修改效率。
为了准确对文件进行调用,在所述修改所述冲突文件的文件名之后,还包括:
根据修改后的所述冲突文件的文件名,修改对于所述冲突文件进行引用的程序语句。
在具体应用的时候,修改了文件名就是修改了文件名与文件的对应关系,因此,在对该文件调用的时候,对应的还要修改代码中对该文件进行调用的程序语句。具体操作是遍历所有class(代码)文件,替换类名和import引用。import只能导入包所包含的类,而不能导入包。
例如,原引用语句为:import java.util.Date;//导入java.util包下的Date;
修改后的应用语句为:import java.util.custom.Date;//导入java.util包下的custom.Date。
在一些具体的场景中,一个服务往往会需要多个基础SDK共同完成,因此,会发生多个基础SDK均发生冲突的情况,因此,需要对每一个基础SDK都进行确定是否与程序接入端存储的SDK发生冲突,然后一一对发生冲突的SDK的文件进行修改。然后再将多个SDK分别发送至程序接入端。
由于,多个SDK是分别输出的,程序接入端的开发人员在接收到多个SDK之后,就需要分别学习多个SDK的编程语言和编程逻辑。这无形中增加了接入方的接入成本,降低了接入效率。为了提高接入效率,本说明书实施例将对个SDK进行打包后,再进行输出,程序接入端的开发人员只需对打包后的SDK统一进行学习就可以了。
在本说明书的一个或多个实施例中,在所述修改对于所述冲突文件进行引用的程序语句之后,还包括:
确定需要发送给所述程序接入端的多个SDK,所述多个SDK和所述第一SDK用于共同实现第一服务;
将所述多个SDK和修改后的所述第一SDK进行封装,生成合并SDK;
将所述合并SDK发送至所述程序接入端。
在本实施例中,第一SDK和多个SDK是以打包的形式存在的,即是以二进制的形式存在的,因此在对多个SDK进行合并之前,首先对每个SDK进行解压,得到class(代码)文件和资源文件,属性文件等等,如R.java文件和manifest文件。首先对属性文件等进行合并,然后对多个class文件进行合并。然后将合并后的属性文件和class文件在进行编译,生成合并后的SDK,然后发送至程序接入端。
在本说明书实施例中,第一SDK和多个SDK可以采用Java语言进行编辑开发。Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储于class文件中。由于跨平台的需要,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。为了防止这种现象,可以使用Java混淆器对Java字节码进行混淆。
混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的情况下,即使被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。
混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因,编译后jar文件体积大约能减少25%,这对当前费用较贵的无线网络传输是有一定意义的。
本实施例将第一SDK和多个SDK进行打包后,统一进行混淆,避免了多个SDK采用多种混淆规则进行代码混淆的现象出现,提高了接入效率。
但是,在打包的时候需要解决多个SDK中资源文件的资源ID发生冲突的问题。为了解决上述问题,所述将所述多个SDK和修改后的所述第一SDK进行封装,具体包括:
获取所述第一SDK中资源文件的第一资源ID;
获取所述多个SDK中资源文件的第二资源ID;
基于所述第一资源ID和所述第二资源ID,确定资源ID相同的冲突资源文件;
修改所述冲突资源文件的资源ID,以使一个所述资源ID标识的资源文件是唯一的;
基于修改后的所述冲突资源文件的资源ID,修改对于所述冲突资源文件进行引用的程序语句;
将修改后的所述多个SDK和修改后的所述第一SDK进行封装。
资源文件会在编译过程中被打包进APK中(res文件夹)或者被打包成独立的资源APK包(比如framework-res.apk)。但是这些资源文件都会被赋予独一无二的ID即资源索引来方便***访问。其中,gen目录下的R.java文件是编译器自动生成的,它无需开发人员对其进行维护。R.java会自动收录当前应用中所有的资源文件,并根据这些资源文件建立对应的ID,包括:布局资源、控件资源、String资源、Drawable资源等。可以简单的把R.java理解成是当前Android应用的资源字典。
由于每个SDK中均包括一个R.java文件,R.java文件中的资源ID是自动生成的,由于包括多个R.java文件,只能保证在一个R.java文件中,不存在资源ID冲突的问题。但是,可能会存在一个资源ID存在于多个R.java文件中,也就是说,一个资源ID在不同的SDK中均有对应的资源文件,这样在通过该资源ID调用对应的资源文件的时候就会发生调用冲突。因此,需要修改该资源ID对应的多个资源文件的资源ID,以避免调用冲突的问题出现。
根据本方案的方法,如果发生资源ID冲突,首先需要确定多个SDK中发生资源ID冲突的资源文件,然后再对这些资源文件重新进行命名。重新命名可以设置一些特定的规则,这里不做具体限定。
确定资源ID相同的冲突资源文件。可以采取如下方法:对于任意一个资源ID,可以从所有SDK中的R.java文件中进行查找,看该资源ID一共出现了几次。如果只出现了一次,那么就可以说明该资源ID对应唯一的资源文件。如果该资源ID出现了的次数为两次或者大于两次,就说明该资源ID出现在多个R.java文件中。因此就需要对多个SDK中的R.java文件的与该资源ID相同的资源ID进行修改。
例如,一个资源ID“0x7f030000”对应多个资源文件a、b和c。其中,a位于SDK1中,b位于SDK2中,c位于SDK3中。为了避免资源文件调用冲突,可以只修改b和c的资源ID,如,b的资源ID可以修改为“0x7f030001”,c的资源ID可以修改为“0x7f030002”。也可以资源文件a、b和c都进行修改,如,b的资源ID可以修改为“0x7f030003”,b的资源ID可以修改为“0x7f030001”,c的资源ID可以修改为“0x7f030002”
为了准确对资源文件进行调用,所述根据所述编译文件中的资源ID修改所述多个软件开发工具包中的资源ID,还可以包括:
将所述多个SDK中的R.java文件中的资源ID替换为修改后的资源ID;
将所述软件开发工具包中的资源文件引用语句中的资源ID替换为修改后的资源ID。
在具体应用的时候,R.java文件中记载了资源文件与资源ID的对应关系,需要对R.java文件中资源ID进行修改,修改了R.java文件中的资源ID就是修改了资源文件与资源ID的对应关系。因此,为了能够准确对资源文件进行调用,对应的还要修改代码中对资源文件进行调用的程序语句。
例如,在java程序中引用资源文件,按照java的语法来引用即:R.resource_type.resource_name,注意:resource_name不需要文件的后缀名。如果资源文件的资源ID由“0x7f030000”修改为“0x7f030001”,那么资源文件的引用语句就需要由“R.resource_type.0x7f030000”修改为“0x7f030001”。
另外,由于多对第一SDK和多个SDK进行合并,但是不同的SDK中的Android组件可能运行在不同的进程中,因此在实现一个服务的时候,往往需要多个进程并行,从而浪费***资源。为了减少***资源的浪费,所述将所述多个SDK和修改后的所述第一SDK进行封装,还可以包括:
解压所述修改后的所述第一SDK,得到第一manifest文件;
解压所述多个SDK,得到多个第二manifest文件;
将所述第一manifest文件中的进程名以及所述多个第二manifest文件中的进程名修改为相同的进程名。
在Android***中,存在四大组件,分别为:有Activity(显示界面),Service(服务),Content ProvIDer(数据通信),BroadcastReceiver(广播)。
Activities是用户和应用程序交互的窗口,一个Activity相当于实际的一个网页,当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且被压入历史堆栈中,用户可以通过回退操作返回到以前打开过的屏幕。
Service是一种程序,它可以运行很长的时间,相当于后台的一个服务。Service组件运行时不可见,但它负责更新数据源和可见的Activity,以及触发通知。当你的Activity已经不处于激活状态或不可见时,它们常用来执行一些需要持续运行的处理。
Content ProvIDer是内容提供者,提供共享的数据存储。可用来管理和共享应用程序的数据库,可通过它来共享自己的数据给外部调用,给第三方应用数据访问的接口。
Broadcast Receiver:接收一种或者多种Intent作为触发时间,接收相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。通过创建和注册一个Broadcast Receiver,应用程序可以监听符合特定条件的广播的Intent。BroadcastReceiver会自动的启动你的Android应用程序去响应新来的Intent。
Android***中的manifest文件可以理解为应用清单,每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了SDK的配置信息,***需要根据里面的内容运行SDK的代码,显示界面。
manifest文件主要有以下作用:
1、为应用的Java软件包命名。软件包名称充当应用的唯一标识符。这就是我们的apk的名字,通常我们的名字都是类似"com.Android.gles3jni"这种,和Java类名类似,目的是确定使其成为一个唯一值。
2、描述应用的各个组件,包括构成应用的Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,例如它们可以处理的Intent消息。这些声明向Android***告知有关组件以及可以启动这些组件的条件的信息。
3、确定托管应用组件的进程。
4、声明应用必须具备哪些权限才能访问API中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限
5、列出Instrumentation类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。
6、声明应用所需的最低Android API级别
7、列出应用必须链接到的库。
因此,想要修改进程名,就需要得到每个SDK的manifest文件。在本实施例中,调用的SDK是以打包的形式存在的,因此需要首先对SDK进行解压,得到manifest文件。然后,将所有manifest文件里面的进程名均修改为相同的进程名,然后再将所有manifest文件进行合并。这样,打包后的SDK在编译运行时,只需要建立一个进程就可以完成,无需建立多个进程,从而减少了***资源的浪费。
对于进程名的修改,可以采用原来就有的进程名,也可以采用新的进程名。
在本说明书的一个或者多个实施例中,将所述第一manifest文件中的进程名以及所述多个第二manifest文件中的进程名修改为相同的进程名,具体可以包括:
获取所述第一manifest文件中的多个进程名和所述多个第二manifest文件中的多个进程名;
确定主进程名,所述主进程名为所述第一manifest文件中的多个进程名中的一个,或者,所述主进程名为所述多个第二manifest文件中的多个进程名中的一个;
将所述第二manifest文件中的多个进程名修改为所述主进程名;
将所述多个第二manifest文件中的多个进程名修改为所述主进程名。
上述的实施例中,提供了一种修改manifest文件中进程名的方法,可以随机的选择第一manifest文件中的多个进程名中的一个,或者,所述多个第二manifest文件中的多个进程名中的一个作为主进程名。然后在将所述第一manifest文件中的多个进程名和所述多个第二manifest文件中的多个进程名全部修改为主进程名。
需要注意的是,一个manifest文件中可能存在多个进程名,这是因为一个SDK可能包括多个Android的组件,而不同的组件也可能运行在不同的进程中。因此,需要对一个manifest文件中的多个进程名全部进行修改。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图2为本说明书实施例提供的对应于图1的一种修改SDK中文件名的装置的结构示意图。如图2所示,该装置可以包括:
第一获取模块201,用于获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
第二获取模块202,用于获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;
冲突文件确定模块203,用于基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
文件名修改模块204,用于修改所述冲突文件的文件名。
图2的装置,在将第一SDK发送至程序接入端之前,首先获取程序接入端存储的第二SDK,第一SDK框和第二SDK的包名相同,然后对比第一SDK和第二SDK的中的文件的文件名是否相同。如果相同,就修改第一SDK的文件名,从而避免第一SDK在程序接入端中进行编译的时候,与第二SDK发生冲突的问题出现。上述方法可以有效的解决同一机器中存在两个不同版本的SDK,而发生版本冲突不兼容的问题,与现有技术中通过人为的升级软件低版本的解决方法相比,提高了程序接入的处理效率。
可选的,在所述获取第一文件名信息之前,所述装置还可以包括:
第一版本获取模块,用于获取第一SDK的第一版本号信息;
第二SDK确定模块,用于根据所述第一SDK的包名确定所述第二SDK,所述第二SDK的包名与所述第一SDK的包名相同;
第二版本获取模块,用于获取所述第二SDK的第二版本号信息;
判断模块,用于基于所述第一版本号信息和所述第二版本号信息,判断所述第一SDK和所述第二SDK的版本是否相同,得到判断结果;
所述第一获取模块201,具体可以用于:当所述判断结果表示当所述第一SDK和所述第二SDK的版本不同时,获取所述第一文件名信息。
可选的,所述装置还可以包括:
引用语句修改模块,用于根据修改后的所述冲突文件的文件名,修改对于所述冲突文件进行引用的程序语句。
可选的,所述文件名修改模块204,具体可以用于:在所述冲突文件原有的文件名中增加特定字符串,其中,当所述冲突文件为多个时,多个所述冲突文件的文件名增加的特定字符串相同。
可选的,所述装置还可以包括:
多个SDK确定模块,用于确定需要发送给所述程序接入端的多个SDK,所述多个SDK和所述第一SDK用于共同实现第一服务;
封装模块,用于将所述多个SDK和修改后的所述第一SDK进行封装,生成合并SDK;
发送模块,用于将所述合并SDK发送至所述程序接入端。
可选的,所述封装模块,具体可以包括:
第一资源ID单元,用于获取所述第一SDK中资源文件的第一资源ID;
第二资源ID单元,用于获取所述多个SDK中资源文件的第二资源ID;
冲突资源文件确定单元,用于基于所述第一资源ID和所述第二资源ID,确定资源ID相同的冲突资源文件;
资源ID修改单元,用于修改所述冲突资源文件的资源ID,以使一个所述资源ID标识的资源文件是唯一的;
引用语句修改单元,用于基于修改后的所述冲突资源文件的资源ID,修改对于所述冲突资源文件进行引用的程序语句;
封装单元,用于将修改后的所述多个SDK和修改后的所述第一SDK进行封装。
可选的,所述封装模块,还可以包括:
第一解压单元,用于解压所述修改后的所述第一SDK,得到第一manifest文件;
第二解压单元,用于解压所述多个SDK,得到多个第二manifest文件;
进程名修改单元,用于将所述第一manifest文件中的进程名以及所述多个第二manifest文件中的进程名修改为相同的进程名。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图3为本说明书实施例提供的对应于图1的一种电子设备的结构示意图。如图3所示,设备300可以包括:
至少一个处理器310;以及,
与所述至少一个处理器通信连接的存储器330;其中,
所述存储器330存储有可被所述至少一个处理器310执行的指令320,所述指令被所述至少一个处理器310执行,以使所述至少一个处理器310能够:
获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;
基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
修改所述冲突文件的文件名。
图3的电子设备,在将第一SDK发送至程序接入端之前,首先获取程序接入端存储的第二SDK,第一SDK框和第二SDK的包名相同,然后对比第一SDK和第二SDK的中的文件的文件名是否相同。如果相同,就修改第一SDK的文件名,从而避免第一SDK在程序接入端中进行编译的时候,与第二SDK发生冲突的问题出现。上述方法可以有效的解决同一机器中存在两个不同版本的SDK,而发生版本冲突不兼容的问题,与现有技术中通过人为的升级软件低版本的解决方法相比,提高了程序接入的处理效率。
本说明书实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上述的修改SDK中文件名的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种修改SDK中文件名的方法,包括:
获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;所述第一SDK与所述第二SDK的包名相同;
基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件表示为经过所述第一文件名信息对应的文件名与所述第二文件名信息对应的文件名进行比对,筛选出文件名相同文件的文件名得到;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
修改所述冲突文件的文件名,具体包括:在所述冲突文件原有的文件名中增加特定字符串;
设置映射关系,将所述冲突文件原有的文件映射到修改后的文件;
所述方法还包括:
确定需要发送给所述程序接入端的多个SDK,所述多个SDK和所述第一SDK用于共同实现第一服务;
将所述多个SDK和修改后的所述第一SDK进行封装,生成合并SDK;
将所述合并SDK发送至所述程序接入端。
2.如权利要求1所述的方法,在所述获取第一文件名信息之前,还包括:
获取第一SDK的第一版本号信息;
根据所述第一SDK的包名确定所述第二SDK,所述第二SDK的包名与所述第一SDK的包名相同;
获取所述第二SDK的第二版本号信息;
基于所述第一版本号信息和所述第二版本号信息,判断所述第一SDK和所述第二SDK的版本是否相同,得到判断结果;
所述获取第一文件名信息,具体包括:
当所述判断结果表示当所述第一SDK和所述第二SDK的版本不同时,获取所述第一文件名信息。
3.如权利要求1所述的方法,所述修改所述冲突文件的文件名,具体包括:
在所述冲突文件原有的文件名中增加特定字符串,其中,当所述冲突文件为多个时,多个所述冲突文件的文件名增加的特定字符串相同。
4.如权利要求1所述的方法,在所述修改所述冲突文件的文件名之后,还包括:
根据修改后的所述冲突文件的文件名,修改对于所述冲突文件进行引用的程序语句。
5.如权利要求1所述的方法,所述将所述多个SDK和修改后的所述第一SDK进行封装,具体包括:
获取所述第一SDK中资源文件的第一资源ID;
获取所述多个SDK中资源文件的第二资源ID;
基于所述第一资源ID和所述第二资源ID,确定资源ID相同的冲突资源文件;
修改所述冲突资源文件的资源ID,以使一个所述资源ID标识的资源文件是唯一的;
基于修改后的所述冲突资源文件的资源ID,修改对于所述冲突资源文件进行引用的程序语句;
将修改后的所述多个SDK和修改后的所述第一SDK进行封装。
6.如权利要求5所述的方法,所述将所述多个SDK和修改后的所述第一SDK进行封装,还包括:
解压所述修改后的所述第一SDK,得到第一manifest文件;
解压所述多个SDK,得到多个第二manifest文件;
将所述第一manifest文件中的进程名以及所述多个第二manifest文件中的进程名修改为相同的进程名。
7.一种修改SDK中文件名的装置,包括:
第一获取模块,用于获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
第二获取模块,用于获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;所述第一SDK与所述第二SDK的包名相同;
冲突文件确定模块,用于基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;所述冲突文件表示为经过所述第一文件名信息对应的文件名与所述第二文件名信息对应的文件名进行比对,筛选出文件名相同文件的文件名得到;
文件名修改模块,用于修改所述冲突文件的文件名;在所述冲突文件原有的文件名中增加特定字符串;设置映射关系,将所述冲突文件原有的文件映射到修改后的文件;
确定模块,用于确定需要发送给所述程序接入端的多个SDK,所述多个SDK和所述第一SDK用于共同实现第一服务;
生成模块,用于将所述多个SDK和修改后的所述第一SDK进行封装,生成合并SDK;
发送模块,用于将所述合并SDK发送至所述程序接入端。
8.一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取第一文件名信息;所述第一文件名信息用于表示需要发送给程序接入端的第一SDK中的文件的文件名;
获取第二文件名信息;所述第二文件名信息用于表示所述程序接入端已存储的第二SDK中的文件的文件名;所述第一SDK与所述第二SDK的包名相同;
基于所述第一文件名信息与所述第二文件名信息,确定所述第一SDK中的冲突文件;所述冲突文件表示为经过所述第一文件名信息对应的文件名与所述第二文件名信息对应的文件名进行比对,筛选出文件名相同文件的文件名得到;所述冲突文件的文件名与所述第二SDK中的文件的文件名相同;
修改所述冲突文件的文件名,具体包括:
在所述冲突文件原有的文件名中增加特定字符串;
设置映射关系,将所述冲突文件原有的文件映射到修改后的文件;
确定需要发送给所述程序接入端的多个SDK,所述多个SDK和所述第一SDK用于共同实现第一服务;
将所述多个SDK和修改后的所述第一SDK进行封装,生成合并SDK;
将所述合并SDK发送至所述程序接入端。
9.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至6中任一项所述的修改SDK中文件名的方法。
CN201911273604.2A 2019-12-12 2019-12-12 修改sdk中文件名的方法、装置及电子设备 Active CN110941443B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911273604.2A CN110941443B (zh) 2019-12-12 2019-12-12 修改sdk中文件名的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911273604.2A CN110941443B (zh) 2019-12-12 2019-12-12 修改sdk中文件名的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110941443A CN110941443A (zh) 2020-03-31
CN110941443B true CN110941443B (zh) 2023-03-17

Family

ID=69910901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911273604.2A Active CN110941443B (zh) 2019-12-12 2019-12-12 修改sdk中文件名的方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110941443B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552510B (zh) * 2020-04-24 2023-05-02 北京字节跳动网络技术有限公司 文件构建方法及装置、电子设备、计算机可读存储介质
CN111858500A (zh) * 2020-08-05 2020-10-30 北京酷豹科技有限公司 电子图像的命名方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5600834A (en) * 1993-05-14 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Method and apparatus for reconciling different versions of a file
US6564369B1 (en) * 1998-08-20 2003-05-13 Pearson Technical Software, Inc. Conflict checking using configuration images
JP2013186779A (ja) * 2012-03-09 2013-09-19 Nec Corp 情報処理装置およびプログラム実行方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591418B2 (en) * 1999-03-26 2003-07-08 Dell U.S.A., L.P. Factory software management system
CN105574000B (zh) * 2014-10-08 2019-11-05 中兴通讯股份有限公司 扩展apk文件应用的方法及装置
CN109542445A (zh) * 2017-08-01 2019-03-29 北京京东尚科信息技术有限公司 一种Android插件化开发的方法和装置
CN107589947A (zh) * 2017-08-02 2018-01-16 成都极娱网络科技有限公司 一种sdk接入方法、客户端及***
CN107844301A (zh) * 2017-12-12 2018-03-27 苏州蜗牛数字科技股份有限公司 一种安卓应用渠道合包方法及装置
CN108037927B (zh) * 2017-12-29 2020-10-30 有米科技股份有限公司 开发包打包方法、***、可读存储介质和计算机设备
CN109683954A (zh) * 2018-12-29 2019-04-26 北京小米移动软件有限公司 lib库集成方法、装置及存储介质
CN110457045B (zh) * 2019-08-16 2023-05-16 百度在线网络技术(北京)有限公司 组件化合并编译方法、装置、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5600834A (en) * 1993-05-14 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Method and apparatus for reconciling different versions of a file
US6564369B1 (en) * 1998-08-20 2003-05-13 Pearson Technical Software, Inc. Conflict checking using configuration images
JP2013186779A (ja) * 2012-03-09 2013-09-19 Nec Corp 情報処理装置およびプログラム実行方法

Also Published As

Publication number Publication date
CN110941443A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
CN107545030B (zh) 数据血缘关系的处理方法、装置及设备
CN106605212B (zh) 在动态链接的运行时环境中的模块化共同版本管理
CN110502222B (zh) 外发依赖内部基础库的aar方法、装置、介质和设备
CN107092475B (zh) 一种交互控件的调用方法及装置
CN111782300B (zh) 一种数据处理方法、装置、设备及***
CN107038041B (zh) 数据处理方法、错误码动态兼容方法、装置和***
CN110007920B (zh) 一种获取代码依赖关系的方法、装置及电子设备
CN109947643B (zh) 一种基于a/b测试的实验方案的配置方法、装置及设备
CN108829467B (zh) 第三方平台对接实现方法、装置、设备及存储介质
CN108595246B (zh) 一种运行应用的方法、装置及设备
CN108170430B (zh) 一种界面展示的方法及***
CN111400681B (zh) 数据权限处理方法、装置及设备
CN112817657B (zh) 一种应用程序启动项加载方法、装置、***及存储介质
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN110941443B (zh) 修改sdk中文件名的方法、装置及电子设备
CN111399840A (zh) 一种模块开发方法及装置
CN114547024A (zh) 一种sql语句风险检测方法、装置、设备及介质
CN111090425B (zh) 一种程序封装方法、装置及电子设备
CN106156050B (zh) 一种数据处理方法及装置
CN106775916B (zh) 减小应用安装包的方法、装置及电子设备
CN112905271A (zh) 一种应用程序接口api的调用方法、装置及电子设备
CN109409037B (zh) 一种数据混淆规则的生成方法、装置及设备
CN106778270B (zh) 一种恶意应用程序的检测方法及***
CN107451050B (zh) 函数获取方法和装置、服务器
CN113835748B (zh) 基于html5的应用程序的打包方法、***和可读介质

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
TA01 Transfer of patent application right

Effective date of registration: 20230110

Address after: 200120 Floor 15, No. 447, Nanquan North Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant after: Alipay.com Co.,Ltd.

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant before: Alipay (Hangzhou) Information Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant