一种android平台调用SO功能的健壮性优化方法及介质与流程

文档序号:31872812发布日期:2022-10-21 20:04阅读:65来源:国知局
一种android平台调用SO功能的健壮性优化方法及介质与流程
一种android平台调用so功能的健壮性优化方法及介质
技术领域
1.本发明涉及android平台系统层安全调用技术领域,尤其涉及一种android平台调用so功能的健壮性优化方法。


背景技术:

2.对于现在android平台很多功能都是由java层代码来们c++开发的so模块中的功能来完成。由于so层类似于系统层,所以如果产生了错误或者异常则会导致程序崩溃。在java中异常非常常见,不会导致程序退出,如果产生了c++异常则会导致程序崩溃,且c++的异常和java的异常是不兼容的。
3.在研发人员对于跨平台的程序进行研发时,如果直接使用系统的函数c++开发的so模块功能会系统崩溃。
4.由此可知需要一种方案来提搞程序的健壮性,而不导致程序崩溃,同时对于一些错误能够提供更好的处理和反馈值。


技术实现要素:

5.本发明提供了一种android平台调用so功能的健壮性优化方法,建立转换接口以将c++层代码的异常对象转换为java代码的异常对象,将c++的异常转换为java的异常,不会导致程序退出,避免程序崩溃。
6.第一方面,本发明实施例提供了一种android平台调用so功能的健壮性优化方法,包括:
7.在c++层模块中编写异常对象;
8.建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;
9.在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
10.编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
11.优选的是,所述基础继承类的编写包括:
12.编写一个继承类;
13.定义所述继承类的成员变量;
14.编写构造函数,以提供存储所述成员变量的接口;
15.其中,所述成员变量包括异常对象和异常的错误描述。
16.优选的是,所述构造函数为explicit函数,所述继承类在为jni层的基础继承类,且在c++层模块中编写的异常对象均继承自所述jni层的基础继承类。
17.优选的是,所述异常对象包括:io异常类型、内存不足的异常类型、运行时异常类型和其他异常类型。
18.优选的是,所述在c++层模块内转换接口的建立包括:
19.建立异常对象指针,并返回java异常类型对象;
20.建立c++异常类型,并抛出c++异常对象;
21.重新捕获所述c++异常对象;
22.通过调用所述c++异常对象,重新抛出异常;
23.获取所述c++异常对象对应的c++异常类型,分别获取对应的java异常对象,并赋值给临时变量;
24.创建一个java异常类型。
25.优选的是,还包括基于不同的c++异常来抛出java异常类型,具体包括:
26.执行c++的函数功能并进行异常捕获;
27.并通过catch语句来捕所述异常;
28.调用c++的函数功能接口来进行java异常的转换并抛出java的异常。
29.优选的是,通过执行c++的函数功能并进行异常捕获包括:
30.使用cplusplusfunction函数将任一c++的功能使用异常捕获来封装;
31.并通过catch语句进行异常捕获。
32.优选的是,所述在java层中调用所述c++层模块的函数功能,以捕获所述c++层代码的异常对象,具体包括:在java层编写private析构函数调用cplusplusfunction函数接口进行异常捕获。
33.第二方面,本发明实施例提供了一种android平台调用so功能的健壮性优化装置,包括:
34.异常对象模块,其用于在c++层模块中编写异常对象;
35.转换模块,其用于建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;
36.调用模块,其用于在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
37.返回模块,其用于编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
38.第三方面,本发明实施例提供了一种电子设备,包括应用处理器和存储器,所述处理器用于实现所述存储器中存储得计算机管理程序式时实现android平台调用so功能的健壮性优化方法。
39.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现android平台调用so功能的健壮性优化方法的步骤。
40.有益效果
41.本发明提供了一种android平台调用so功能的健壮性优化方法,建立转换接口以将c++层代码的异常对象转换为java代码的异常对象,将c++的异常转换为java的异常,不会导致程序退出,避免程序崩溃。
附图说明
42.图1为本发明所述的android平台调用so功能的健壮性优化方法流程图。
43.图2为本发明所述的立转换接口以将c++层代码的异常对象转换为java代码的异
常对象流程图。
44.图3为本发明所述的android平台调用so功能的健壮性优化装置模块图。
45.图4为本发明实施例提供的android平台调用so功能的健壮性优化装置的装置的硬件结构示意图;
46.图5为本发明实施例提供的一种可能的电子设备的实施例示意图;
47.图6为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图。
具体实施方式
48.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.需要说明的是,在本发明的描述中,术语“中”、“上”、“下”、“横”、“内”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
50.此外,还需要说明的是,在本发明的描述中,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本发明中的具体含义。
51.如图1所示,基于背景技术提出的技术问题,本发明提供了一种android平台调用so功能的健壮性优化方法,包括如下步骤:
52.步骤s110、在c++层模块中编写异常对象;其中,异常对象至少包括:io异常类型、内存不足的异常类型、运行时异常类型和其他异常类型。
53.在c++模块中,要求能够抛出的异常更具体,从而在java层方便的依据不同的异常来做不同的处理,将几种最容易出错的异常类型进行了单独的举例。
54.异常类型1、编写io异常类型,具体可由如下代码实现:
55.class jioexception:public jthrowable{
56.constexpr string kjavaname="ljava/io/ioexception;";。}
57.其中,ioexception字符串表示和java中对应的类型的异常名称。jthrowable类是jni提供的异常基类,继承自这个基类,表明当前也是一种异常类型。jioexception异常表示操作io时产生异常,例如读取文件时异常,网络传输数据时异常等。constexpr string kjavaname表示异常类型名称,构造函数编写,构造函数则是创建一个java的异常类型。ioexception(){构造函数中则是通过java的对应类型的异常来创建一个java的异常类型。java/io/ioexception表示抛出的异常名称。
58.异常类型2、编写内存不足的异常类型,具体可由如下代码实现:
59.class joutofmemoryexception:public jthrowable{
60.constexpr string kjavaname="ljava/lang/outofmemoryerror;";}
61.其中,ljava/lang/outofmemoryerror字符串表示和java中对应的类型的异常名称。当需要分配一段内存时,发现分配失败时,抛出此类型的异常。joutofmemoryexception表示构造函数中是通过java的对应类型的异常来创建一个java的异常类型。即在此处创建一个java/lang/outofmemoryerror的异常类型。
62.异常类型3、运行时异常类型,具体可由如下代码实现:
63.class jruntimeexception:public jthrowable{
64.constexpr string kjavaname="ljava/lang/runtimeexception;";}
65.其中,"ljava/lang/runtimeexception;"字符串表示和java中对应的类型的异常名称。此异常当需要分配一段内存时,发现分配失败时抛出此类型的异常。}jruntimeexception(){表示构造函数中是通过java的对应类型的异常来创建一个java的异常类型。即在此处是创建一个java/lang/runtimeexception的异常类型。
66.异常类型4、其他异常类型,具体可由如下代码实现:
67.class junknowncppexception:public jthrowable{
68.constexpr string kjavaname="lcom/unknownexception;";}
69.其中,"lcom/unknownexception;"字符串表示和java中对应的类型的异常名称。junknowncppexception(){构造函数中则是通过java的对应类型的异常来创建一个java的异常类型。即创建一个com/unknownexception的异常类型。此异常表示除上述明确的异常的其他类型异常。
70.需要特别说明的是,步骤s110给出了在c++层模块中编写的异常对象类型,并将几种最容易出错的异常类型进行了单独的举例,以避免在应用中出错。
71.步骤s120、建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;具体的说转换接口以将c++层代码的异常对象转换为java代码的异常对象包括如下两个部分具体实现代码如下:
72.基于不同的c++异常来进行转换成对应的java异常类型。
73.如图2所示,在c++模块中,会有各种类型的异常,而在之前的步骤中,设计了不同类型的异常以及其对应的java异常类型。因此需要设计接口来将不同的c++异常类型转换成java的异常类型。具体接口设计如下:
74.步骤s121、定义一个java异常类型,并建立异常对象指针,以返回异常对象;具体的实现代码为:
75.jthrowable exception2java(std::exception_ptrptr){
76.try{std::rethrow_exception(ptr);}
77.其中,jthrowable newex表示定义一个java异常类型;std::rethrow_exception(ptr)表示通过调用std::rethrow_exception来重新抛出异常。
78.步骤s122、获取并判断异常类型;
79.1)如果是jniexcep异常类型,赋值给定义的临时变量,具体的实现代码为:
80.catch(const jniexcep&ex){
81.newex=ex.getthrowable();}
82.其中,jniexcep&ex表示异常类型,newex表示临时变量,ex.getthrowable为临时
变量赋值名称。
83.2)如果是运行时异常类型,基于之前定义好的运行时异常来获取对应的java类型的异常,具体的实现代码为:
84.catch(const std::runtime_error&ex){
85.newex=jruntimeexception(ex);}
86.其中,untime_error&ex表示是运行时异常,newex表示临时变量,runtimeexception(ex)表示获取对应的java类型的异常。
87.3)如果是内存分配异常,则说明当前内存不够使用,那么则和之前定义好的内存不足异常匹配,具体的实现代码为:
88.catch(const std::bad_alloc&ex){
89.newex=joutofmemoryexception(ex)}
90.其中,bad_alloc&ex表示内存分配异常,newex表示临时变量,outofmemoryexception(ex)表示内存不足异常匹配。
91.4)如果是io操作异常,则说明当前io出现了错误,那么则和之前定义好的io异常匹配,具体的实现代码为:
92.catch(const std::ios_base::failure&ex){
93.newex=jioexception(ex);}
94.其中,ios_base::failure&ex表示io操作异常,newex表示临时变量,jioexception(ex)表示io异常匹配。
95.5)否则是c++的其他异常类型,则转换成之前定义的其他c++异常类型,具体的实现代码为:
96.catch(const std::exception&ex){
97.newex=junknowncppexception(ex);}
98.6)其中,exception&ex表示其他异常类型,newex表示临时变量junknowncppexception(ex);表示其他c++异常类型
99.其获取并判断异常类型参数类型是c++的异常类型。而返回值则是java异常类型对象。此次异常类型已经产生,所以为了便于取出异常,使用try catch来重新捕获异常并抛出异常。
100.需要特别说明的是,本步骤s120中将c++的其他异常类型放到判断语句最后,这样优先进行已知定义好的异常类型来处理。同时需要将最频繁常见的异常类型放到最前面判断,最不常见的放到后面进行判断,实现了提高程序的执行效率的有益效果。
101.步骤s123、设计基于不同的c++异常来抛出java异常类型:
102.在c++模块中,当产生了一个c++的异常后,需要基于c++的异常抛出一个java类型的异常,从而该异常会被上层的java代码所捕获。
103.建立异常类型抛出对象功能函数,具体的实现代码为:
104.voidthrowexception2javaexception(){
105.其中,throwexception2javaexception为出java异常类型函数名称。
106.通过调用获取当前的已经产生的异常类型来获取异常的指针,具体的实现代码为:std::exception_ptrptr=std::current_exception();
107.其中,ptr表示异常类型指针,:current_exception表示当前的已经产生的异常类型。
108.然后调用之前的转换接口来将c++的异常指针转换成java的异常对象,具体的实现代码为:
109.jthrowable trowable=exception2java(ptr);
110.其中,trowable表示java的异常对象,exception2java(ptr)表示将c++的异常指针。
111.最后,获取java的环境变量env来抛出一个java的异常,具体的实现代码为:
112.env-》throw(trowable);
113.throw(trowable)表示通过环境变量的throw则抛出了一个java的异常。
114.需要特别说明的是,本步骤中基于不同的c++异常来抛出java异常类型,并通过调用之前的转换接口来将c++的异常指针转换成java的异常对象,实现了java的异常对象与c++的异常类型之间转换的有益效果。
115.步骤s124、在c++模块中,当产生了一个c++的异常后,基于新的抛出模式来抛出异常。如下函数执行一个函数功能并进行异常捕获。具体包括如下步骤:
116.执行c++的功能;将任何c++的功能使用异常捕获来封装起来,
117.void cplusplusfunction(){
118.try{
119.其中,cplusplusfunction表示封装函数,
120.当执行过程中有任何异常,通过下面的catch语句来捕获:
121.}catch(...){
122.throwexception2javaexception();
123.其中,throwexception2javaexception()表示调用之前的提供的接口来进行java异常的转换并抛出java的异常。}
124.需要特别说明的是,本步骤中基于不同的c++异常来抛出java异常类型,并通过调用之前的转换接口来将c++的异常转换成java的异常,实现了java的异常与c++的异常之间转换的有益效果。
125.步骤s130、在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
126.设计java层功能。当java层代码来调用一个so模块中的函数时,则需要在java层中进行异常捕获,此时基于前面的铺垫功能,则可以在java层中捕获到来自c++层代码的异常,并且异常类型是和java层的异常类型一致。具体可以由如下代码实现:
127.调用c++层模块的接口并进行异常捕获,具体的实现代码为:
[0128][0129]
其中,callcplusplusfunction()throws exception表示调用c++层模块的封装函数接口ioexception e表示io的异常类型,outofmemoryerror e表示内存分配失败的异常类型,runtimeexception e表示捕获运行时的异常类型,nknownexception e)表示未知类型的异常类型。
[0130]
需要特别说明的是,本步骤s130在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象,不会导致程序退出,实现了避免程序崩溃的有益效果。
[0131]
步骤s140、编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
[0132]
设计jni层的异常统一基类。
[0133]
首先设计出关于所有jni的异常基类,所有的c++代码抛出异常时都必须基于此基类异常来继承,从而将所有c++中抛出的异常通过此进行统一的设定,将此异常转换为java的异常。具体实现如下:
[0134]
class jniexcep:public exception{
[0135]
编写一个类继承自异常类std::exception。从而jniexcep是一个具有抛出异常的功能。接下来定义此类的成员变量。
[0136]
jthrowable throwable;对应jni中的一个异常对象。
[0137]
std::string errormessage;定义一个存储异常的错误描述。
[0138]
接下来编写其对应的接口:
[0139]
explicit jniexcep(jthrowable throwable)throwable(throwable){
[0140]
构造函数提供一个将异常对象存储到成员变量的接口中;}
[0141]
需要特别说明的是,关于所有jni的异常基类,所有的c++代码抛出异常时都此基类异常来继承,实现了有效避免内存崩溃的有益效果。
[0142]
图3为本发明一种android平台调用so功能的健壮性优化装置实施例的模块图,如图3所示,本发明实施例中还提供了一种android平台调用so功能的健壮性优化装置一个实施例,该装置包括:异常对象模块210,其用于在c++层模块中编写异常对象;转换模块220,其用于建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;调用模块230,其用于在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;返回模块240,其用于编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
[0143]
图3从模块化功能实体的角度对本技术实施例中的android平台调用so功能的健
壮性优化装置进行了描述,下面从硬件处理的角度对本技术实施例中的阻止系统函数调用功能的装置进行详细描述,图3为本发明实施例提供的android平台调用so功能的健壮性优化装置实施例的模块图装置的硬件结构示意图;请参阅图4,本发明实施例中的android平台调用so功能的健壮性优化装置实施例的模块图300为一个实施例,包括:
[0144]
输入装置301、输出装置302、处理器303和存储器304(其中处理器303的数量可以一个或多个,图3中以一个处理器303为例)。在本发明的一些实施例中,输入装置301、输出装置302、处理器303和存储器304可通过总线或其它方式连接,其中,图3中以通过总线连接为例。
[0145]
其中,通过调用存储器304存储的操作指令,处理器303,用于执行如下步骤:
[0146]
在c++层模块中编写异常对象;
[0147]
建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;
[0148]
在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
[0149]
编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
[0150]
通过调用存储器304存储的操作指令,处理器303,还用于执行图1对应的实施例中的任一方式。
[0151]
图5为本发明实施例提供的一种可能的电子设备的实施例示意图,如图5所示。
[0152]
在另一实施例中,本发明还提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤。
[0153]
在c++层模块中编写异常对象;
[0154]
建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;
[0155]
在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
[0156]
编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
[0157]
在具体实施过程中,处理器420执行计算机程序411时,可以实现图1对应的实施例中任一实施方式。
[0158]
由于本实施例所介绍的电子设备为实施本发明实施例中一种具有阻止系统函数调用功能的装置所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本技术所欲保护的范围。
[0159]
图6为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图,请参阅图6。
[0160]
如图6所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:
[0161]
在c++层模块中编写异常对象;
[0162]
建立转换接口以将c++层代码的异常对象转换为java代码的异常对象;
[0163]
在java层中调用所述c++层模块,以捕获所述c++层代码的异常对象;
[0164]
编写基础继承类,以识别异常对象,并抛出所述异常对象的描述,将其作为调用so功能的返回值。
[0165]
在具体实施过程中,该计算机程序511被处理器执行时可以实现图1对应的实施例中任一实施方式。
[0166]
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
[0167]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0168]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0169]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0170]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0171]
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的阻止系统函数调用的方法中的流程。
[0172]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0173]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,
装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0174]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0175]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0176]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0177]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccess memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0178]
本发明提供了一种android平台调用so功能的健壮性优化方法,建立转换接口以将c++层代码的异常对象转换为java代码的异常对象,将c++的异常转换为java的异常,不会导致程序退出,避免程序崩溃。
[0179]
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1