一种安卓系统应用程序的编译方法技术方案

技术编号:24289545 阅读:14 留言:0更新日期:2020-05-26 19:59
本申请公开了一种安卓系统应用程序的编译方法,包括:针对所述APP要实现的应用层与系统运行层间交互的每个模块,在所述Android系统中选择编译所述模块时需要继承、且在Android SDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给所述APP的安装程序APK进行编译;将针对所述模块的HIDL接口与系统运行层间被隐藏的接口打包成另一个jar包,作为接口依赖库提供给所述APK进行编译;利用针对所述每个模块的所述一个jar包和所述另一个jar包,编译所述APK。应用本申请,能够实现应用程序的单仓编译。

A compiling method of Android Application

【技术实现步骤摘要】
一种安卓系统应用程序的编译方法
本申请涉及安卓系统技术,特别涉及一种安卓系统应用程序(APP)的编译方法。
技术介绍
Android8.0google引入了一个非常重要的特性名为Projecttreble,提供了一个稳定的新供应商接口,这样一来,设备制造商只需更新Android操作系统框架,即可跳过芯片制造商直接提供新的Android版本,其目的就是为了解决Android版本碎片化的问题。硬件抽象层(HAL)接口定义语言(HIDL)是用于指定HAL和其用户之间的接口的一种接口描述语言(IDL)。HIDL允许指定类型和方法调用,其中,指定的类型和方法会汇集到接口和软件包中。从更广泛的意义上来说,HIDL是用于在可以独立编译的代码库之间进行通信的系统。Treble的架构改变建立在HIDL的技术之上,也即利用HIDL技术实现独立编译的代码库进行通信,从而实现制造商以更低的成本更轻松、更快速地将设备更新到新版Android系统。通俗的说是这样,在以往Android更新操作系统,供应商(照相、传感器...)或芯片制造商(高通、MTK...)必须要先进行硬件适配,然后交由制造商(手机品牌)生产手机。这个过程往往比较漫长,也就是为什么Android更新版本后,绝大多数手机(Google亲儿子除外)需要很久才能收到系统更新的通知。Treble就是意在缩短这个过程,HIDL是基本的技术支撑。在进行安卓系统的APP编译时,需要继承很多安卓系统中的基类,以下将这些需要被继承的基类称为依赖类。AndroidAPP为了方便灵活的开发和升级,需要实现单仓编译方案。但HIDL框架引入后,很多需要被继承的依赖类没有在AndroidSDK里暴露,对于需要实现应用层与系统运行层间交互从而依赖于HIDL接口的APP(例如需要实现RIL的APP),使用HIDL接口无法直接继承和引用这些被隐藏的依赖类,因此,不能够实现单仓编译,导致APP只能源码中开发编译,失去了灵活性。
技术实现思路
本申请提供一种安卓系统APP的编译方法,能够在引入HIDL接口的安卓系统中实现APP的单仓编译。为实现上述目的,本申请采用如下技术方案:一种安卓系统应用程序的编译方法,在基于硬件抽象层接口定义语言HIDL框架的安卓Android系统中,对于依赖HIDL接口的应用程序APP,所述方法包括:针对所述APP要实现的应用层与系统运行层间交互的每个模块,在所述Android系统中选择编译所述模块时需要继承、且在AndroidSDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给所述APP的安装程序APK进行编译;将针对所述模块的HIDL接口与系统运行层间被隐藏的接口打包成另一个jar包,作为接口依赖库提供给所述APK进行编译;利用针对所述每个模块的所述一个jar包和所述另一个jar包,编译所述APK。较佳地,将所述一个jar包提供给所述APK进行编译的方式包括:将所述一个jar包拷贝到所述APK的编译工程中,并标记为仅编译依赖该jar包,所述APK中不包括所述一个jar包。较佳地,将另一个jar包提供给所述APK进行编译的方式包括:将所述一个jar包拷贝到所述APK的编译工程中,并标记为仅编译依赖该jar包,所述APK中不包括所述一个jar包。较佳地,针对RIL模块,所述需要继承、且在AndroidSDK中没有公开的基类包括:HwBinder类、HwBlob类、HwParcel类、IHwBinder类和IHwInterface类。较佳地,针对RIL模块,所述需要继承、且在AndroidSDK中没有公开的方法包括:WorkSource类的getName、get和size方法。较佳地,针对RIL模块,所述被隐藏接口为LTERadio接口。由上述技术方案可见,在基于硬件抽象层接口定义语言HIDL框架的安卓Android系统中,对于依赖于HIDL接口的APP,选择APP编译时需要继承、且在AndroidSDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给APP的安装程序(APK)进行编译;将被隐藏的接口打包成另一个jar包,作为接口依赖库提供给APK进行编译;利用前述两个jar包,编译相应的APK。通过上述方式,将SDK中没有公开的相应基类、方法和LTERadio接口打包成jar包,提供给APK依赖,使得APK编译过程中可以正常使用相应的基类、方法和接口,实现应用上层与系统运行库间的正常交互,从而在引入HIDL接口的安卓系统中实现APP的单仓编译。附图说明图1为引入HIDL框架前RIL的交互框架示意图;图2为引入HIDL框架后RIL的交互框架示意图;图3为本申请中APP编译方法的基本流程示意图;图4为本申请中打包的jar包与RILJAT组件的依赖关系图。具体实施方式为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。在安卓系统的APP中,为实现特定功能,可能需要实现一些模块,这些模块用于实现应用层与系统运行层间的交互。对于这类模块,在引入HIDL框架后,是需要利用HIDL接口的,但是按照现有方式无法实现单仓编译。以RIL模块为例,图1和图2分别为引入HIDL框架前后RIL的交互框架示意图。RIL框架包括RILJ和RILC。如图1所示,在引入HIDL框架前,RILJ和RILC之间是通过socket接口相连的,可以实现单仓编译。如图2所示,在引入HIDL框架后,RILJ和RILC之间的接口变成了HIDL接口,但是实现HIDL时需要继承的HwBinder、HwBlob、HwParcel、IHwBinder和IHwInterface这些类本身为@hide属性,需要使用的WorkSource类的getName,get,size等方法也为@hide属性,这些@hide属性的基类和方法没有在androidSDK中开放;同时,实现RIL模块时需要使用的interface中定义的LTERadio接口也没法打包到SDK中。由于上述被隐藏的类、方法和接口没有打包到SDK中,因此无法直接提供给APK开发人员使用,从而无法实现RIL模块的单仓编译,继而影响整个APP的编译。针对上述情况,本申请提供一种APP的编译方法,能够针对每个用于实现应用层与系统运行层间交互的模块,实现单仓编译,从而保证整个APP实现单仓编译。图3为本申请中APP编译方法的基本流程示意图。如图1所示,该方法包括:步骤301,针对APP要实现的应用层与系统运行层间交互的每个模块,选择编译相应模块时需要继承、且在AndroidSDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给APP的APK进行编译。以要实现RIL模块为例,选择编译RIL模块时需要继承、且在AndroidSDK中没有公开的基类和方法,也就是将HwBinder类、HwBlob类、Hw本文档来自技高网
...

