NDK系列
android之NDK开发系列
qq_773961852
这个作者很懒,什么都没留下…
展开
-
cmake编写jni集成三方so库支持
本文假设读者使用cmake方式编写jni代码,并且已经学会jni基本操作!JNI集成三方so库支持分为两种情况:java层代码直接使用三方so库,此时直接编写native函数调用即可package com.xapi.calib.jni_calib_data;public class XapiCalibDataJni { static { System.loadLibrary("soName");//加载so库,此处soName替换为你要使用的so库名称 }原创 2020-10-19 14:20:46 · 331 阅读 · 0 评论 -
cmake编写jni传递对象
本文假设读者使用cmake方式编写jni代码,并且已经学会基本数据类型的jni传递!一、传递对象,这里使用自定义User对象举例:1、首先在java层定义native函数,并且loadLibrary库 public static native User sendUser(User obj); static { System.loadLibrary("JNIDemo"); }2、编写测试类代码,这里就是在Activity加了个TextView,显示jni返回的值原创 2020-10-19 10:31:45 · 273 阅读 · 0 评论 -
cmake编写jni代码传递数组
本文假设读者使用cmake方式编写jni代码,并且已经学会基本数据类型的jni传递!一、传递数组,这里使用byte[]数组举例:1、首先在java层定义native函数,并且loadLibrary库 static { System.loadLibrary("linkJNI"); } public static native byte[] setByteArrayData(byte[] byteArrayData);2、编写测试类代码,这里就是在Activit原创 2020-08-20 17:53:07 · 386 阅读 · 0 评论 -
Android cmake环境输出log
在写jni代码时,不可避免的需要调试代码,而c端的代码,又无法断点调试这就要求我们必须在cpp文件中打印语句供我们判断code的正确与否,但是你真这么做了会发现,不论是在as的控制台还是adb抓出来的log文件,我们写好的输出语句无法显示(printf、cout都试试),不必怀疑code有误,它是正确的,但就是打印不出来,搜索发现大多数人告诉你:需要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llog ,这个本身是对的,但是这是在eclipse开原创 2020-07-23 10:40:59 · 1284 阅读 · 0 评论 -
使用registerNative方式编写JNI中c/c++函数
上次面试,腾讯小哥听说我写过jni代码,问了一个问题,JNI代码里,Java上层声明的一个native函数,在cpp文件中实现它的时候,函数名过长,有没有什么办法来改进?一般我们写JNI中cpp的代码,都是Java_包名_类名_native方法名(Java_com_jni_ndkdemo_JniUtils_javaGetString),遇到包名中本身带有下划线的,它会添加上去数字(Java_co...原创 2020-01-17 19:16:14 · 813 阅读 · 0 评论 -
如何看懂android.mk文件,并学会使用
首先我们来看一段android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_CERTIFICATE := platformLOCAL_STATIC_JAVA_LIBRARIES += guavaLOCAL_STATIC_JAVA_LIBRARIES +...原创 2019-10-17 20:37:52 · 2646 阅读 · 1 评论 -
Android使用JNI生成.so文件并调用(使用CMake的方法)
这篇文字是接着上一篇来写的 Android使用JNI生成.so文件并调用(使用传统生成.h的方法),今天学习一下CMake方式调用JNI生成.so文件,前提是Android Studio 本地集成的NDK插件,如果没有可以在开发工具里边下载,位置在上一篇文章上有,其实也就是这个 其实,最取巧的办法是,先用androidstudio创建一个NDK的demo,...原创 2018-03-19 17:38:11 · 796 阅读 · 0 评论 -
Android使用JNI生成.so文件并调用(使用传统生成.h的方法)
JNI就是Java-Native-Interface的缩写,它提供了若干API实现了Java和其他语言的通信(在Android中主要是C/C++)Android调用jni在Android studio2.2版本前后是一个分水岭,之前提供的API在Android studio3.0之后被删除了,我们先回顾一下之前是怎么调用的: 首先写一个java类,这个方法名有可能报红,不要担心,当我...原创 2018-03-09 15:31:42 · 5858 阅读 · 0 评论