CN108614705B - 一种数据编译处理方法及终端 - Google Patents

一种数据编译处理方法及终端 Download PDF

Info

Publication number
CN108614705B
CN108614705B CN201710068013.6A CN201710068013A CN108614705B CN 108614705 B CN108614705 B CN 108614705B CN 201710068013 A CN201710068013 A CN 201710068013A CN 108614705 B CN108614705 B CN 108614705B
Authority
CN
China
Prior art keywords
file
api
directory
code
module
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
CN201710068013.6A
Other languages
English (en)
Other versions
CN108614705A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710068013.6A priority Critical patent/CN108614705B/zh
Publication of CN108614705A publication Critical patent/CN108614705A/zh
Application granted granted Critical
Publication of CN108614705B publication Critical patent/CN108614705B/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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)

Abstract

本发明公开了一种数据编译处理方法及终端,其中,所述方法包括:建立由通用目录和/或文件形成的第一模块;在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口(API);根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API。

Description

一种数据编译处理方法及终端
技术领域
本发明涉及编译技术,尤其涉及一种数据编译处理方法及终端。
背景技术
随着智能终端的普及,终端适用的操作***其范围越来越多,主流的有Windows、Linux、Android、iOS等不同的操作***。每个操作***都有其特有的API接口用于终端应用程序的开发。而同一应用程序经常面临需要覆盖多个操作***的情况,即,终端常常有跨多个平台的需求,多个平台对应多个操作***,对于同一应用程序的编译处理,因为各个操作***有其特有的处理策略,从而无法很好的满足终端跨多个平台的需求。
现有技术中,是基于一套复杂的代码逻辑在多个操作***间切换调用API接口,比如,利用条件编译操作符和平台特定的宏,在编译时刻区分不同的平台,再选择平台特定的API接口,以满足终端跨多个平台的需求。现有技术存在的缺陷是:1)必须配合使用条件编译操作符和相应的平台宏定义,终端跨平台的适用场景必须满足这个必要条件,不够通用和普及;2)使用条件编译操作符会带来非常复杂的处理逻辑,从而导致代码难读、难写、难以维护、易产生错误。相关技术中,对于该问题,尚无有效解决方案。
发明内容
有鉴于此,本发明实施例提供了一种数据编译处理方法及终端,至少解决了现有技术存在的问题。
本发明实施例的一种数据编译处理方法,所述方法包括:
建立由通用目录和/或文件形成的第一模块;
在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;
根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;
在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;
所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
上述方案中,所述方法还包括:
在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述;
所述第一函数的数值为空。
上述方案中,所述方法还包括:
在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述;
所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
上述方案中,所述至少两个操作***中的操作***为Windows时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第一开发环境并在所述第一开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第一开发环境中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现。
上述方案中,所述至少两个操作***中的操作***为iOS时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第二开发环境并在所述第二开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第二开发环境中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现。
上述方案中,所述至少两个操作***中的操作***为Android时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第三开发环境并在所述第三开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第三开发环境中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。
本发明实施例的一种终端,所述终端包括:
第一建立单元,用于建立由通用目录和/或文件形成的第一模块;
第一处理单元,用于在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;
第二建立单元,用于根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;
第二处理单元,用于在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;
编译处理单元,用于所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
上述方案中,在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述;
所述第一函数的数值为空。
上述方案中,在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述;
所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
上述方案中,所述第一处理单元,进一步用于:
在建立应用运行的第一开发环境并在所述第一开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,所述第二处理单元,进一步用于:
在所述第一开发环境中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现。
上述方案中,所述第一处理单元,进一步用于:
在建立应用运行的第二开发环境并在所述第二开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,所述第二处理单元,进一步用于:
在所述第二开发环境中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现。
上述方案中,所述第一处理单元,进一步用于:
在建立应用运行的第三开发环境并在所述第三开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
上述方案中,所述第二处理单元,进一步用于:
在所述第三开发环境中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。
本发明实施例是建立由通用目录和/或文件形成的第一模块,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
采用本发明实施例,是多个模块化处理,以目录和/或文件区分多个操作***,并以目录和/或文件形成模块,使得对本操作***的处理逻辑仅仅基于本操作***实现,对其它操作***没有影响,即确保模块的独立性,不受干扰。模块间API的调用处理,采用与上层应用进行通信的的通用API、及对应本操作***的专用API,被通用API调用。这样得到的处理逻辑,既不需要必须引入条件编译操作符和相应的平台宏定义就可以实现终端跨多个平台的需求,又非常方便编译处理,代码易读、易写、易维护、产生错误的概率低。
附图说明
图1为实现本发明各个实施例的移动终端一个可选的硬件结构示意图;
图2为如图1所示的移动终端的通信***示意图;
图3为本发明实施例中进行信息交互的各方硬件实体的示意图;
图4为本发明实施例一方法的实现流程示意图;
图5为本发明实施例一***架构的示意图;
图6为应用本发明实施例一应用场景中以目录和/或文件形成模块化处理的示意图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明实施例的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
在下面的详细说明中,陈述了众多的具体细节,以便彻底理解本发明。不过,对于本领域的普通技术人员来说,显然可在没有这些具体细节的情况下实践本发明。在其他情况下,没有详细说明公开的公知方法、过程、组件、电路和网络,以避免不必要地使实施例的各个方面模糊不清。
另外,本文中尽管多次采用术语“第一”、“第二”等来描述各种元件(或各种阈值或各种应用或各种指令或各种操作)等,不过这些元件(或阈值或应用或指令或操作)不应受这些术语的限制。这些术语只是用于区分一个元件(或阈值或应用或指令或操作)和另一个元件(或阈值或应用或指令或操作)。例如,第一操作可以被称为第二操作,第二操作也可以被称为第一操作,而不脱离本发明的范围,第一操作和第二操作都是操作,只是二者并不是相同的操作而已。
本发明实施例中的步骤并不一定是按照所描述的步骤顺序进行处理,可以按照需求有选择的将步骤打乱重排,或者删除实施例中的步骤,或者增加实施例中的步骤,本发明实施例中的步骤描述只是可选的顺序组合,并不代表本发明实施例的所有步骤顺序组合,实施例中的步骤顺序不能认为是对本发明的限制。
本发明实施例中的术语“和/或”指的是包括相关联的列举项目中的一个或多个的任何和全部的可能组合。还要说明的是:当用在本说明书中时,“包括/包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件和/或组件和/或它们的组群的存在或添加。
本发明实施例的智能终端(如移动终端)可以以各种形式来实施。例如,本发明实施例中描述的移动终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(PDA,Personal Digital Assistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
图1为实现本发明各个实施例的移动终端一个可选的硬件结构示意图。
移动终端100可以包括通信单元110、音频/视频(A/V)输入单元120、用户输入单元130、第一建立单元140、第一处理单元141、第二建立单元142、第二处理单元143、编译处理单元144、输出单元150、存储单元160、接口单元170、处理单元180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
通信单元110通常包括一个或多个组件,其允许移动终端100与无线通信***或网络之间的无线电通信(如果将移动终端用固定终端代替,也可以通过有线方式进行电通信)。例如,通信单元具体为无线通信单元时可以包括广播接收单元111、移动通信单元112、无线互联网单元113、短程通信单元114和位置信息单元115中的至少一个,这些单元是可选的,根据不同需求可以增删。
广播接收单元111经由广播信道从外部广播管理服务器接收广播信号和/或广播相关信息。广播信道可以包括卫星信道和/或地面信道。广播管理服务器可以是生成并发送广播信号和/或广播相关信息的服务器或者接收之前生成的广播信号和/或广播相关信息并且将其发送给终端的服务器。广播信号可以包括TV广播信号、无线电广播信号、数据广播信号等等。而且,广播信号可以进一步包括与TV或无线电广播信号组合的广播信号。广播相关信息也可以经由移动通信网络提供,并且在该情况下,广播相关信息可以由移动通信单元112来接收。广播信号可以以各种形式存在,例如,其可以以数字多媒体广播(DMB,Digital Multimedia Broadcasting)的电子节目指南(EPG,Electronic Program Guide)、数字视频广播手持(DVB-H,Digital Video Broadcasting-Handheld)的电子服务指南(ESG,Electronic Service Guide)等等的形式而存在。广播接收单元111可以通过使用各种类型的广播***接收信号广播。特别地,广播接收单元111可以通过使用诸如多媒体广播-地面(DMB-T,Digital Multimedia Broadcasting-Terrestrial)、数字多媒体广播-卫星(DMB-S,Digital Multimedia Broadcasting-Satellite)、DVB-H,前向链路媒体(MediaFLO,Media Forward Link Only)的数据广播***、地面数字广播综合服务(ISDB-T,Integrated Services Digital Broadcasting-Terrestrial)等等的数字广播***接收数字广播。广播接收单元111可以被构造为适合提供广播信号的各种广播***以及上述数字广播***。经由广播接收单元111接收的广播信号和/或广播相关信息可以存储在存储单元160(如存储器或者其它类型的存储介质)中。
移动通信单元112将无线电信号发送到基站(例如,接入点、节点B等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语音通话信号、视频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。
无线互联网单元113支持移动终端的无线互联网接入。该单元可以内部或外部地耦接到终端。该单元所涉及的无线互联网接入技术可以包括无线局域网络(Wi-Fi,WLAN,Wireless Local Area Networks)、无线宽带(Wibro)、全球微波互联接入(Wimax)、高速下行链路分组接入(HSDPA,High Speed Downlink Packet Access)等等。
短程通信单元114是用于支持短程通信的单元。短程通信技术的一些示例包括蓝牙、射频识别(RFID,Radio Frequency Identification)、红外数据协会(IrDA,InfraredData Association)、超宽带(UWB,Ultra Wideband)、紫蜂等等。
位置信息单元115是用于检查或获取移动终端的位置信息的单元。位置信息单元的典型示例是全球定位***(GPS,Global Positioning System)。根据当前的技术,位置信息单元115计算来自三个或更多卫星的距离信息和准确的时间信息并且对于计算的信息应用三角测量法,从而根据经度、纬度和高度准确地计算三维当前位置信息。当前,用于计算位置和时间信息的方法使用三颗卫星并且通过使用另外的一颗卫星校正计算出的位置和时间信息的误差。此外,位置信息单元115能够通过实时地连续计算当前位置信息来计算速度信息。
A/V输入单元120用于接收音频或视频信号。A/V输入单元120可以包括相机121和麦克风122,相机121对在视频捕获模式或图像捕获模式中由图像捕获装置获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元151上。经相机121处理后的图像帧可以存储在存储单元160(或其它存储介质)中或者经由通信单元110进行发送,可以根据移动终端的构造提供两个或更多相机121。麦克风122可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由移动通信单元112发送到移动通信基站的格式输出。麦克风122可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、鼠标、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
第一建立单元140,用于建立由通用目录和/或文件形成的第一模块;第一处理单元141,用于在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;第二建立单元142,用于根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;第二处理单元143,用于在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;编译处理单元144,用于所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别单元的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别单元可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别单元(UIM,User Identify Module)、客户识别单元(SIM,Subscriber Identity Module)、通用客户识别单元(USIM,Universal SubscriberIdentity Module)等等。另外,具有识别单元的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、振动信号等等)。输出单元150可以包括显示单元151、音频输出单元152等等。
显示单元151可以显示在移动终端100中处理的信息。例如,移动终端100可以显示相关用户界面(UI,User Interface)或图形用户界面(GUI,Graphical User Interface)。当移动终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD,LiquidCrystal Display)、薄膜晶体管LCD(TFT-LCD,Thin Film Transistor-LCD)、有机发光二极管(OLED,Organic Light-Emitting Diode)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为透明有机发光二极管(TOLED)显示器等等。根据特定想要的实施方式,移动终端100可以包括两个或更多显示单元(或其它显示装置),例如,移动终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
音频输出单元152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将通信单元110接收的或者在存储单元160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出单元152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元152可以包括扬声器、蜂鸣器等等。
存储单元160可以存储由处理单元180执行的处理和控制操作的软件程序等等,或者可以暂时地存储已经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储单元160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
存储单元160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM,Random AccessMemory)、静态随机访问存储器(SRAM,Static Random Access Memory)、只读存储器(ROM,Read Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically ErasableProgrammable Read Only Memory)、可编程只读存储器(PROM,Programmable Read OnlyMemory)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储单元160的存储功能的网络存储装置协作。
处理单元180通常控制移动终端的总体操作。例如,处理单元180执行与语音通话、数据通信、视频通话等等相关的控制和处理。又如,处理单元180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
电源单元190在处理单元180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理器(DSP,DigitalSignal Processing)、数字信号处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑装置(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,FieldProgrammable Gate Array)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在处理单元180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件单元来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储单元160中并且由处理单元180执行。其中,存储单元160的一个具体硬件实体可以为存储器,处理单元180的一个具体硬件实体可以为控制器。
至此,已经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
如图1中所示的移动终端100可以被构造为利用经由帧或分组发送数据的诸如有线和无线通信***以及基于卫星的通信***来操作。
现在将参考图2描述其中根据本发明实施例的移动终端能够操作的通信***。
这样的通信***可以使用不同的空中接口和/或物理层。例如,由通信***使用的空中接口包括例如频分多址(FDMA,Frequency Division Multiple Access)、时分多址(TDMA,Time Division Multiple Access)、码分多址(CDMA,Code Division MultipleAccess)和通用移动通信***(UMTS,Universal Mobile Telecommunications System)(特别地,长期演进(LTE,Long Term Evolution))、全球移动通信***(GSM)等等。作为非限制性示例,下面的描述涉及CDMA通信***,但是这样的教导同样适用于其它类型的***。
参考图2,CDMA无线通信***可以包括多个移动终端100、多个基站(BS,BaseStation)270、基站控制器(BSC,Base Station Controller)275和移动交换中心(MSC,Mobile Switching Center)280。MSC280被构造为与公共电话交换网络(PSTN,PublicSwitched Telephone Network)290形成接口。MSC280还被构造为与可以经由回程线路耦接到BS270的BSC275形成接口。回程线路可以根据若干已知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM、IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的***可以包括多个BSC275。
每个BS270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz等等)。
分区与频率分配的交叉可以被称为CDMA信道。BS270也可以被称为基站收发器子***(BTS,Base Transceiver Station)或者其它等效术语。在这样的情况下,术语“基站”可以用于笼统地表示单个BSC275和至少一个BS270。基站也可以被称为“蜂窝站”。或者,特定BS270的各分区可以被称为多个蜂窝站。
如图2中所示,广播发射器(BT,Broadcast Transmitter)295将广播信号发送给在***内操作的移动终端100。如图1中所示的广播接收单元111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个卫星300,例如可以采用GPS卫星300。卫星300帮助定位多个移动终端100中的至少一个。
在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。如图1中所示的位置信息单元115通常被构造为与卫星300配合以获得想要的定位信息。替代GPS跟踪技术或者在GPS跟踪技术之外,可以使用可以跟踪移动终端的位置的其它技术。另外,至少一个GPS卫星300可以选择性地或者额外地处理卫星DMB传输。
作为无线通信***的一个典型操作,BS270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站接收的每个反向链路信号被在特定BS270内进行处理。获得的数据被转发给相关的BSC275。BSC提供通话资源分配和包括BS270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS270以将正向链路信号发送到移动终端100。
移动终端中通信单元110的移动通信单元112基于移动终端内置的接入移动通信网络(如2G/3G/4G等移动通信网络)的必要数据(包括用户识别信息和鉴权信息)接入移动通信网络为移动终端用户的网页浏览、网络多媒体播放等业务传输移动通信数据(包括上行的移动通信数据和下行的移动通信数据)。
通信单元110的无线互联网单元113通过运行无线热点的相关协议功能而实现无线热点的功能,无线热点支持多个移动终端(移动终端之外的任意移动终端)接入,通过复用移动通信单元112与移动通信网络之间的移动通信连接为移动终端用户的网页浏览、网络多媒体播放等业务传输移动通信数据(包括上行的移动通信数据和下行的移动通信数据),由于移动终端实质上是复用移动终端与通信网络之间的移动通信连接传输移动通信数据的,因此移动终端消耗的移动通信数据的流量由通信网络侧的计费实体计入移动终端的通信资费,从而消耗移动终端签约使用的通信资费中包括的移动通信数据的数据流量。
图3为本发明实施例中进行信息交互的各方硬件实体的示意图,图3中包括:终端设备1和服务器2。其中,终端设备1由终端设备11-14构成,终端设备通过有线网络或者无线网络与服务器进行信息交互。终端设备包括手机、台式机、PC机、一体机等类型。采用本发明实施例,通过跨平台的API调用与上层应用交互,上层应用与服务器间进行数据交换。在终端设备侧的处理逻辑是:采用多个模块化的处理,以目录和/或文件区分多个操作***,并以目录和/或文件形成模块,使得对本操作***的处理逻辑仅仅基于本操作***实现,对其它操作***没有影响,即确保模块的独立性,不受干扰。模块间API的调用处理,采用与上层应用进行通信的的通用API、及对应本操作***的专用API,被通用API调用。具体的处理逻辑10如图3所示,包括:S1、建立由通用目录和/或文件形成的一个模块;S2、在所述模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用API;S3、根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的至少两个模块;S4、在所述至少两个模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;S5、通用API调用专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件并对所述文件进行编译处理。
上述图3的例子只是实现本发明实施例的一个***架构实例,本发明实施例并不限于上述图3所述的***结构,基于上述图5所述的***架构,提出本发明方法各个实施例。
上述处理逻辑10可以在终端设备执行,也可以在服务器执行,考虑到终端有更多跨平台的需求,因此,考虑到实际应用中的普遍性,只是以终端侧的处理逻辑为例进行说明。如果服务器也存在跨平台的需求,本发明实施例的处理逻辑也同样可以应用于服务器中。以下实施例中均以在终端设备侧执行该处理逻辑的方式进行描述,但是,本发明实施例并不限定该处理逻辑在服务器侧执行的可行性。
本文中涉及的名称在此解释:API:Application Programming Interface,应用程序编程接口;IDE:Integrated Development Environment,集成开发环境;VS:VisualStudio,Visual Studio是微软公司推出的开发环境,是最流行的Windows平台应用程序开发环境,Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件,目前还可开发安卓平台应用及iOS平台应用。AS:Android Studio,Android Studio是一个Android开发环境,基于IntelliJ IDEA.类似Eclipse ADT,Android Studio提供了集成的Android开发工具用于开发和调试。
本发明实施例的一种数据编译处理方法,如图4所示,所述方法包括:建立由通用目录和/或文件形成的第一模块(101)。通用目录中可以包含文件,以通用目录为划分单元来形成该第一模块,或者直接以文件为划分单元,来形成该第一模块。在实际应用中,采用通用目录为划分单元来形成该第一模块,在通用目录中包含所需要的至少一个文件,所述至少一个文件中还包含定义的函数和实例化的类等代码数据。在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用API(102)。根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块、第三模块……、第m模块,所述m为大于3的正整数(103)。有多少个操作***,就有多少个模块,以实现本***独立的模块化处理。专用目录中可以包含文件,以专用目录为划分单元来形成该第二模块,第三模块……,第m模块,或者直接以文件为划分单元,来形成该第二模块,第三模块……,第m模块。在实际应用中,采用专用目录为划分单元来形成该第二模块,第三模块……,第m模块,在专用目录中包含所需要的至少一个文件,所述至少一个文件中还包含定义的函数和实例化的类的具体实现等代码数据。与上述第一模块的区别是:在该第二模块,第三模块……,第m模块中的至少一个文件中,函数和类不为空,并符合本操作***的具体实现,而在第一模块中的至少一个文件中,函数和类为空,只是定义。也就是说,方便API调用,上层应用与通用API交互时,会调用到通用API对应的函数和类,而同样定义的该函数和该类的具体实现是根据不同操作***的需求来实现的,从而,可以满足终端跨平台(或称跨多个操作***)的需求。具体的,在该第二模块,第三模块……,第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API(104)。API调用的过程中,上层应用调用该通用API,该通用API调用该专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理(105)。在实际应用中,在专用目录中包含所需要的至少一个文件,所述至少一个文件中还包含定义的函数和实例化的类的具体实现等代码数据。根据文件或专用目录下文件的路径位置查询到文件后,对所述文件进行编译处理。比如,在使用目录和文件的形式区分出多个不同操作***对应的多个不同平台后,通过在IDE工程文件或makefile文件中加载不同平台目录下的文件,来进行该编译处理,最终达到终端跨平台的目的。
采用本发明实施例,不是采取一套复杂的代码逻辑,而是以模块化的方式对不同操作***的具体处理逻辑进行独立处理,在实际应用中,可以根据目录和文件的分区来建模,以实现模块化。由于不使用条件编译操作符,从而不会引入复杂的编译逻辑;模块的划分使得代码层次清晰,代码独立在模块内,编写、维护成本低;模块的划分没有逻辑耦合,修改代码不会引起其它模块的逻辑变化,非常方便编译处理,代码易读、易写、易维护、产生错误的概率低,如果产生错误,模块的划分也较易定位错误的源头。
本发明实施例一实施方式中,在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述。所述第一函数的数值为空。
本发明实施例一实施方式中,在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述。所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
采用本发明实施例,在第一模块中对第一函数的功能进行描述,即:定义第一函数是干嘛的,是个通用的说明。但是,需要注意的是,只有定义,没有数值,该第一函数是空函数。而具体的函数实现,即添加了数值后的函数是在该第二模块,第三模块……,第m模块中写入的,在***各自独立的代码数据中进行实现,以适应不同操作***的实际编码需求,即对应于各自***在应用实现上的目标需求。
本发明实施例的一种数据编译处理方法,以至少两个操作***中的一个操作***为Windows为例,包括:1)在建立应用运行的第一开发环境(如VS工程)并在所述第一开发环境(如VS工程)中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。所述指定函数a和所述类b即为所述第一模块中写入的属于至少两个操作***中***共用的代码数据,以将所述***共用的代码数据作为与上层应用进行通信的通用API。2)在所述第一开发环境(如VS工程)中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现,也就是说,Windows代码目录下仅放置使用了本***API的代码实现。所述指定函数a和所述类b采用Windows API实现,即为在该第二模块,第三模块……,第m模块中的对应模块中写入与所述至少两个操作***对应的***各自独立的代码数据,以将所述***各自独立的代码数据作为被所述通用API调用的专用API。
本发明实施例的一种数据编译处理方法,以至少两个操作***中的一个操作***为iOS为例,包括:1)在建立应用运行的第二开发环境(如XCode工程)并在所述第二开发环境(如XCode工程)中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。所述指定函数a和所述类b即为所述第一模块中写入的属于至少两个操作***中***共用的代码数据,以将所述***共用的代码数据作为与上层应用进行通信的通用API。2)在所述第二开发环境(如XCode工程)中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现,也就是说,iOS代码目录下仅放置使用了本***API的代码实现。所述指定函数a和所述类b采用iOS API实现,即为在该第二模块,第三模块……,第m模块中的对应模块中写入与所述至少两个操作***对应的***各自独立的代码数据,以将所述***各自独立的代码数据作为被所述通用API调用的专用API。
本发明实施例的一种数据编译处理方法,以至少两个操作***中的一个操作***为Android为例,包括:1)在建立应用运行的第三开发环境(如makefile)并在所述第三开发环境(如makefile)中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。所述指定函数a和所述类b即为所述第一模块中写入的属于至少两个操作***中***共用的代码数据,以将所述***共用的代码数据作为与上层应用进行通信的通用API。2)在所述第三开发环境(如makefile)中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。也就是说Android代码目录下仅放置使用了本***API的代码实现。所述指定函数a和所述类b采用Android API实现,即为在该第二模块,第三模块……,第m模块中的对应模块中写入与所述至少两个操作***对应的***各自独立的代码数据,以将所述***各自独立的代码数据作为被所述通用API调用的专用API。
本发明实施例的一种数据编译处理***,通过跨平台的API调用与上层应用交互,上层应用与服务器间进行数据交换。采用多个模块化的处理,以目录和/或文件区分多个操作***,并以目录和/或文件形成模块,使得对本操作***的处理逻辑仅仅基于本操作***实现,对其它操作***没有影响,即确保模块的独立性,不受干扰。模块间API的调用处理,采用与上层应用进行通信的的通用API、及对应本操作***的专用API,被通用API调用。如图5所示,包括终端41和服务器42。其中,终端41包括:第一建立单元411,用于建立由通用目录和/或文件形成的第一模块;第一处理单元412,用于在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;第二建立单元413,用于根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;第二处理单元414,用于在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;编译处理单元415,用于所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
采用本发明实施例,不是采取一套复杂的代码逻辑,而是以模块化的方式对不同操作***的具体处理逻辑进行独立处理,在实际应用中,可以根据目录和文件的分区来建模,以实现模块化。由于不使用条件编译操作符,从而不会引入复杂的编译逻辑;模块的划分使得代码层次清晰,代码独立在模块内,编写、维护成本低;模块的划分没有逻辑耦合,修改代码不会引起其它模块的逻辑变化,非常方便编译处理,代码易读、易写、易维护、产生错误的概率低,如果产生错误,模块的划分也较易定位错误的源头。
本发明实施例一实施方式中,在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述。所述第一函数的数值为空。
本发明实施例一实施方式中,在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述。所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
采用本发明实施例,在第一模块中对第一函数的功能进行描述,即:定义第一函数是干嘛的,是个通用的说明。但是,需要注意的是,只有定义,没有数值,该第一函数是空函数。而具体的函数实现,即添加了数值后的函数是在该第二模块,第三模块……,第m模块中写入的,在***各自独立的代码数据中进行实现,以适应不同操作***的实际编码需求,即对应于各自***在应用实现上的目标需求。
本发明实施例一实施方式中,所述第一处理单元,进一步用于:在建立应用运行的第一开发环境并在所述第一开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
本发明实施例一实施方式中,所述第二处理单元,进一步用于:在所述第一开发环境中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现。
本发明实施例一实施方式中,所述第一处理单元,进一步用于:在建立应用运行的第二开发环境并在所述第二开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
本发明实施例一实施方式中,所述第二处理单元,进一步用于:在所述第二开发环境中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现。
本发明实施例一实施方式中,所述第一处理单元,进一步用于:在建立应用运行的第三开发环境并在所述第三开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
本发明实施例一实施方式中,所述第二处理单元,进一步用于:在所述第三开发环境中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。
其中,对于用于数据处理的处理器而言,在执行处理时,可以采用微处理器、中央处理器(CPU,Central Processing Unit)、DSP或FPGA实现;对于存储介质来说,包含操作指令,该操作指令可以为计算机可执行代码,通过所述操作指令来实现上述本发明实施例信息处理方法流程中的各个步骤。
这里需要指出的是:以上涉及终端和服务器项的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明终端和服务器实施例中未披露的技术细节,请参照本发明方法流程描述的实施例所描述内容。
以一个现实应用场景为例对本发明实施例阐述如下:
一个应用场景中,特定的操作***如Windows、Linux、Android、iOS等均提供一套本***特有的API接口用于应用程序开发,而同一应用程序经常面临覆盖多个操作***的情况,从而带来软件设计中的跨平台问题。当下普遍使用的解决方案是使用条件编译操作符“#ifdef…#elif…#else…#endif”及其变种,配合使用平台特定的宏如_WIN32、__linux、__ANDROID__、__APPLE__等,以逻辑的方式选择代码段实现跨平台。这种方式虽然可行,但在复杂代码逻辑情况下,容易带来代码上的混乱,难以维护,产生较难发现的错误。
具体来说,当前普遍使用的技术方案是利用条件编译操作符和平台特定的宏,在编译时刻区分不同的平台,再选择平台特定的API,达到跨平台的目的。
使用条件编译操作符,主要有如下几种方式:
1)#ifdef XXX
当宏XXX被定义时执行的代码段
#endif
2)#ifndef XXX
当宏XXX没有被定义时执行的代码段
#endif
3)#ifdef XXX
当宏XXX被定义时执行的代码段
#else
当宏XXX没有被定义时执行的代码段
#endif
4)#ifndef XXX
当宏XXX没有被定义时执行的代码段
#else
当宏XXX被定义时执行的代码段
#endif
5)#ifdef XXX
当宏XXX被定义时执行的代码段
#elif defined YYY
当宏YYY被定义时执行的代码段
#else
当宏XXX和宏YYY都没有被定义时执行的代码段
#endif
6)#ifndef XXX
当宏XXX没有被定义时执行的代码段
#elif!defined YYY
当宏XXX和宏YYY都没有被定义时执行的代码段
#else
当宏XXX和宏YYY都被定义时执行的代码段
#endif
7)#if defined(XXX)
当宏XXX被定义时执行的代码段
#elif defined(YYY)||(ZZZ)
当宏XXX没有被定义,但宏YYY或宏ZZZ被定义时执行的代码段
#elif defined(MMM)&&(NNN)
当宏XXX、宏YYY和宏ZZZ都没有被定义,并且宏MMM和宏NNN同时被定义时执行的代码段
#else
以上条件都不满足时执行的代码段
#endif
上述7种方式,是条件编译操作符比较基本的使用方式。条件编译同时支持逻辑与(&&)、逻辑或(||)和非(!)操作,并且支持嵌套,可以演化出非常复杂的表达式。
从上述几种方案展示中可以看出,采用条件编译操作符的缺陷在于:必须配合使用条件编译操作符和相应的平台宏定义;条件编译操作符会带来非常复杂的逻辑,导致代码难读,难写,难以维护,易产生错误。
而对于上述应用场景,采用本发明实施例,不使用条件编译操作符,通过使用特定目录区分文件,在IDE工程文件或makefile文件中加入指定平台目录的文件实现,达到跨平台的目的,从而解决了条件编译操作符带来的上述两个问题。图6为采用本发明实施例的一个具体实现方案,是一种逻辑解耦型软件跨平台的方案。如图6所示,假设有应用程序APP,在3个平台Windows、iOS和Android都有实现,为解决跨平台问题,本方案采用的步骤如下:
1)建立“通用代码目录”,将各平台可共用的代码提取出来放置其中,如图1中的“文件1”和“文件2”;其中,“文件1”中调用了“函数a”,“文件2”中实例化了“类b”,而“函数a”和“类b”的实现中使用了操作***特有的API。
2)分别建立“Windows平台代码目录”、“iOS平台代码目录”和“Android平台代码目录”,各目录下仅放置使用了本***API的代码实现,如图6中“Windows平台代码目录”下放置了“文件3”和“文件4”,“iOS平台代码目录”下放置了“文件5”和“文件6”,以及“Android平台代码目录”下放置了“文件7”和“文件8”。
3)各平台文件中分别独立实现同一函数和类,如图6中“文件3”中使用WindowsAPI实现“函数a”,“文件4”中使用Windows API实现“类b”;“文件5”中使用iOS API实现“函数a”,“文件6”中使用iOS API实现“类b”;以及,“文件7”中使用Android API实现“函数a”,“文件8”中使用Android API实现“类b”。
此时,各平台分别对“函数a”和“类b”基于其特有的API做了实现,但由于“函数a”和“类b”对外提供的接口在各个平台上完全一致,所以,“通用代码目录”中的“文件1”和“文件2”可以使用完全相同的代码使用各平台上的提供的“函数a”和“类b”。
基于以上原理,各平台APP的构建步骤分别如下:
一,Windows平台:
a.建立APP的Visual Studio工程;
b.在VS工程中加入“通用代码目录”下的“文件1”和“文件2”;
c.在VS工程中加入“Windows平台代码目录”下的“文件3”和“文件4”;
d.使用VS构建基于Windows平台的APP;
e.编译、链接通过,APP构建完成。
二,iOS平台:
a.建立APP的XCode工程;
b.在XCode工程中加入“通用代码目录”下的“文件1”和“文件2”;
c.在XCode工程中加入“iOS平台代码目录”下的“文件5”和“文件6”;
d.使用XCode构建基于iOS平台的APP;
e.编译、链接通过,APP构建完成。
三,Android平台:
a.建立APP的makefile文件;
b.在makefile中加入“通用代码目录”下的“文件1”和“文件2”;
c.在makefile中加入“Android平台代码目录”下的“文件7”和“文件8”;
d.使用Android NDK构建基于Android平台的动态库;
e.建立APP的Android Studio工程;
f.在AS工程中加入步骤d构建的动态库;
g.使用AS构建基于Android平台的APP;
h.编译、链接通过,APP构建完成。
通过以上步骤,即可构建出不同平台的APP,达到跨平台的目的。从中可以看出,本方案并未使用传统方案使用的条件编译操作符,而是使用目录和文件区分各个平台的特定实现,从而避免了条件编译操作符带来的逻辑耦合问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种数据编译处理方法,其特征在于,所述方法包括:
建立由通用目录和/或文件形成的第一模块;
在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;
根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;
在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;
所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述;
所述第一函数的数值为空。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述;
所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
4.根据权利要求1所述的方法,其特征在于,所述至少两个操作***中的操作***为Windows时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第一开发环境并在所述第一开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
5.根据权利要求4所述的方法,其特征在于,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第一开发环境中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现。
6.根据权利要求1所述的方法,其特征在于,所述至少两个操作***中的操作***为iOS时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第二开发环境并在所述第二开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
7.根据权利要求6所述的方法,其特征在于,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第二开发环境中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现。
8.根据权利要求1所述的方法,其特征在于,所述至少两个操作***中的操作***为Android时,在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API,包括:
在建立应用运行的第三开发环境并在所述第三开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
9.根据权利要求8所述的方法,其特征在于,在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API,包括:
在所述第三开发环境中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。
10.一种终端,其特征在于,所述终端包括:
第一建立单元,用于建立由通用目录和/或文件形成的第一模块;
第一处理单元,用于在所述第一模块中写入属于至少两个操作***中***共用的代码数据,将所述***共用的代码数据作为与上层应用进行通信的通用应用程序编程接口API;
第二建立单元,用于根据所述至少两个操作***各自应用实现的目标需求,以专用目录和/或文件的方式分别建立对应所述至少两个操作***的第二模块和第m模块,所述m为大于3的正整数;
第二处理单元,用于在所述第二模块和所述第m模块中分别写入与所述至少两个操作***对应的***各自独立的代码数据,将所述***各自独立的代码数据作为被所述通用API调用的专用API;
编译处理单元,用于所述通用API调用所述专用API,根据专用目录和/或文件的路径位置查询到所述专用目录和/或文件,并对所述文件进行编译处理。
11.根据权利要求10所述的终端,其特征在于,在所述***共用的代码数据中包含至少一个第一函数,并对所述至少一个第一函数按照第一预设规则进行描述;
所述第一函数的数值为空。
12.根据权利要求11所述的终端,其特征在于,在所述***各自独立的代码数据中包含至少一个第二函数,所述第二函数与所述第一函数是相同的,并对所述至少一个第二函数按照所述第一预设规则进行描述;
所述第二函数的数值不为空,所述第二函数中的数值实现符合所述操作***各自应用实现的目标需求。
13.根据权利要求10所述的终端,其特征在于,所述第一处理单元,进一步用于:
在建立应用运行的第一开发环境并在所述第一开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
14.根据权利要求13所述的终端,其特征在于,所述第二处理单元,进一步用于:
在所述第一开发环境中加入新建的Windows代码目录及所述Windows代码目录下的第三文件和第四文件后,在所述第三文件中写入指定函数a,在所述第二文件中写入类b,所述指定函数a和所述类b采用Windows API实现。
15.根据权利要求10所述的终端,其特征在于,所述第一处理单元,进一步用于:
在建立应用运行的第二开发环境并在所述第二开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
16.根据权利要求15所述的终端,其特征在于,所述第二处理单元,进一步用于:
在所述第二开发环境中加入新建的iOS代码目录及所述iOS代码目录下的第五文件和第六文件后,在所述第五文件中写入指定函数a,在所述第六文件中写入类b,所述指定函数a和所述类b采用iOS API实现。
17.根据权利要求10所述的终端,其特征在于,所述第一处理单元,进一步用于:
在建立应用运行的第三开发环境并在所述第三开发环境中加入新建的通用代码目录及所述通用代码目录下的第一文件和第二文件后,在所述第一文件中调用指定函数a,在所述第二文件中对类b进行实例化,所述指定函数a和所述类b采用通用API实现。
18.根据权利要求17所述的终端,其特征在于,所述第二处理单元,进一步用于:
在所述第三开发环境中加入新建的Android代码目录及所述Android代码目录下的第七文件和第八文件后,在所述第七文件中写入指定函数a,在所述第八文件中写入类b,所述指定函数a和所述类b采用Android API实现。
CN201710068013.6A 2017-02-07 2017-02-07 一种数据编译处理方法及终端 Active CN108614705B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710068013.6A CN108614705B (zh) 2017-02-07 2017-02-07 一种数据编译处理方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710068013.6A CN108614705B (zh) 2017-02-07 2017-02-07 一种数据编译处理方法及终端

