CN116009959B - Flash项目的移植方法、装置、系统及存储介质 - Google Patents
Flash项目的移植方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN116009959B CN116009959B CN202310080215.8A CN202310080215A CN116009959B CN 116009959 B CN116009959 B CN 116009959B CN 202310080215 A CN202310080215 A CN 202310080215A CN 116009959 B CN116009959 B CN 116009959B
- Authority
- CN
- China
- Prior art keywords
- target
- item
- flash
- library
- code
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000006243 chemical reaction Methods 0.000 claims abstract description 98
- 230000006870 function Effects 0.000 claims description 64
- 230000005012 migration Effects 0.000 claims description 26
- 238000013508 migration Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000013144 data compression Methods 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 7
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000002054 transplantation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000272875 Ardeidae Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种Flash项目的移植方法、装置、系统及存储介质,所述方法包括:在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度;根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码;调用所述目标项目与所述Flash项目功能对应的功能接口;将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;根据所述Flash项目的通用库获取所述目标项目对应的目标库;将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目。本发明能够提高Flash项目移植至新平台的移植效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种Flash项目的移植方法、装置、系统及存储介质。
背景技术
目前的市场上存在大量的使用Flash技术开发的网页,然而由于Flash技术存在一些无法解决的安全和效率问题,Chrome等主流浏览器以及使用Chrome内核的其他浏览器已经放弃了对Flash的支持,如果对Flash网页重新进行开发,需要耗费大量的人力物力,所以需要一种能够利用原有Flash逻辑代码和资源数据的技术,将原Flash网页低成本、快速地移植到Html5网页平台。
现有技术中只能通过一些零散的工具,将AS代码转化为TS代码,或将Flash使用的数据文件Fla导出,然而现有的转换工具版本老旧,存在大量Bug,导致移植后的代码无法编译运行,或破解导出后的资源无法使用,因此移植效率低下,无法满足现有的Flash项目移植到Html5平台的需求。
发明内容
本发明实施例提供一种Flash项目的移植方法、装置、系统及存储介质,能够提高Flash项目移植至新平台的移植效率。
本发明一实施例提供了一种Flash项目的移植方法,包括:
在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度;
根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码;
调用所述目标项目与所述Flash项目功能对应的功能接口;
将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
根据所述Flash项目的通用库获取所述目标项目对应的目标库;
将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目。
作为上述方案的改进,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,包括:
当所述结构区分度大于预设的区分阈值时,将所述引用库的库代码添加至所述第一目录下,并对所述第一目录下的工程代码和库代码同时进行代码转换,得到所述目标项目对应的目标代码;
当所述结构区分度不大于所述区分阈值时,对所述第一目录下的工程代码进行代码转换,根据所述工程代码的转换结果适应性修改所述库代码,根据所述工程代码的转换结果和所述库代码的修改结果得到所述目标项目对应的目标代码。
作为上述方案的改进,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,还包括:
识别所述工程代码中的包名;
根据所述包名的数据类型对所述包名进行重定义,得到所述目标代码。
作为上述方案的改进,所述调用所述目标项目与所述Flash项目功能对应的功能接口,包括:
当所述目标项目的目标引擎中存在与所述Flash项目功能对应的数据接口时,生成接口对应表,根据所述接口对应表调用所述数据接口作为所述功能接口;
当所述目标项目的目标引擎中不存在与所述Flash项目功能对应的数据接口时,在中间层搭建所述目标引擎与所述Flash项目功能对应的数据接口,并调用所述数据接口作为所述功能接口。
作为上述方案的改进,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件,包括:
通过预设的图集整合工具,将所述源资源文件中的若干张零散图片合并为贴图集;
将整合完成的所述贴图集加入所述目标资源文件。
作为上述方案的改进,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件之后,还包括:
将所述目标资源文件中的媒体文件进行重打包,得到包文件,其中,所述媒体文件包括图素文件、音效文件中的至少一种;
在所述目标项目执行时,通过预设的加载引擎加载所述包文件,以在所述目标项目中读取所述媒体文件。
作为上述方案的改进,所述将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目之后,还包括:
获取版本发布数据,对所述版本发布数据进行数据压缩,得到版本发布文件;
将所述版本发布文件输出至所述目标项目的发布目录中。
本发明另一实施例对应提供了一种Flash项目的移植装置,包括:
代码迁移模块,用于在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
区分度获取模块,用于获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度;
代码转换模块,用于根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码;
接口调用模块,用于调用所述目标项目与所述Flash项目功能对应的功能接口;
资源转换模块,用于将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
目标库生成模块,用于根据所述Flash项目的通用库获取所述目标项目对应的目标库;
数据移植模块,用于将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目。
本发明另一实施例提供了一种Flash项目的移植系统,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的Flash项目的移植方法。
本发明另一实施例提供了一种存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的Flash项目的移植方法。
相比于现有技术,在本发明实施例中,通过目录结构的区分度进行代码转换,提高了转换后不同功能代码的可分离性,提高了代码移植效率;通过单独对代码、源资源文件和通用库进行适应性转换,以及对应性地调用功能接口,将完整的Flash项目进行拆分转换,提高了转换效率,并在拆分转换时能够对各个转换环节中出现的问题进行单独分析处理,提高了转换问题处理效率;通过对单独转换得到的目标代码、功能接口、目标资源文件和目标库整合移植至对应的目标项目,形成了一条完整的移植链,提高了Flash项目移植至新平台的完整性,避免了重新开发带来的人力和物力损耗。
附图说明
图1是本发明一实施例提供的一种Flash项目的移植方法的流程示意图;
图2是本发明一实施例提供的一种Flash项目的移植装置的结构示意图;
图3是本发明一实施例提供的一种Flash项目的移植系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种Flash项目的移植方法的流程示意图,包括步骤S101至步骤S107:
S101、在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
具体地,在代码转换时,在Flash\Test目录下创建第一目录Peak+Dnk;将Peak工程代码copy至Peak+Dnk目录下,以便于转换工具或转换插件定位转换目标,确保了转换目标定位的准确性。
S102、获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度;
具体地,Flash项目通常会引用Flex、Dnk等外部库,本实施例以Dnk引用库为例,首先识别Dnk引用库所在的Flash\Test\Dnk合并\src目录下的所有数据,由于目标项目中,需要对Peak工程代码和Dnk引用库代码进行分离才能正常运行,因此在代码转换前,需要计算Dnk引用库与Peak工程代码所在的第一目录之间的结构区分度,当结构区分度较大时,才能够进行合并转换。
具体地,可以根据目录分级和数量等数据计算第一目录和Dnk目录结构之间的重叠度,当重叠度大于预设的阈值时,判定为结构区分度较低,当重叠度不大于预设的阈值时,判定为结构区分度较高。举例而言,可以先判断目录分级是否相同,再判断该分级下的目录数量是否相同,如果均相同则认为该目录分级重叠,根据重叠的目录分级占总的目录分级的比例计算得到重叠度,将重叠度与阈值进行比较。其中,判断目录分级是否相同的方式可以是判断该目录分级的名称是否一致,例如是否都为src目录;也可以是判断该目录分级在总目录中的位置是否一致,例如是否都处在一级目录中;当然也可以是既判断名称是否相同,也判断位置是否相同。本申请中并不具体限定判断结构区分度的方法,本领域技术人员可以根据实际需要采用能够判断结构区分度的具体方案,在确定结构区分度后再根据结构区分度进行下一步。
S103、根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码;
具体地,当结构区分度较高时,转换后的Peak工程代码容易与Dnk库代码分离,因此可以合并后再进行同步转换,简化了转换流程,提高了转换效率;当结构区分度较低时,转换后的Peak工程代码难以与Dnk库代码分离,此时可以选择跳过合并步骤,对二者进行单独转换,从而避免转换后的代码无法分离,导致目标项目无法成功运行的问题。
具体地,上述工程代码和库代码为AS3(ActionScript 3.0)代码,当目标项目为Html5项目时,上述目标代码可以为TS(TypeScript)代码,可以通过EgretConversion工具将AS3代码批量转换为TS代码。
需要说明的是,Flash项目中的工程代码和库代码采用的是AS3代码是本实施例中一种优选的方式,在具体的实施方式中,可以根据不同的Flash项目设置不同的工程代码和库代码;此外,转换的目标代码为TS代码也是本实施例中一种优选的方式,在具体的实施方式中,也可以根据不同的目标项目将对应的项目代码设置为目标代码,在此不做具体限定。
S104、调用所述目标项目与所述Flash项目功能对应的功能接口;
具体地,由于Flash项目中使用了Flash的系统底层功能,包括显示图像、播放声音、文件读取,鼠标键盘输入等,而目标项目中使用的引擎往往与Flash项目接口无法直接移植,例如Egret引擎等H5引擎,因此在移植之前需要进行接口调用对应,提高Flash项目移植的完整性,避免移植后的项目无法正确调用功能接口。
S105、将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
具体地,Fla文件是Flash常使用的源资源文件,可以用Flash提供的原生工具打开并导出,但很多年代久远的Flash项目已经无法找到Fla文件,此时可以采用EgretConversion工具批量的导出SWF文件中的图片、动画、声音等源资源文件,并以目标项目可以使用的方式对源资源文件进行组织,得到目标资源文件。
S106、根据所述Flash项目的通用库获取所述目标项目对应的目标库;
具体地,由于部分Flash项目中使用的通用代码库,在目标项目中并不存在或者使用方法有差异,因此需要在移植之前单独生成对应的库,该库与作为目标项目的目标库,其中,通用代码库包括字典、XML文件等。
具体地,目标库可以由通用代码库经过代码转换工具转换得到,也可以由开发人员自定义设置得到,在此不做具体限定。
S107、将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目;
具体地,本实施例以Html5项目作为目标项目进行示例性说明:安装Svn客户端作为移植环境,从安装目录下获取Subversion客户端的全部代码;安装Chrome浏览器等支持Html5项目的平台;安装工具包中的EgretEngine-v3.0.5、EgretConversion工具,以及EgretConversion工具的开发环境;安装Bcompare工具以便于进行不同代码文件的数据差异比对;安装EgretInspector工具进行UI调试;编译EgretConversion工具的工程并编译运行FlashBuilder工程;使用EgretConversion工具进行AS代码和SWF文件转换;执行上述的功能接口调用和目标库获取等步骤,在编译运行无错误后提交至Subversion客户端,通过Subversion客户端发布Html5项目至Chrome浏览器,从而实现了Flash项目移植至Html5项目平台,并确保了移植的完整性,以及移植后的项目的可执行性。
在本实施例中,优选地,根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,包括:
当所述结构区分度大于预设的区分阈值时,将所述引用库的库代码添加至所述第一目录下,并对所述第一目录下的工程代码和库代码同时进行代码转换,得到所述目标项目对应的目标代码;
当所述结构区分度不大于所述区分阈值时,对所述第一目录下的工程代码进行代码转换,根据所述工程代码的转换结果适应性修改所述库代码,根据所述工程代码的转换结果和所述库代码的修改结果得到所述目标项目对应的目标代码。
具体地,当结构区分度大于预设的区分阈值,即结构区分度较高时,将Dnk库代码copy至第一目录下,并对第一目录下的代码进行同步转换,此时EgretConversion工具能够识别Dnk库代码中的包名,并且与Peak工程代码一同修改,减少转换后包名带来的编译错误。需要注意的是,最终提取的Peak工程代码需要将文件数,目录数和原Flash项目的对应的代码进行比较,当文件数,目录数完全一致时,表示转换成功,否则需要执行重新转换或检查编辑错误等操作。
具体地,当结构区分度不大于预设的区分阈值,即结构区分度较低时,单独对第一目录下的Peak工程代码进行代码转换,由于代码转换后,部分包名与转换之前存在不同,此时转换后的Peak工程代码与Dnk库代码之间会存在大量的包名识别错误,因此需要对Dnk库代码进行适应性修改,将原包名替换为的Peak工程代码可识别的包名,从而避免代码转换后目标项目无法运行的问题。
具体地,在代码转换时,可以创建一个临时的第二目录H5\ECTest\Test-Peak,使用EgretConversion工具新建转换工程Test-Peak,转换源是第一目录Flash\Test\Peak+Dnk,转换目标是第二目录H5\ECTest\Test-Peak。在使用EgretConversion工具执行代码转换时,先将第一目录下的代码转换至H5\ECTest\DAW-DnkAddBaseLib\DAW-DnkAddBaseLib\src转换目录下,再确认转换是否存在错误;转换错误包含中断错误和不中断错误,其中,中断错误是指转换由于报错而中断,此时需要根据错误日志对导致中断的文件进行修正,不中断错误是指报错但未中断,此时根据EgretConversion工具中的文件转换率分类页,查看报错文件,根据文件类型进行执行相应的错误修正,在完成修正后,将转换目录下已处理完转换错误的代码copy至第二目录的H5\ECTest\Test-Peak\Test-Peak\src目录下。若第一目录下包含Dnk库代码,则第二目录中能够得到的是完整的Peak工程+Dnk库代码,此时可以直接执行下一步骤,处理编译问题;若第一目录下不包含Dnk库代码,除转换目录下已处理完转换错误的代码外,还需将适应性修改后的Dnk库代码一同copy至第二目录的H5\ECTest\Test-Peak\Test-Peak\src目录下,再执行下一步骤,处理编译问题。
具体地,可以使用EgretWing工具打开第二目录下的Test-Peak工程处理编译问题,确保转换后的代码能够正常运行,编译正常后的代码即可作为目标项目对应的目标代码,再将不同的工程代码移动至各自对应的目标项目目录下;例如,提取Peak工程代码,单独copy至目标项目的资源目录DAW/src目录下。
具体地,可以使用Bcompare工具提取转换后的代码,设定比较目录和待比较目录,比较上述二者之间的差异,并将比较目录中的独有的文件和文件夹等数据copy至待比较目录。
需要说明的是,上述目录命名方式是本实施例中一种优选的方式,在具体的实施方式中,可以根据不同的项目实际情况自定义目录的实际名称,在此不做具体限定。
在本实施例中,优选地,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,还包括:
识别所述工程代码中的包名;
根据所述包名的数据类型对所述包名进行重定义,得到所述目标代码。
具体地,由于Peak工程中AS代码和目标代码在语言特性、编译器实现上的差异,批量转化后会产生一些问题,例如包名不能识别。因此,本实施例将静态变量的包名定义为_var_testX,用于类继承的基类以及静态变量的引用,将声明类型的包名定义为type_testX,用于声明变量,将全局访问对象定义为Import AAA=test1.test2.AAA,使得AAA成为能够直接访问的全局对象。在重定义后,包名能够被正确识别,不会提前调用构造和get函数,并且能够正确的返回类名,进一步提高了代码转换的准确性。
具体地,上述包名重定义可以通过预设的替换函数或插件进行批量替换,也可以通过开发人员进行自定义调整。
在本实施例中,优选地,所述调用所述目标项目与所述Flash项目功能对应的功能接口,包括:
当所述目标项目的目标引擎中存在与所述Flash项目功能对应的数据接口时,生成接口对应表,根据所述接口对应表调用所述数据接口作为所述功能接口;
当所述目标项目的目标引擎中不存在与所述Flash项目功能对应的数据接口时,在中间层搭建所述目标引擎与所述Flash项目功能对应的数据接口,并调用所述数据接口作为所述功能接口。
示例性地,Flash系统底层中有大量的系统接口,包括显示图像、播放声音、文件读取,鼠标键盘输入等,而在目标引擎,例如Egret等H5引擎中,并没有直接的对应接口,例如下述接口:
Flash.BitmapData.getColorBoundsRect
Flash.BitmapData.fillRect
Flash.BitmapData.setPixel
Flash.BitmapData.copyPixels
Flash.BitmapData.draw2
因此,可以通过接口对应表或中间层建立所需的功能接口,从而实现项目移植后的功能对接,进一步确保了目标项目的可执行性。
在本实施例中,优选地,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件,包括:
通过预设的图集整合工具,将所述源资源文件中的若干张零散图片合并为贴图集;
将整合完成的所述贴图集加入所述目标资源文件。
具体地,在SWF等源资源文件转换后,形成了大量的图素文件,这样会导致目标项目加载时产生大量的网络文件加载请求,甚至会导致网络阻塞,降低资源加载效率。因此,本实施例采用将大量同一帧中显示的图素放置在同一个贴图集中的方式进行加载优化。
示例性地,采用图集整合工具TextureMerger,将源资源文件中零散的单张图片合并成一张大图,该大图即为上述贴图集。通过合并为贴图集的方式,能够减少纹理重绘的次数(draw call),减少项目在执行时加载网络图片的次数,优化目标项目的渲染性能。在此基础上,还能够实现图片的压缩处理,即采用图像压缩工具,将指定贴图集的体积压缩到原体积的30%以下,从而进一步降低资源大小,提高加载效率。优选地,上述图像压缩工具可以为在线图像压缩工具TinyPNG。
在本实施例中,优选地,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件之后,还包括:
将所述目标资源文件中的媒体文件进行重打包,得到包文件,其中,所述媒体文件包括图素文件、音效文件中的至少一种;
在所述目标项目执行时,通过预设的加载引擎加载所述包文件,以在所述目标项目中读取所述媒体文件。
具体地,使用批处理命令将使用EgretConversion工具转化得到的目标资源文件重新打包一次,从而减少网络传输的文件请求数量,提高网络传输效率。
具体地,当某个源资源文件或某些源资源文件需要单独修改,则可以在重新转换为目标资源文件后进行单独打包。优选地,可以采用7-Zip工具对上述源资源文件重新打包,在具体的实施方式中,可以将压缩方法选为Deflate,压缩格式选为zip,文件保存格式选为swf,以使得单独修改后的源资源文件与其他源资源文件的格式统一。
在本实施例中,优选地,所述将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目之后,还包括:
获取版本发布数据,对所述版本发布数据进行数据压缩,得到版本发布文件;
将所述版本发布文件输出至所述目标项目的发布目录中。
具体地,版本发布可以采用Egret提供的版本发布插件,该发布插件执行如下步骤:复制更新文件至目标项目的发布目录,压缩版本发布数据,生成版本发布文件resnew.json。
具体地,可以采用ZipPlugin工具进行数据压缩;在使用ZipPlugin工具前,全局安装cross-zip和cross-zip-cli,再使用ZipPlugin工具执行上述数据压缩。从而使移植后的目标项目能够进行版本更新,实现了目标项目的可持续更新性,避免了每一次新版本发布时都执行一次移植,导致项目更新效率低下的问题。
综上,在本发明实施例中,通过目录结构的区分度进行代码转换,提高了转换后不同功能代码的可分离性,提高了代码移植效率;通过单独对代码、源资源文件和通用库进行适应性转换,以及对应性地调用功能接口,将完整的Flash项目进行拆分转换,提高了转换效率,并在拆分转换时能够对各个转换环节中出现的问题进行单独分析处理,提高了转换问题处理效率;通过对单独转换得到的目标代码、功能接口、目标资源文件和目标库整合移植至对应的目标项目,形成了一条完整的移植链,提高了Flash项目移植至新平台的完整性,避免了重新开发带来的人力和物力损耗。
参见图2,是本发明实施例提供的一种Flash项目的移植装置的结构示意图,包括:
代码迁移模块201,用于在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
区分度获取模块202,用于获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度;
代码转换模块203,用于根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码;
接口调用模块204,用于调用所述目标项目与所述Flash项目功能对应的功能接口;
资源转换模块205,用于将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
目标库生成模块206,用于根据所述Flash项目的通用库获取所述目标项目对应的目标库;
数据移植模块207,用于将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目。
进一步地,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,包括:
当所述结构区分度大于预设的区分阈值时,将所述引用库的库代码添加至所述第一目录下,并对所述第一目录下的工程代码和库代码同时进行代码转换,得到所述目标项目对应的目标代码;
当所述结构区分度不大于所述区分阈值时,对所述第一目录下的工程代码进行代码转换,根据所述工程代码的转换结果适应性修改所述库代码,根据所述工程代码的转换结果和所述库代码的修改结果得到所述目标项目对应的目标代码。
进一步地,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,还包括:
识别所述工程代码中的包名;
根据所述包名的数据类型对所述包名进行重定义,得到所述目标代码。
进一步地,所述调用所述目标项目与所述Flash项目功能对应的功能接口,包括:
当所述目标项目的目标引擎中存在与所述Flash项目功能对应的数据接口时,生成接口对应表,根据所述接口对应表调用所述数据接口作为所述功能接口;
当所述目标项目的目标引擎中不存在与所述Flash项目功能对应的数据接口时,在中间层搭建所述目标引擎与所述Flash项目功能对应的数据接口,并调用所述数据接口作为所述功能接口。
进一步地,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件,包括:
通过预设的图集整合工具,将所述源资源文件中的若干张零散图片合并为贴图集;
将整合完成的所述贴图集加入所述目标资源文件。
进一步地,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件之后,还包括:
将所述目标资源文件中的媒体文件进行重打包,得到包文件,其中,所述媒体文件包括图素文件、音效文件中的至少一种;
在所述目标项目执行时,通过预设的加载引擎加载所述包文件,以在所述目标项目中读取所述媒体文件。
进一步地,所述将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目之后,还包括:
获取版本发布数据,对所述版本发布数据进行数据压缩,得到版本发布文件;
将所述版本发布文件输出至所述目标项目的发布目录中。
综上,在本发明实施例中,通过目录结构的区分度进行代码转换,提高了转换后不同功能代码的可分离性,提高了代码移植效率;通过单独对代码、源资源文件和通用库进行适应性转换,以及对应性地调用功能接口,将完整的Flash项目进行拆分转换,提高了转换效率,并在拆分转换时能够对各个转换环节中出现的问题进行单独分析处理,提高了转换问题处理效率;通过对单独转换得到的目标代码、功能接口、目标资源文件和目标库整合移植至对应的目标项目,形成了一条完整的移植链,提高了Flash项目移植至新平台的完整性,避免了重新开发带来的人力和物力损耗。
参见图3,是本发明实施例提供的一种Flash项目的移植系统的示意图。该实施例的所述Flash项目的移植系统包括:处理器1、存储器2以及存储在所述存储器2中并可在所述处理器上运行的计算机程序,例如Flash项目的移植程序。所述处理器1执行所述计算机程序时实现上述各个Flash项目的移植方法实施例中的步骤。或者,所述处理器1执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述Flash项目的移植装置中的执行过程。
所述Flash项目的移植系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是所述Flash项目的移植系统的示例,并不构成对所述Flash项目的移植系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述Flash项目的移植系统还可以包括输入输出设备、网络接入设备、CAN总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述Flash项目的移植系统的控制中心,利用各种接口和线路连接整个Flash项目的移植系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述Flash项目的移植系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述Flash项目的移植装置/控制系统集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种Flash项目的移植方法,其特征在于,包括:
在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度,所述引用库为Flash项目引用的外部库;
根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到目标项目对应的目标代码;
调用所述目标项目与所述Flash项目功能对应的功能接口;
将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
根据所述Flash项目的通用库获取所述目标项目对应的目标库;
将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目;
其中,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到目标项目对应的目标代码,包括:
当所述结构区分度大于预设的区分阈值时,将所述引用库的库代码添加至所述第一目录下,并对所述第一目录下的工程代码和库代码同时进行代码转换,得到所述目标项目对应的目标代码;
当所述结构区分度不大于所述区分阈值时,对所述第一目录下的工程代码进行代码转换,根据所述工程代码的转换结果适应性修改所述库代码,根据所述工程代码的转换结果和所述库代码的修改结果得到所述目标项目对应的目标代码。
2.如权利要求1所述的Flash项目的移植方法,其特征在于,所述根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到所述目标项目对应的目标代码,还包括:
识别所述工程代码中的包名;
根据所述包名的数据类型对所述包名进行重定义,得到所述目标代码。
3.如权利要求1所述的Flash项目的移植方法,其特征在于,所述调用所述目标项目与所述Flash项目功能对应的功能接口,包括:
当所述目标项目的目标引擎中存在与所述Flash项目功能对应的数据接口时,生成接口对应表,根据所述接口对应表调用所述数据接口作为所述功能接口;
当所述目标项目的目标引擎中不存在与所述Flash项目功能对应的数据接口时,在中间层搭建所述目标引擎与所述Flash项目功能对应的数据接口,并调用所述数据接口作为所述功能接口。
4.如权利要求1所述的Flash项目的移植方法,其特征在于,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件,包括:
通过预设的图集整合工具,将所述源资源文件中的若干张零散图片合并为贴图集;
将整合完成的所述贴图集加入所述目标资源文件。
5.如权利要求1所述的Flash项目的移植方法,其特征在于,所述将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件之后,还包括:
将所述目标资源文件中的媒体文件进行重打包,得到包文件,其中,所述媒体文件包括图素文件、音效文件中的至少一种;
在所述目标项目执行时,通过预设的加载引擎加载所述包文件,以在所述目标项目中读取所述媒体文件。
6.如权利要求1所述的Flash项目的移植方法,其特征在于,所述将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目之后,还包括:
获取版本发布数据,对所述版本发布数据进行数据压缩,得到版本发布文件;
将所述版本发布文件输出至所述目标项目的发布目录中。
7.一种Flash项目的移植装置,其特征在于,包括:
代码迁移模块,用于在Flash项目下建立第一目录,将所述Flash项目的工程代码添加至所述第一目录下;
区分度获取模块,用于获取所述Flash项目的引用库,并计算所述引用库与所述第一目录的结构区分度,所述引用库为Flash项目引用的外部库;
代码转换模块,用于根据所述结构区分度对所述工程代码和所述引用库的库代码进行代码转换,得到目标项目对应的目标代码;包括,当所述结构区分度大于预设的区分阈值时,将所述引用库的库代码添加至所述第一目录下,并对所述第一目录下的工程代码和库代码同时进行代码转换,得到所述目标项目对应的目标代码;当所述结构区分度不大于所述区分阈值时,对所述第一目录下的工程代码进行代码转换,根据所述工程代码的转换结果适应性修改所述库代码,根据所述工程代码的转换结果和所述库代码的修改结果得到所述目标项目对应的目标代码;
接口调用模块,用于调用所述目标项目与所述Flash项目功能对应的功能接口;
资源转换模块,用于将所述Flash项目中的源资源文件转换为所述目标项目对应的目标资源文件;
目标库生成模块,用于根据所述Flash项目的通用库获取所述目标项目对应的目标库;
数据移植模块,用于将所述目标代码、功能接口、目标资源文件和目标库移植至所述目标项目。
8.一种Flash项目的移植系统,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的Flash项目的移植方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6中任意一项所述的Flash项目的移植方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080215.8A CN116009959B (zh) | 2023-01-17 | 2023-01-17 | Flash项目的移植方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080215.8A CN116009959B (zh) | 2023-01-17 | 2023-01-17 | Flash项目的移植方法、装置、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116009959A CN116009959A (zh) | 2023-04-25 |
CN116009959B true CN116009959B (zh) | 2024-02-27 |
Family
ID=86021078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310080215.8A Active CN116009959B (zh) | 2023-01-17 | 2023-01-17 | Flash项目的移植方法、装置、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116009959B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785281A (zh) * | 2024-02-28 | 2024-03-29 | 南方电网调峰调频发电有限公司 | 一种基于操作系统移植nfc功能的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176986A (zh) * | 2011-12-20 | 2013-06-26 | 上海博泰悦臻电子设备制造有限公司 | Flash动画数据转换为HTML5数据的方法 |
CN104380280A (zh) * | 2012-04-16 | 2015-02-25 | 权五石 | 动态转换网页的系统、方法以及计算机可读记录介质 |
CN104657191A (zh) * | 2015-03-06 | 2015-05-27 | 搜游网络科技(北京)有限公司 | 一种将Flash项目转换为Html5项目的方法与装置 |
CN104915199A (zh) * | 2015-05-26 | 2015-09-16 | 搜游网络科技(北京)有限公司 | 一种将Flash项目转换为Html5项目的方法与装置 |
CN107636654A (zh) * | 2015-11-17 | 2018-01-26 | 谷歌有限责任公司 | 通过生成指令列表将flash内容转换为html内容 |
CN114237703A (zh) * | 2021-12-20 | 2022-03-25 | 交通银行股份有限公司 | 一种Flex项目转换为React项目的自动转换方法 |
WO2022083316A1 (zh) * | 2020-10-21 | 2022-04-28 | 北京字节跳动网络技术有限公司 | 一种应用运行的方法、装置及计算机存储介质 |
CN115437643A (zh) * | 2022-09-06 | 2022-12-06 | 平安壹钱包电子商务有限公司 | 项目代码转换方法、装置、设备及存储介质 |
-
2023
- 2023-01-17 CN CN202310080215.8A patent/CN116009959B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176986A (zh) * | 2011-12-20 | 2013-06-26 | 上海博泰悦臻电子设备制造有限公司 | Flash动画数据转换为HTML5数据的方法 |
CN104380280A (zh) * | 2012-04-16 | 2015-02-25 | 权五石 | 动态转换网页的系统、方法以及计算机可读记录介质 |
CN104657191A (zh) * | 2015-03-06 | 2015-05-27 | 搜游网络科技(北京)有限公司 | 一种将Flash项目转换为Html5项目的方法与装置 |
CN104915199A (zh) * | 2015-05-26 | 2015-09-16 | 搜游网络科技(北京)有限公司 | 一种将Flash项目转换为Html5项目的方法与装置 |
CN107636654A (zh) * | 2015-11-17 | 2018-01-26 | 谷歌有限责任公司 | 通过生成指令列表将flash内容转换为html内容 |
WO2022083316A1 (zh) * | 2020-10-21 | 2022-04-28 | 北京字节跳动网络技术有限公司 | 一种应用运行的方法、装置及计算机存储介质 |
CN114237703A (zh) * | 2021-12-20 | 2022-03-25 | 交通银行股份有限公司 | 一种Flex项目转换为React项目的自动转换方法 |
CN115437643A (zh) * | 2022-09-06 | 2022-12-06 | 平安壹钱包电子商务有限公司 | 项目代码转换方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116009959A (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7739679B2 (en) | Object ordering tool for facilitating generation of firmware update friendly binary image | |
US7716414B2 (en) | Method for updating a mobile device using an update package obtained from a remote server | |
CN111367510B (zh) | 一种安卓功能模块开发的方法及装置 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN110109671B (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN116009959B (zh) | Flash项目的移植方法、装置、系统及存储介质 | |
US11474796B1 (en) | Build system for distributed applications | |
CN112181432B (zh) | ReactNative框架中实现bundle的模块化打包处理的系统 | |
CN106796525A (zh) | 按需加载动态脚本语言代码以减少内存使用 | |
CN111026439A (zh) | 应用程序的兼容方法、装置、设备及计算机存储介质 | |
CN112000334A (zh) | 页面开发方法、装置、服务器及存储介质 | |
CN114020323B (zh) | 模型处理方法、代码获得方法、装置以及电子设备 | |
US10656922B2 (en) | Systems and methods for providing an application transformation tool | |
JP2009176064A (ja) | ソフトウェアリファクタリング支援装置および方法 | |
CN113010180A (zh) | 一种固件生成方法、系统、设备以及介质 | |
CN114840195B (zh) | 一种针对iOS SDK静态库的私有化方法 | |
CN111367512B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN115456628A (zh) | 基于区块链的智能合约查看方法、装置、存储介质及设备 | |
CN113467803B (zh) | 应用程序的修复方法以及相关装置、设备 | |
JP7059757B2 (ja) | Api処理方法、端末、api処理プログラム | |
CN113504913B (zh) | 一种Adobe Flex代码自动转换方法 | |
JP3260264B2 (ja) | 高水準言語レベルでのパッチ作成・運用方法 | |
JP5942018B1 (ja) | ソースコード変換プログラム | |
AU776882B2 (en) | Generating optimized computer data field conversion routines |
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 |