本发明专利技术公开了一种基于模型转换的从iOS到Android的跨平台页面转化方法,分为两个部分:①对应模型生成;②模型匹配转化。本发明专利技术使用了模型学习的方法,通过学习已有的具有Android和iOS两个版本的应用,构建了一个存放着模型对应关系的数据集合。对于一个需要转化的具有Storyboard的iOS工程,将其进行模型抽取并通过匹配算法转化所得模型。此外,本发明专利技术的思路会对其他的工程设计有着借鉴意义。
【技术实现步骤摘要】
一种基于模型转换的从iOS到Android的跨平台页面转化方法
本专利技术涉及计算机编程领域中的跨平台UI代码转化。
技术介绍
随着移动平台版本演化越来越快,平台App工程开发周期不断缩短,移动跨平台开发的课题重新归回人们的视野。最新的ReactNative软件似乎再次让我们看到了工程完美转化的希望,不过UI始终是困扰研究学者的一个难题,平台的设计的差异始终难以解决。在一个iOS工程师完成了一个App的iOS端的开发之后他会试图去将已有的工程转化为Android来提高产品的市场占有率。如果他并不熟悉Android的开发模式,他可能会去选择让另一个团队来实现Android的工作,但是需要大量的时间来提出需求、设计架构,书写代码,或者他也可能会选择直接的转化平台来将自己的工程转化为Android的工程,他会选择现有的myappconverter,但是myappconverter的效果可能达不到自己的需求,并且是付费的。据统计,到2016大主流平台的应用数目均已突破了100万。然而大多数开发者并没有找到认同的跨平台转换工具。本专利技术中,申请人设计的方法可以把iOS工程的Storyboard文件转化到Android平台上,该工具根据已有工程的逆向挖掘控件使用模型匹配的技术,对一个新的需要转化的工程首先将其进行模型抽取,匹配所得模型,使用已有的对应模型替换来得到一个可以运行的UI。
技术实现思路
针对现有技术中存在的问题,本专利技术所要解决的是提供一种自动化的从iOS到Android的页面转化方法。为解决上述问题,本专利技术采用的技术方案如下:一种基于模型转换的跨平台页面转化方法,其可以将一个iOS工程中的Storyboard文件转化成Android中的xml文件,可以分为两个部分,每一个部分包括如下步骤:第一部分,对应模型生成:步骤11:使用Reveal和Appium工具分别对同一个App工程的iOS和Android版本的安装包进行逆向分析,获得这两者页面布局;步骤12:对iOS工程的页面布局进行模型抽取得到iOS模型,每个模型中含有控件和控件关系;步骤13:对步骤12中得到的每一个模型中的功能控件找到其在Android页面布局中的对应的功能控件;步骤14:将步骤13中得到的功能控件以及包含这些功能控件中的容器控件组成一个Android模型,连同步骤2中所得的iOS模型组成模型对存放在数据集合中;第二部分,模型匹配转化:步骤21:将需要转化的iOS工程中的Storyboard文件按照和步骤12中的同样的抽取策略进行抽取,得到模型;步骤22:将上一步骤中的模型在数据集合中进行匹配,找到最匹配的模型对;步骤23:使用模型对中的Android模块为模板,按照Storyboard文件中iOS控件属性构造Android控件属性,形成xml页面文件。步骤12中:划分iOS页面布局上的控件,使得每个模型可以保留控件的使用方法和多个控件组合使用的策略,这些模型相互不交叉,且每一种划分方式都能得到所需要的模型,只是这些模型所得的转化结果会有所差异,本申请要求保护每一种可行的划分策略。本专利技术针对已有的Android和iOS的控件树将其中节点分别对应然后获取所需的对应模型;在此过程中,对控件节点和容器节点采取不同的对应方式,对于功能控件,如果两个控件处在相同的位置则认为这两个控件对应,对于功能控件,如果两个控件包含了对应的子控件则认为这两个控件一致,本申请要求保护这两种可行的对应控件的方式。本专利技术的技术效果为:1、根据这个方法构建了一个完整的工具,可以在跨平台领域使用,用于工程页面的转化。2、经过这个方法转化了多个工程,这些工程已经对这些软件的开发提供了便利。3、为多种软件工程的领域提供一个很好地解决问题的思路。附图说明图1为本专利技术实施例的工作原理图。图2以淘宝为例使用逆向工程将安装包进行反编译并获得页面布局的过程。图3以淘宝首页的搜索控件为例在寻找Android和iOS的对应控件和模型的过程。图4以豆瓣相册的设置界面为例的转化效果展示。具体实施方式下面结合附图和具体实施例对本专利技术做进一步详细说明。本实施例的基于模型转换的从iOS到Android的跨平台页面转化方法,分为两个部分,每个部分包括如下步骤,第一部分,对应模型生成:步骤11:使用Reavel和Appium工具分别对同一个App工程的iOS和Android版本的安装包进行逆向分析,获得这两者页面布局;步骤12:对iOS工程的页面布局进行模型抽取得到iOS模型,每个模型中含有控件和控件关系;步骤13:对步骤12中得到的每一个模型中的功能控件找到其在Android页面布局中的对应的功能控件;步骤14:将步骤13中得到的功能控件以及包含这些功能控件中的容器控件组成一个Android模型,连同步骤2中所得的iOS模型组成模型对存放在数据集合中;第二部分,模型匹配转化:步骤21:将需要转化的iOS工程中的Storyboard文件按照和步骤12中的同样的抽取策略进行抽取,得到模型;步骤22:将上一步骤中的模型在数据集合中进行匹配,找到最匹配的模型对;步骤23:使用模型对中的Android模块为模板,按照Storyboard文件中iOS控件属性构造Android控件属性,形成xml页面文件。如图1所示为整个方法的执行思路,虚线以上的部分正是对应模型生成部分的工作原理。本专利技术需要完整的Android和IOS平台上的相同工程来训练出图中的模型数据集合,本实施例将这个过程分为以下四步。步骤1、获得有效的页面布局文件。在Android应用商店和苹果商店里面下载正版的同一工程分别具有Android和iOS两个版本的安装包。使用Appium来反编译Android工程,这个工具能够将Android应用的页面布局导出为xml格式的文件,文件中的每一行代表一个控件,其中有这个控件的名字还有这个控件的相关属性。与此同时,本方法使用Reveal反编译iOS工程,这个工具没有导出文件的功能但是可以客户端上点击每一个控件,获取其名称以及属性,整理可以获得同Android类似的xml格式的文件。以淘宝首页为例,如图2所示,对这两个xml文件进行解析,得到控件树,这时的控件树的父子节点关系就是xml控件之间的包含的关系,其他属性可以省略,但是需要保留这两个平台的控件的位置信息。步骤2、对IOS页面布局进行模型抽取,使得有联系的控件被抽取在同一个模型里面。这时,被抽取到一个模型里面的控件不宜过多,也不宜太少。如果控件过多虽然模型保留的控件用法更多但是所得模型难免太大,使得随后更难在两个平台上匹配出同样的模型。如果空间数量太少则抽取的模块会丢失太多的控件用发信息所得模型,所生成的Android代码也就可能产生更多的错误。因此,本方法采取如下的策略:上述算法以iOS的树形式的页面布局文件和distance为输入,以iOS的模型几个为输出。在第1行中,使用广度优先搜索的方法遍历iOS树,将所有节点都存放到NodeSet中。代码第2行一一遍历NodeSet中的每个节点。判断此节点是否为另一个模型的root。随后,定义一个队列并且在第3行中清空它,在第4行中将NodeSet中的节点放入队列中,第5行使用一个循环来遍历这棵树并且随时本文档来自技高网...

