Android ndk初探(一)
来源:互联网 发布:js判断ie浏览器版本 编辑:程序博客网 时间:2024/05/16 10:10
调用native修饰的方法
一、首先新建一个项目MyFirstJniTest
二、新建java类:JniUtils.java,定义native方法:public static native String add();然后我们在activity中调用这个方法:比如textview.settext(JniUtils.add());
三、构建项目,然后app\build\intermediates\classes\debug目录下面会生成class文件夹,也会有对应的JniUtils类
四、进入app\build\intermediates\classes\debug目录,执行命令:javah -jni 包名+JniUtils在当前目录中会生成.h文件。
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_parking_juxiu_custom_view_jnitest_JniUtils */#ifndef _Included_com_parking_juxiu_custom_view_jnitest_JniUtils#define _Included_com_parking_juxiu_custom_view_jnitest_JniUtils#ifdef __cplusplusextern "C" {#endif/* * Class: com_parking_juxiu_custom_view_jnitest_JniUtils * Method: add * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_parking_juxiu_custom_1view_jnitest_JniUtils_add (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
五、在main下面新建jni目录,将.h文件拷贝进去,然后新建.c文件,这个.c文件的名字就是lib库的名字,比如jnitest.c。在.c代码中编写:
//// Created by Administrator on 2017/10/18.//# include "com_parking_juxiu_custom_view_jnitest_JniUtils.h"JNIEXPORT jstring JNICALL Java_com_parking_juxiu_custom_1view_jnitest_JniUtils_add (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"方法返回的值"); }
六、在module/gradle中defaultconfig中设置库文件名以及想要支持的架构类型:
defaultConfig { applicationId "com.parking.juxiu.custom_view" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" **ndk{ moduleName "jnitest" abiFilters "armeabi", "armeabi-v7a", "x86" }** }
七、然后去JniUtils.java中添加库依赖:
static { System.loadLibrary("jnitest"); }
并在jni目录下新建Android.mk文件:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jnitest //jni模块加载名称,需要和上面的名字一致LOCAL_SRC_FILES := jnitest.c //c文件名字,如果是.cpp文件的就是.cppinclude $(BUILD_SHARED_LIBRARY)
八、在gradle.properties中添加:android.useDeprecatedNdk=true
并且确定local.properties中有添加ndk所在路径。
九、编译。会在app\build\intermediates\classes\debug的ndk目录下生成对应架构的.so文件,so文件格式:lib+库名.so。然后在main下新建jnilibs文件夹,将对应.so文件拷贝到对应架构文件夹中。运行,这样就完成了一次简单的native方法调用了。
- Android ndk初探(一)
- Android NDK 初探
- Android之NDK初探
- Android NDK 初探
- 初探Android NDK 编程
- Android NDK 初探
- Android初探(一)
- Android之NDK开发初探
- 初探 Ubuntu下android NDK
- Android ndk-gdb 调试初探
- android studio NDK 开发初探
- Android NDK之Lame初探
- Android NDK编程(一)
- Android中的NDK(一)
- android NDK开发(一)
- NDK(一)Android.mk
- Android-NDK开发(一)
- Android Dalvik初探(一)
- ZOJ1084(四色定理)
- STM32F4 ETH-Lwip以太网通信
- .NET框架之---MEF托管可扩展框架
- 科普——未知的公共免费WIFI存在的风险及隐患
- Java的多态
- Android ndk初探(一)
- CentOS-7.2添加桌面快捷方式
- C#中正则表达式的使用
- 理解闭包(一)
- DPDK
- [Leetcode]Course Schedule
- MFC中使用控制台窗口输入输出
- egl introduce
- PostGreSQL + PostGIS 在windows下安装以及与Arcgis的连接(离线安装)