掌桥专利:专业的专利平台
掌桥专利
首页

一种安卓应用中动态加载算法的方法

文献发布时间:2023-06-19 10:27:30


一种安卓应用中动态加载算法的方法

技术领域

本发明涉及安卓应用算法使用领域,尤其涉及一种安卓应用中动态加载算法的方法。

背景技术

随着通信及计算机技术的发展,手机等智能终端的使用越来越广泛,移动应用程序的功能也越来越丰富,已经可以通过集成算法实现各种人工智能功能。

目前,安卓(Android)移动应用程序需要集成算法能力时,往往需要在应用开发过程中,将算法SDK(Software Development Kit)和模型文件嵌入到应用中,并和应用主程序一起打包。如果应用程序需要集成多种算法能力,就需要嵌入多个算法的SDK和模型文件,而单个算法的SDK和模型文件体积经常在上百兆左右,这种情况下,打包的安卓移动应用程序体积会异常大,影响用户下载使用,也不便于算法更新及新算法能力的集成。

发明内容

为了解决上述技术问题,本发明提出一种安卓应用中算法动态加载的方法,旨在解决目前安卓应用中集成算法SDK导致应用程序体积大、算法更新不方便的问题,使安卓应用能够动态加载算法。本发明安卓应用中算法动态加载的方法包括如下步骤:

S1,修改算法主程序,使算法能够动态加载算法模型文件;

S2,将算法主程序封装为算法SO文件;

S3,将所述的算法SO文件和算法模型文件保存到服务器,在需要使用算法时,安卓应用从服务器下载所述的算法SO文件和算法模型文件,通过安卓应用调用算法SO文件,并通过算法SO文件动态加载算法模型文件,从而实现算法的动态加载。

具体的说,本发明安卓应用中算法动态加载的方法,包括如下步骤:

A1、修改算法主程序,使算法能够动态加载算法模型文件;

传统的方法是将算法主程序和算法模型文件统一封装成SDK文件,本发明是将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;

修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;

A2,将所述算法主程序编译成算法动态链接库文件;

A21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;

A22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件,由此解决了已经以SDK文件形式存在的算法主程序,无法修改成SO动态链接库文件的技术难题。

SDK(Software Development Kit)为软件开发工具包,是现有安卓系统调用第三方程序的常用技术,属于现有技术,本发明并未对SDK技术做出创新,在此不再累述;

SO(Shared Object,SO)为动态链接库文件,是一种调用第三方程序的技术,本发明并未对SO技术做出创新,仅是采用了SO动态链接库文件的形式,对于SO动态链接库文件的工作原理及工作方式,在此不再累述;

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,本发明算法是指应用于安卓系统的一系列解决问题的清晰指令;

算法模型文件:算法模型,是指是集成了一系列解决问题的清晰指令的解题步骤,本发明算法模型文件是指应用于安卓系统的,集成了一系列解决问题的清晰指令的解题步骤的文件。

中间件:是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。本发明中间件是指采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。

A3,将所述算法SO文件和所述算法模型文件保存到服务端;

将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;

所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;

A4,在安卓应用中集成所述算法的功能函数;

在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;

在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;

所述下载代码是指实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;

所述调用代码是指编写可以调用SO算法动态链接库文件的代码;

所述安卓应用是指安装在安卓手机上的最终要调用算法功能的应用;简称APP;

A5,所述安卓应用在运行时调用所述服务端的下载接口,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

所述安卓应用在运行时通过下载代码,调用所述服务端的下载接口,从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;

A6,所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用(Java Native Interface,JNI)技术动态加载从服务端下载的算法SO文件和所述算法模型文件;

A7,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。

有益效果:相比于传统将算法SDK嵌入安卓应用一起打包的方式,本发明支持安卓应用动态加载算法程序,支持将算法SO文件和算法模型文件保存到服务端,当需要使用算法功能时,从服务器下载算法SO文件和算法模型文件并进行加载,以实现算法功能,该方法大大降低安卓应用体积,并支持根据需求切换算法功能,增强用户体验。

