Android NDK使用
来源:互联网 发布:北京弘书阁教育 知乎 编辑:程序博客网 时间:2024/06/10 13:32
1.在java代码中创建一个类
public class AddNum{//这里调用c的方法 public native int add(int a,int b); static { //加载动态库 System.loadLibrary("add"); }}
2.生成c的头文件
在java代码所在的包下(最上层,as可以直接在Terminal)输入命令,生成头文件
javah -jni com.***.***.**.AddNumc
3.创建一个jni文件夹
注意文件路径,as切换到Project模式,在main下创建jni文件夹,创建完成后与java文件夹处于同级目录
将第二步生成的文件拷贝到jni文件夹下,并创建对应的.c文件和android.mk文件
android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := addLOCAL_SRC_FILES := AddNum.cinclude $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE := addLOCAL_SRC_FILES := AddNum.c这两句是最关键的,第一行定义生成的so文件名字,在第一步中使用这个名字,注意名字前面的lib问题如果名字前面不加lib系统会自动添加第二行是引用那个文件
4. 执行命令得到so文件
ndk-build
此时会根据不同cup生成对应so包,生成的so在libs下
$ ndk-build[arm64-v8a] Install : libadd.so => libs/arm64-v8a/libadd.so[x86_64] Install : libadd.so => libs/x86_64/libadd.so[mips64] Install : libadd.so => libs/mips64/libadd.so[armeabi-v7a] Install : libadd.so => libs/armeabi-v7a/libadd.so[armeabi] Install : libadd.so => libs/armeabi/libadd.so[x86] Install : libadd.so => libs/x86/libadd.so[mips] Install : libadd.so => libs/mips/libadd.so
com_kaelthas_demo_ndk_test_AddNum.h
自动生成,命名规则Java_包名_类名(可以直接手写,注意命名规范)
方法名 类名_方法名
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_kaelthas_demo_ndk_test_AddNum */#ifndef _Included_com_kaelthas_demo_ndk_test_AddNum#define _Included_com_kaelthas_demo_ndk_test_AddNum#ifdef __cplusplusextern "C" {#endif/* * Class: com_kaelthas_demo_ndk_test_AddNum * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_kaelthas_demo_ndk_test_AddNum_add (JNIEnv *, jobject, jint, jint);#ifdef __cplusplus}#endif#endif
AddNum.c
自己手动创建,命名自己确定,没有强制规范
//// Created by 王晓明 on 2017/10/11.//#include "com_kaelthas_demo_ndk_test_AddNum.h"JNIEXPORT jint JNICALL Java_com_kaelthas_demo_ndk_test_AddNum_add (JNIEnv *env, jobject thiz, jint a, jint b){ return a+b; }
阅读全文
0 0
- android ndk的使用
- Android NDK 使用入门
- Android NDK使用实例
- android ndk使用
- Android ndk使用
- android ndk 使用FFmpeg
- Android NDK 使用stlport
- Android NDK安装使用
- android NDK 使用c++
- Android NDK的使用
- android NDK使用
- Android NDK 使用skia
- Android NDK 使用 STL
- Android NDK使用分析
- Android NDK的使用
- android ndk stack 使用
- android ndk 使用log
- android ndk配置使用
- Breadth-first Search -- Leetcode problem107. Binary Tree Level Order Traversal II
- 如何在docker容器和宿主机之间复制文件
- overview_java(九)-java数据库操作
- 使用fakeLoader完成加载完成前的页面加载效果
- 马云:心要善,刀要快 | 内部干货
- Android NDK使用
- Java并发编程 之 HashMap线程不安全
- 让Excel帮我检查DB2 Software Lifecycle
- .net ftp上传文件
- 生命中的时光-齐一
- OpenGL中的FBO对象 详解
- 请不要做浮躁的人
- 用异地组网路由器,实现家校互联
- 使用 Gogs 搭建自己的 Git 服务器