Publications (2)

Publication Number Publication Date
CN108614705A CN108614705A (zh) 2018-10-02
CN108614705B true CN108614705B (zh) 2022-06-03

Family

ID=63658211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710068013.6A Active CN108614705B (zh) 2017-02-07 2017-02-07 一种数据编译处理方法及终端

Country Status (1)

Country Link
CN (1) CN108614705B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110753200A (zh) * 2019-09-30 2020-02-04 北京智明星通科技股份有限公司 多媒体信息录入方法及装置、终端和计算机可读存储介质
CN112631609B (zh) * 2021-01-05 2024-06-18 北京字节跳动网络技术有限公司 编译方法、装置、终端及存储介质
CN113296853B (zh) * 2021-05-28 2023-09-29 成都谐盈科技有限公司 一种基于模型驱动的独立端口建模方法及终端

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681893A (zh) * 2011-03-09 2012-09-19 腾讯科技(深圳)有限公司 可执行程序的跨平台实现方法及移动终端
CN102971688A (zh) * 2010-04-15 2013-03-13 Itr集团有限公司 跨平台应用程序框架
CN103019686A (zh) * 2012-11-20 2013-04-03 北京思特奇信息技术股份有限公司 一种跨两个中间件的***及其编译方法
CN103176774A (zh) * 2011-12-21 2013-06-26 ***通信集团广东有限公司 应用程序的编译方法、装置以及***
CN103795814A (zh) * 2014-02-13 2014-05-14 浪潮软件股份有限公司 一种基于全国产cpu和os的短信设备通用通信接口
CN104412229A (zh) * 2012-06-18 2015-03-11 微软公司 自适应可移植库
CN105138327A (zh) * 2015-08-21 2015-12-09 青岛海信移动通信技术股份有限公司 一种跨平台web应用的打包方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6819960B1 (en) * 2001-08-13 2004-11-16 Rockwell Software Inc. Industrial controller automation interface
US8099472B2 (en) * 2008-10-21 2012-01-17 Lookout, Inc. System and method for a mobile cross-platform software system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102971688A (zh) * 2010-04-15 2013-03-13 Itr集团有限公司 跨平台应用程序框架
CN102681893A (zh) * 2011-03-09 2012-09-19 腾讯科技(深圳)有限公司 可执行程序的跨平台实现方法及移动终端
CN103176774A (zh) * 2011-12-21 2013-06-26 ***通信集团广东有限公司 应用程序的编译方法、装置以及***
CN104412229A (zh) * 2012-06-18 2015-03-11 微软公司 自适应可移植库
CN103019686A (zh) * 2012-11-20 2013-04-03 北京思特奇信息技术股份有限公司 一种跨两个中间件的***及其编译方法
CN103795814A (zh) * 2014-02-13 2014-05-14 浪潮软件股份有限公司 一种基于全国产cpu和os的短信设备通用通信接口
CN105138327A (zh) * 2015-08-21 2015-12-09 青岛海信移动通信技术股份有限公司 一种跨平台web应用的打包方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
linux 下如何编译跨平台的可执行文件;佚名;《https://bbs.csdn.net/topics/250079182》;20080808;1-2 *
基于UG的注塑模标准模架库的开发与应用;刘琨;《中国优秀硕士学位论文全文数据库 (工程科技Ⅰ辑)》;20120515;B016-191 *

