不使用Java_com_xxx方式调用ndk的方式,这种方法的优点是灵活,可配置,不必限制在Java_com_xxx命名依赖中。

步骤如下:

第1步,在JNI初始化方法中调用自定义注册方法,并判断成功与否通知Java端。

jint JNI_OnLoad(JavaVM* vm, void* reserved) {
JNIEnv* env = NULL;
sVm = vm; if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) == JNI_OK)
return JNI_ERR;
if (注册方法(env) == JNI_OK)
return JNI_VERSION_1_4; return JNI_ERR;
}

第2步,在cpp或c文件(位置任意)中声明JNINativeMethod 方法数组

static JNINativeMethod methods[] = {
"nativeInit", "()V", (void*) xxx_init, //这样就可以映射到java的nativeInit方法了
"", "", (void *) xxx
};

其中 JNINativeMethod  的定义在 jni.h 中,结构如下:

typedef struct {
const char * name;
const char * signature;
void * fnptr;
}JNINativeMethod;

第3步,最后通过方法注入到java的jni接口中

jint custom_register_all_jni_methods(JNIEnv *env) {
return jniRegisterNativeMethods(env, "com/xxx/xxx", methods, sizeof(methods) / sizeof(methods[]));
}

com/xxx/xxx为所对应的java接口类名

Android ndk另一种注册方式的更多相关文章

  1. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  2. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  3. [Android]Android数据的四种存储方式

    存储方式 Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/d ...

  4. [转][Android]Android数据的四种存储方式

    android.database.sqlite类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBuil ...

  5. AndroidStudio NDK环境3种搭建方式

    AndroidStudio NDK环境3种搭建方式     转载. https://blog.csdn.net/zhang_jun_ling/article/details/85621427 一.前言 ...

  6. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

    Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览   作为一个完成的应用程序,数据存储操作是必不可少的. ...

  7. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  8. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...

  9. MVC-AOP思想-Filter 三种注册方式

    在ASP.NET MVC框架中,为我们提供了四种类型的Filter类型包括:IAuthorizationFilter.IActionFilter.IResultFilter.IExceptionFil ...

随机推荐

  1. CDH5.4.5运行Phoenix导入CSV文件

    1.安装phoenix 在界面上设置Phoenix的parcel包: http://52.11.56.155:7180/cmf/settings?groupKey=config.scm.parcel. ...

  2. 初学者的python学习笔记1

    推荐一段时间闲的蛋疼,总觉得再堕落下去不太好,便捡起了之前一直想学而没有学的python,以此记录一下学习笔记,同时亦是督促和复习. 学习51cto上的<2016最新Python开发基础课程-2 ...

  3. IOS setValue forKey

    NSObjiect *obj:[obj setValue:value forKey:@"cpname"]复制代码的时候都会出现这个异常this class is not key v ...

  4. 去除 UINavigationController.navigationBar下方的横线

    self.navigationController.navigationBar.clipsToBounds=YES;

  5. 北大poj-1081

    You Who? Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 801   Accepted: 273 Descriptio ...

  6. NUBWO/狼博旺 NO-3000台式电脑耳机头戴式游戏电竞语音耳麦带话筒

    产品名称:NUBWO/狼博旺 NO-3000 套餐类型: 官方标配 颜色分类: 蓝色耳机(发光) 黑蓝7.1声道USB 黑色 黑蓝色(发光) 黑蓝色 黑蓝单插孔 白色(发光) 白色 佩戴方式: 头戴护 ...

  7. Mysql 根据时间戳、时间按年月日分组统计

    create_time时间格式 SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY week ...

  8. ubuntu samba server 配置多用户访问

    [share] path = /home/share/ writeable = yes browseable = yes create mask = directory mask = guest ok ...

  9. oracle 将多字段数据合成一个

    1.系统默认 WMSYS.WM_CONCAT(A.ID), 2.再进行替换 REPLACE(WMSYS.WM_CONCAT(A.ID),',','|'), (张)

  10. BZOJ 3270 && BZOJ 1778 (期望DP && 高斯消元)

    BZOJ 3270 :设置状态为Id(x,y)表示一人在x,一人在y这个状态的概率. 所以总共有n^2种状态. p[i]表示留在该点的概率,Out[i]=(1-p[i])/Degree[i]表示离开该 ...