【技术保护点】
一种基于模型转换的从iOS到Android的跨平台页面转化方法,将一个iOS工程所具有用于展示页面的Storyboard文件转化成Android工程中用于展示页面的xml文件,分为两个部分,每一个部分包括如下步骤:第一部分,对应模型生成:步骤11:使用Reveal和Appium工具分别对同一个App工程的iOS和Android版本的安装包进行逆向分析,获得这两者页面布局;步骤12:对iOS工程的页面布局进行模型抽取得到iOS模型,每个模型中含有控件和控件关系;步骤13:对步骤12中得到的每一个模型中的功能控件找到其在Android页面布局中的对应的功能控件;步骤14:将步骤13中得到的功能控件以及包含这些功能控件中的容器控件组成一个Android模型,连同步骤2中所得的iOS模型组成模型对存放在数据集合中;第二部分,模型匹配转化:步骤21:将需要转化的iOS工程中的Storyboard文件按照和步骤12中的同样的抽取策略进行抽取,得到模型;步骤22:将上一步骤中的模型在数据集合中进行匹配,找到最匹配的模型对;步骤23:使用模型对中的Android模块为模板,按照Storyboard文件中iOS控件属性构造Android控件属性,形成xml页面文件。...
【技术特征摘要】
1.一种基于模型转换的从iOS到Android的跨平台页面转化方法,将一个iOS工程所具有用于展示页面的Storyboard文件转化成Android工程中用于展示页面的xml文件,分为两个部分,每一个部分包括如下步骤:第一部分,对应模型生成:步骤11:使用Reveal和Appium工具分别对同一个App工程的iOS和Android版本的安装包进行逆向分析,获得这两者页面布局;步骤12:对iOS工程的页面布局进行模型抽取得到iOS模型,每个模型中含有控件和控件关系;步骤13:对步骤12中得到的每一个模型中的功能控件找到其在Android页面布局中的对应的功能控件;步骤14:将步骤13中得到的功能控件以及包含这些功能控件中的容器控件组成一个Android模型,连同步骤2中所得的iOS模型组成模型对存放在数据集合中;第二部分,模型匹配转化:步骤21:将需要转化的iOS工程中的Storyboard文件按照和步骤12中的同样的抽取策略进行抽取,得到模型;步骤22:将上一步骤中的模型在数据集合中进行匹配,找到最匹配的模型对;步骤23:使用模型对中的Android模块为模板,按照Storyboard文件中iOS控件属性构造Android控件属性,形成xml页面文件。2.根据权利要求1所述的基于模型转换的从iOS到Android的跨平台页面转化方法,其特征在于,步骤12中:划分iOS页面布局上的控件,使得每个模型可以保留控件的使用方法和多个控件组合使用的策略,这些模型相互不交叉,且每一种划分方式都能得到所需要的模型,只是这些模型所得的转化结果会有所差异。3.根据权利要求2所述的基于模型转换的从iOS到Android的跨平台页面转化方法,其特征在于,针对已有的Andro...
【专利技术属性】
技术研发人员:张天,潘敏学,裴俊宇,徐同同,李宣东,
申请(专利权)人:南京大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。