本发明将算法主程序和算法模型文件拆成独立的SO算法动态链接库文件和抽离的算法模型文件,分别将SO算法动态链接库文件和算法模型文件存储到手机终端存储空间指定目录,而不是像SDK方式,将整个算法主程序和算法模型文件封装集成在安卓应用中,由此,极大的降低安卓应用体积。

对于多个算法主程序的场景来说,本发明还提出一种应用于多个算法主程序的安卓应用中算法动态加载的方法,包括如下步骤:

B1,对于多个算法主程序,修改每一个算法主程序,使算法均能够动态加载算法模型文件;

传统的方法是将算法主程序和算法模型文件统一封装成SDK文件,本发明是将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;

修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;

B2,将每一个算法主程序编译成算法动态链接库文件;

B21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;

B22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件,由此解决了已经以SDK文件形式存在的算法主程序,无法修改成SO动态链接库文件的技术难题。

SDK(Software Development Kit)为软件开发工具包,是现有安卓系统调用第三方程序的常用技术,属于现有技术,本发明并未对SDK技术做出创新,在此不再累述;

SO(Shared Object,SO)为动态链接库文件,是一种调用第三方程序的技术,本发明并未对SO技术做出创新,仅是采用了SO动态链接库文件的形式,对于SO动态链接库文件的工作原理及工作方式,在此不再累述;

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,本发明算法是指应用于安卓系统的一系列解决问题的清晰指令;

算法模型文件:算法模型,是指是集成了一系列解决问题的清晰指令的解题步骤,本发明算法模型文件是指应用于安卓系统的,集成了一系列解决问题的清晰指令的解题步骤的文件。

中间件:是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。本发明中间件是指采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。

B3,将所述每一个算法SO文件和每一个算法模型文件均保存到服务端;

将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;

所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;

B4,在安卓应用中集成每一个算法的功能函数;

在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;

在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;

所述下载代码是指实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;

所述调用代码是指编写可以调用SO算法动态链接库文件的代码;

所述安卓应用是指安装在安卓手机上的最终要调用算法功能的应用;简称APP;

B5,所述安卓应用在运行时调用所述服务端的不同的下载接口,按需将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

所述安卓应用在运行时根据需要人工选择下载代码,调用所述服务端的下载接口,按需从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;

所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用(Java Native Interface,JNI)技术动态加载从服务端下载的算法SO文件和所述算法模型文件;

B6,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。

B7,所述安卓应用切换调用代码,实现切换不同算法SO文件和不同算法模型文件以实现灵活切换不同算法相应功能。

有益效果:相比于传统将算法SDK嵌入安卓应用一起打包的方式,本发明支持安卓应用动态加载算法程序,支持将算法SO文件和算法模型文件保存到服务端,当需要使用算法功能时,从服务器下载算法SO文件和算法模型文件并进行加载,以实现算法功能,该方法大大降低安卓应用体积,并支持根据需求切换算法功能,增强用户体验。

本发明将算法主程序和算法模型文件拆成独立的SO算法动态链接库文件和抽离的算法模型文件,分别将SO算法动态链接库文件和算法模型文件存储到手机终端存储空间指定目录,而不是像SDK方式,将整个算法主程序和算法模型文件封装集成在安卓应用中,由此,极大的降低安卓应用体积。

附图说明

图1为本发明流程示意图;

图2为本发明安卓应用加载动态算法示例图。

具体实施方式

实施例1:一种安卓应用中算法动态加载的方法,旨在解决目前安卓应用中集成算法SDK导致应用程序体积大、算法更新不方便的问题,使安卓应用能够动态加载算法。本发明安卓应用中算法动态加载的方法包括如下步骤:

S1,修改算法主程序,使算法主程序能够动态加载算法模型文件;

S2,将算法主程序封装为算法SO文件;

S3,将所述的算法SO文件和算法模型文件保存到服务器,在需要使用算法时,安卓应用从服务器下载所述的算法SO文件和算法模型文件,通过安卓应用调用算法SO文件,并通过算法SO文件动态加载算法模型文件,从而实现算法的动态加载。