【技术保护点】
1.一种安卓系统应用程序的编译方法,其特征在于,在基于硬件抽象层接口定义语言HIDL框架的安卓Android系统中,对于依赖HIDL接口的应用程序APP,所述方法包括:/n针对所述APP要实现的应用层与系统运行层间交互的每个模块,在所述Android系统中选择编译所述模块时需要继承、且在Android SDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给所述APP的安装程序APK进行编译;/n将针对所述模块的HIDL接口与系统运行层间被隐藏的接口打包成另一个jar包,作为接口依赖库提供给所述APK进行编译;/n利用针对所述每个模块的所述一个jar包和所述另一个jar包,编译所述APK。/n

【技术特征摘要】
1.一种安卓系统应用程序的编译方法,其特征在于,在基于硬件抽象层接口定义语言HIDL框架的安卓Android系统中,对于依赖HIDL接口的应用程序APP,所述方法包括:
针对所述APP要实现的应用层与系统运行层间交互的每个模块,在所述Android系统中选择编译所述模块时需要继承、且在AndroidSDK中没有公开的基类和/或方法,将其编译出来并打包成一个jar包,提供给所述APP的安装程序APK进行编译;
将针对所述模块的HIDL接口与系统运行层间被隐藏的接口打包成另一个jar包,作为接口依赖库提供给所述APK进行编译;
利用针对所述每个模块的所述一个jar包和所述另一个jar包,编译所述APK。


2.根据权利要求1所述的方法,其特征在于,将所述一个jar包提供给所述APK进行编译的方式包括:将所述一个jar包拷贝到所述APK的编译工程中,并标记为仅编译依赖该jar包,所述APK中不包括所...

【专利技术属性】
技术研发人员:谭垠金伟民
申请(专利权)人:成都鼎桥通信技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1