CN112596821A - 一种安卓应用中动态加载算法的方法 - Google Patents
一种安卓应用中动态加载算法的方法 Download PDFInfo
- Publication number
- CN112596821A CN112596821A CN202110092425.XA CN202110092425A CN112596821A CN 112596821 A CN112596821 A CN 112596821A CN 202110092425 A CN202110092425 A CN 202110092425A CN 112596821 A CN112596821 A CN 112596821A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- file
- dynamic link
- link library
- server
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000004806 packaging method and process Methods 0.000 claims abstract description 7
- 238000005516 engineering process Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种安卓应用中动态加载算法的方法,包括如下步骤:S1,修改算法主程序,使算法能够动态加载算法模型文件;S2,将算法主程序封装为算法SO文件;S3,将所述的算法SO文件和算法模型文件保存到服务器,在需要使用算法时,安卓应用从服务器下载所述的算法SO文件和算法模型文件,通过安卓应用调用算法SO文件,并通过算法SO文件动态加载算法模型文件,从而实现算法的动态加载。本发明将算法主程序和算法模型文件拆成独立的SO算法动态链接库文件和抽离的算法模型文件,分别将SO算法动态链接库文件和算法模型文件存储到手机终端存储空间指定目录,而不是像SDK,将整个算法主程序和算法模型文件封装集成在安卓应用中,极大的降低安卓应用体积。
Description
技术领域
本发明涉及安卓应用算法使用领域,尤其涉及一种安卓应用中动态加载算法的方法。
背景技术
随着通信及计算机技术的发展,手机等智能终端的使用越来越广泛,移动应用程序的功能也越来越丰富,已经可以通过集成算法实现各种人工智能功能。
目前,安卓(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文件和不同算法模型文件以实现灵活切换不同算法相应功能。
Claims (8)
1.一种安卓应用中动态加载算法的方法,其特征在于包括如下步骤:
S1,修改算法主程序,使算法主程序能够动态加载算法模型文件;
S2,将算法主程序封装为算法SO文件;
S3,将所述的算法SO文件和算法模型文件保存到服务器,在需要使用算法时,安卓应用从服务器下载所述的算法SO文件和算法模型文件,通过安卓应用调用算法SO文件,并通过算法SO文件动态加载算法模型文件,从而实现算法的动态加载。
2.一种安卓应用中动态加载算法的方法,其特征在于包括如下步骤:
A1,修改算法主程序,使算法主程序能够动态加载算法模型文件;
将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;
修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;
A2,将所述算法主程序编译成算法动态链接库文件;
A21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;
A22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件;
A3,将所述算法SO文件和所述算法模型文件保存到服务端;
将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;
所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;
A4,在安卓应用中集成所述算法的功能函数;
在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;
在安卓应用中,根据步骤A3中的SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;
A5,所述安卓应用在运行时调用所述服务端的下载接口,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;
所述安卓应用在运行时通过下载代码,调用所述服务端的下载接口,从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;
A6,所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用Java Native Interface技术动态加载从服务端下载的算法SO文件和所述算法模型文件;
A7,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能。
3.根据权利要求2所述的安卓应用中动态加载算法的方法,其特征在于:步骤A22中,所述中间件为采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。
4.根据权利要求2所述的安卓应用中动态加载算法的方法,其特征在于:步骤A4中,所述下载代码是为实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;所述调用代码为指编写可以调用SO算法动态链接库文件的代码;所述安卓应用是为安装在安卓手机上的最终要调用算法功能的APP应用。
5.一种安卓应用中动态加载算法的方法,其特征在于包括如下步骤:
B1,对于多个算法主程序,修改每一个算法主程序,使算法主程序均能够动态加载算法模型文件;
将SDK文件中的算法模型文件单独抽离,将单独抽离的算法模型文件存储在手机存储空间指定目录下;
修改算法主程序,使算法主程序能够从手机存储空间指定目录加载单独抽离的算法模型文件;
B2,将每一个算法主程序编译成算法动态链接库文件;
B21,对于新的算法主程序,直接采用编译软件将算法主程序编译成SO动态链接库文件;
B22,对于已经以SDK文件形式存在的算法主程序,采用编译软件将SDK文件进行拆分,将可以改变SDK文件形式的文件编译成SO动态链接库文件,在SO动态链接库文件中通过中间件的形式加载不能改变SDK文件形式的文件;
B3,将所述每一个算法SO文件和每一个算法模型文件均保存到服务端;
将SO算法动态链接库文件和单独抽离的算法模型文件复制到服务器;
所述服务器包括自建服务器、云服务器,所述服务端为安装在服务器内可以提供文件下载的服务应用程序;
B4,在安卓应用中集成每一个算法的功能函数;
在安卓应用中,根据服务端的下载接口,编写下载代码,得到下载代码,以实现从服务端下载SO算法动态链接库文件和算法模型文件;
在安卓应用中,根据SO算法动态链接库文件的接口规范,编写调用代码,获得调用代码,以便在下载SO算法动态链接库文件后进行调用;
B5,所述安卓应用在运行时调用所述服务端的不同的下载接口,按需将所述算法SO文件和所述算法模型文件下载到手机终端存储空间;
所述安卓应用在运行时根据需要人工选择下载代码,调用所述服务端的下载接口,按需从服务端下载SO算法动态链接库文件和算法模型文件,将所述算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录;
所述安卓应用在运行时通过调用代码,通过SO算法动态链接库文件的接口规范,使用JAVA本地调用JNI技术动态加载从服务端下载的算法SO文件和所述算法模型文件;
B6,所述安卓应用通过算法SO文件和算法模型文件实现算法相应功能;
B7,所述安卓应用切换调用代码,实现切换不同算法SO文件和不同算法模型文件以实现灵活切换不同算法相应功能。
6.根据权利要求5所述的安卓应用中动态加载算法的方法,其特征在于:步骤B22中,所述中间件为采用中间软件的形式使得在SO动态链接库文件中能够加载不能改变SDK文件形式的文件。
7.根据权利要求5所述的安卓应用中动态加载算法的方法,其特征在于:步骤B4中,所述下载代码是为实现从服务端下载SO算法动态链接库文件和算法模型文件的代码;所述调用代码为指编写可以调用SO算法动态链接库文件的代码;所述安卓应用是为安装在安卓手机上的最终要调用算法功能的APP应用。
8.根据权利要求5所述的安卓应用中动态加载算法的方法,其特征在于:在安卓应用上还集成有代码编号,所述服务器端设有代码编号与SO算法动态链接库文件和算法模型文件对应表;
所述安卓应用在运行时首先根据代码编号,到服务器端代码编号与SO算法动态链接库文件和算法模型文件对应表中进行查询,根据代码编号查询到与代码编号对应的SO算法动态链接库文件和算法模型文件,然后调用所述服务端的下载接口,按需从服务端下载相应的SO算法动态链接库文件和算法模型文件,将相应的算法SO文件和所述算法模型文件下载到手机终端存储空间指定目录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110092425.XA CN112596821A (zh) | 2021-01-24 | 2021-01-24 | 一种安卓应用中动态加载算法的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110092425.XA CN112596821A (zh) | 2021-01-24 | 2021-01-24 | 一种安卓应用中动态加载算法的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112596821A true CN112596821A (zh) | 2021-04-02 |
Family
ID=75207407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110092425.XA Pending CN112596821A (zh) | 2021-01-24 | 2021-01-24 | 一种安卓应用中动态加载算法的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596821A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377429A (zh) * | 2021-07-06 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 安卓应用的运行方法及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160098284A1 (en) * | 2014-10-01 | 2016-04-07 | Fujitsu Limited | Dynamic device drivers |
CN105867973A (zh) * | 2016-03-30 | 2016-08-17 | 乐视控股(北京)有限公司 | 应用程序中so文件的加载方法及*** |
WO2018028055A1 (zh) * | 2016-08-10 | 2018-02-15 | 北京奇虎科技有限公司 | 在Windows***上运行Android应用程序的方法及装置 |
CN108595226A (zh) * | 2018-05-09 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 动态加载方法、装置及计算机可读存储介质 |
CN109814939A (zh) * | 2017-11-20 | 2019-05-28 | 华为技术有限公司 | 一种动态加载方法、目标文件的制作方法及装置 |
CN112052028A (zh) * | 2020-08-20 | 2020-12-08 | 北京智游网安科技有限公司 | 一种安卓应用程序包的生成方法、终端及存储介质 |
-
2021
- 2021-01-24 CN CN202110092425.XA patent/CN112596821A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160098284A1 (en) * | 2014-10-01 | 2016-04-07 | Fujitsu Limited | Dynamic device drivers |
CN105867973A (zh) * | 2016-03-30 | 2016-08-17 | 乐视控股(北京)有限公司 | 应用程序中so文件的加载方法及*** |
WO2018028055A1 (zh) * | 2016-08-10 | 2018-02-15 | 北京奇虎科技有限公司 | 在Windows***上运行Android应用程序的方法及装置 |
CN109814939A (zh) * | 2017-11-20 | 2019-05-28 | 华为技术有限公司 | 一种动态加载方法、目标文件的制作方法及装置 |
US20200278875A1 (en) * | 2017-11-20 | 2020-09-03 | Huawei Technologies Co., Ltd. | Dynamic loading method, and target file creation method and apparatus |
CN108595226A (zh) * | 2018-05-09 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 动态加载方法、装置及计算机可读存储介质 |
CN112052028A (zh) * | 2020-08-20 | 2020-12-08 | 北京智游网安科技有限公司 | 一种安卓应用程序包的生成方法、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
Z QU ET AL.: "DyDroid: Measuring Dynamic Code Loading and Its Security Implications in Android Applications", 《IEEE/IFIP INTERNATIONAL CONFERENCE ON DEPENDABLE SYSTEMS & NETWORKS》, 1 June 2017 (2017-06-01), pages 415 - 426, XP033147225, DOI: 10.1109/DSN.2017.14 * |
苏祥 等,: "一种易部署的Android应用程序动态监测方案", 《计算机科学》, vol. 47, no. 01, 29 February 2020 (2020-02-29), pages 262 - 268 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377429A (zh) * | 2021-07-06 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 安卓应用的运行方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8898662B2 (en) | Method and device for generating software installation packet | |
CN102023867B (zh) | 一种终端二次开发装置及二次开发平台构建方法 | |
CN103259936B (zh) | 移动终端操作***升级方法及其装置 | |
KR100932058B1 (ko) | 피어 투 피어 핸드셋 통신 시스템 및 방법 | |
CN105718287B (zh) | 一种智能终端的程序流式执行方法 | |
CN102054173B (zh) | 在智能卡上集成多电信应用的方法及其智能卡 | |
CN107193544B (zh) | 一种应用程序组件化开发方法及装置 | |
CN111258587B (zh) | 一种安卓应用插件化的实现方法、装置、设备及存储介质 | |
CN110308999B (zh) | 一种应用间动态共享依赖包的方法、存储介质及移动终端 | |
CN102681893B (zh) | 可执行程序的跨平台实现方法及移动终端 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN112506584B (zh) | 资源文件加载方法、装置、设备、存储介质以及产品 | |
CN112596821A (zh) | 一种安卓应用中动态加载算法的方法 | |
CN108845800B (zh) | 一种组件扩展功能的实现方法、装置、设备及存储介质 | |
CN104731622A (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN102968321A (zh) | 应用程序安装装置和应用程序安装方法 | |
CN101526902B (zh) | 用于移动终端的可执行文件压缩及加载方法 | |
CN100441012C (zh) | 一种更新移动终端用户界面的方法 | |
CN101339508B (zh) | 一种Java2微型版应用的运行方法和装置 | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
CN102117219A (zh) | 一种客户端生成的方法、***和终端设备 | |
KR100747901B1 (ko) | 이동통신단말기의 실행 파일 압축 방법 | |
CN106775879B (zh) | 基于安卓***客户端的vr应用免安装方法及其*** | |
CN100568178C (zh) | 一种控件添加方法 | |
CN102185970A (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 |