本发明将算法主程序和算法模型文件拆成独立的SO算法动态链接库文件和抽离的算法模型文件,分别将SO算法动态链接库文件和算法模型文件存储到手机终端存储空间指定目录,而不是像SDK方式,将整个算法主程序和算法模型文件封装集成在安卓应用中,由此,极大的降低安卓应用体积。

实施例2:如图1所示,本发明安卓应用中算法动态加载的方法,包括如下步骤:

A1、修改算法主程序,使算法主程序能够动态加载算法模型文件;

传统的方法是将算法主程序和算法模型文件统一封装成SDK文件,本发明是将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;

修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;

A2,将所述算法主程序编译成算法动态链接库文件;

A21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;

A22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件,由此解决了已经以SDK文件形式存在的算法主程序,无法修改成SO动态链接库文件的技术难题。

SDK(Software Development Kit)为软件开发工具包,是现有安卓系统调用第三方程序的常用技术,属于现有技术,本发明并未对SDK技术做出创新,在此不再累述;

SO(Shared Object,SO)为动态链接库文件,是一种调用第三方程序的技术,本发明并未对SO技术做出创新,仅是采用了SO动态链接库文件的形式,对于SO动态链接库文件的工作原理及工作方式,在此不再累述;

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,本发明算法是指应用于安卓系统的一系列解决问题的清晰指令;

算法模型文件:算法模型,是指是集成了一系列解决问题的清晰指令的解题步骤,本发明算法模型文件是指应用于安卓系统的,集成了一系列解决问题的清晰指令的解题步骤的文件。

中间件:是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。本发明中间件是指采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。

A3,将所述算法SO文件和所述算法模型文件保存到服务端;

将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;

所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;

A4,在安卓应用中集成所述算法的功能函数;

在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;

在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;

所述下载代码是指实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;

所述调用代码是指编写可以调用SO算法动态链接库文件的代码;

所述安卓应用是指安装在安卓手机上的最终要调用算法功能的应用;简称APP;

A5,所述安卓应用在运行时调用所述服务端的下载接口,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

首次使用对应算法时,所述安卓应用调用所述服务端的下载接口,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

所述安卓应用在运行时通过下载代码,调用所述服务端的下载接口,从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;

A6,所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用(Java Native Interface,JNI)技术动态加载从服务端下载的算法SO文件和所述算法模型文件;

A7,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。

如图2所示,安卓应用通过加载算法SO文件,实现加载算法模型文件的加载,进而实现算法相应功能。

相比于传统将算法SDK嵌入安卓应用一起打包的方式,本发明支持安卓应用动态加载算法程序,支持将算法SO文件和算法模型文件保存到服务端,当需要使用算法功能时,从服务器下载算法SO文件和算法模型文件并进行加载,以实现算法功能,该方法大大降低安卓应用体积,并支持根据需求切换算法功能,增强用户体验。

本发明将算法主程序和算法模型文件拆成独立的SO算法动态链接库文件和抽离的算法模型文件,分别将SO算法动态链接库文件和算法模型文件存储到手机终端存储空间指定目录,而不是像SDK方式,将整个算法主程序和算法模型文件封装集成在安卓应用中,由此,极大的降低安卓应用体积。

实施例3:对于多个算法主程序的场景来说,本发明还提出一种应用于多个算法主程序的安卓应用中算法动态加载的方法,包括如下步骤:

B1,对于多个算法主程序,修改每一个算法主程序,使每一个算法主程序均能够动态加载算法模型文件;

传统的方法是将算法主程序和算法模型文件统一封装成SDK文件,本发明是将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;

修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;

B2,将每一个算法主程序编译成算法动态链接库文件;

B21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;

B22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件,由此解决了已经以SDK文件形式存在的算法主程序,无法修改成SO动态链接库文件的技术难题。

SDK(Software Development Kit)为软件开发工具包,是现有安卓系统调用第三方程序的常用技术,属于现有技术,本发明并未对SDK技术做出创新,在此不再累述;