Also Published As

Publication number Publication date
CN108614705A (zh) 2018-10-02

Similar Documents

Publication Publication Date Title
CN106453939B (zh) 一种流媒体接入方法及装置
CN108111874B (zh) 一种文件处理方法、终端及服务器
CN105183308A (zh) 图片显示方法及装置
CN106528576B (zh) 页面搜索方法、终端及***以及存储介质
CN109101447B (zh) 一种otg功能与充电功能并行执行的方法及终端
CN110109528B (zh) 应用程序的管控方法、移动终端及计算机可读存储介质
CN105682035A (zh) 实现定向通信的终端及方法
CN108614705B (zh) 一种数据编译处理方法及终端
CN105338245A (zh) 拍照共享方法、终端及***
CN105278995A (zh) 应用程序的管理方法、***、服务器和移动终端
CN106028382A (zh) Nv参数读写装置和方法
CN105242483A (zh) 一种实现对焦的方法和装置、实现拍照的方法和装置
CN105204849A (zh) 压力测试***及其实现方法
CN107194243B (zh) 一种移动终端及安装应用程序的方法
CN105227771B (zh) 图片传输方法和装置
CN106598844B (zh) 移动终端及基于移动终端代码缺陷率的计算方法
CN106507337B (zh) 一种fota升级设备及方法
CN107027113B (zh) Sim卡激活方法及移动终端
CN106776845B (zh) 一种信息流自适应管理方法及终端
CN109275038B (zh) 一种游戏直播方法、终端及计算机可读存储介质
CN106909395B (zh) 一种界面调用方法及终端
CN107992505B (zh) 一种网页信息处理方法及终端
CN107329958B (zh) 基于网页的语言转换方法及装置
CN106231140B (zh) 一种移动终端fota升级容错装置及方法
CN106453854B (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