SO(Shared Object,SO)为动态链接库文件,是一种调用第三方程序的技术,本发明并未对SO技术做出创新,仅是采用了SO动态链接库文件的形式,对于SO动态链接库文件的工作原理及工作方式,在此不再累述;

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,本发明算法是指应用于安卓系统的一系列解决问题的清晰指令;

算法模型文件:算法模型,是指是集成了一系列解决问题的清晰指令的解题步骤,本发明算法模型文件是指应用于安卓系统的,集成了一系列解决问题的清晰指令的解题步骤的文件。

中间件:是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。本发明中间件是指采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。

B3,将所述每一个算法SO文件和每一个算法模型文件均保存到服务端;

将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;

所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;

B4,在安卓应用中集成每一个算法的功能函数;

在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;

在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;

所述下载代码是指实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;

所述调用代码是指编写可以调用SO算法动态链接库文件的代码;

所述安卓应用是指安装在安卓手机上的最终要调用算法功能的应用;简称APP;

B5,所述安卓应用在运行时调用所述服务端的不同的下载接口,按需将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

所述安卓应用在运行时根据需要人工选择下载代码,调用所述服务端的下载接口,按需从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;

所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用(Java Native Interface,JNI)技术动态加载从服务端下载的算法SO文件和所述算法模型文件;

B6,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。

B7,所述安卓应用切换调用代码,实现切换不同算法SO文件和不同算法模型文件以实现灵活切换不同算法相应功能。

实施例4:对于多个算法主程序的场景来说,本发明还提出一种应用于多个算法主程序的安卓应用中算法动态加载的方法,包括如下步骤:

B1,对于多个算法主程序,修改每一个算法主程序,使每一个算法主程序均能够动态加载算法模型文件;

传统的方法是将算法主程序和算法模型文件统一封装成SDK文件,本发明是将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;

修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;

B2,将每一个算法主程序编译成算法动态链接库文件;

B21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;

B22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件,由此解决了已经以SDK文件形式存在的算法主程序,无法修改成SO动态链接库文件的技术难题。

SDK(Software Development Kit)为软件开发工具包,是现有安卓系统调用第三方程序的常用技术,属于现有技术,本发明并未对SDK技术做出创新,在此不再累述;

SO(Shared Object,SO)为动态链接库文件,是一种调用第三方程序的技术,本发明并未对SO技术做出创新,仅是采用了SO动态链接库文件的形式,对于SO动态链接库文件的工作原理及工作方式,在此不再累述;

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,本发明算法是指应用于安卓系统的一系列解决问题的清晰指令;

算法模型文件:算法模型,是指是集成了一系列解决问题的清晰指令的解题步骤,本发明算法模型文件是指应用于安卓系统的,集成了一系列解决问题的清晰指令的解题步骤的文件。

中间件:是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。本发明中间件是指采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。

B3,将所述每一个算法SO文件和每一个算法模型文件均保存到服务端;

将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;

所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;

B4,在安卓应用中集成每一个算法的功能函数;

在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;

在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;

所述下载代码是指实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;

所述调用代码是指编写可以调用SO算法动态链接库文件的代码;

所述安卓应用是指安装在安卓手机上的最终要调用算法功能的应用;简称APP;

B5,所述安卓应用在运行时调用所述服务端的不同的下载接口,按需将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;

进一步的,在安卓应用上还集成有代码编号,所述服务器端设有代码编号与SO算法动态链接库文件和算法模型文件对应表,

所述安卓应用在运行时首先根据代码编号,到服务器端代码编号与SO算法动态链接库文件和算法模型文件对应表中进行查询,根据代码编号查询到与代码编号对应的SO算法动态链接库文件和算法模型文件,然后调用所述服务端的下载接口,按需从服务端下载相应的SO算法动态链接库文件和算法模型文件,将相应的算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;

所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用(Java Native Interface,JNI)技术动态加载从服务端下载的算法SO文件和所述算法模型文件;

B6,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。

B7,所述安卓应用切换调用代码,实现切换不同算法SO文件和不同算法模型文件以实现灵活切换不同算法相应功能。

相关技术
  • 一种安卓应用中动态加载算法的方法
  • 一种安卓应用在PC显示器中的显示方法及装置
技术分类

06120112554262