![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JNI
JNI
无所事事的程序员
时间留下的痕迹
展开
-
JNI---打印log
const char * LOG_TGA = "LOG_TGA"; 添加头文件 #include <android/log.h> 代码: __android_log_print(ANDROID_LOG_ERROR, LOG_TGA, "hello native log"); 对第一个参数进行替换: ANDROID_LOG_VERBOSE ANDROID_LOG_DEBUG ANDROID_LOG_INFO ANDROID_LOG_WARN ANDROID_LOG_ERROR ...原创 2020-09-20 23:01:19 · 437 阅读 · 0 评论 -
数组的传递与返回
public native int[] increaseArray(int[] array); int[] array={1,2,3,4,5,6}; int[] ints = jni.increaseArray(array); extern "C" JNIEXPORT jintArray JNICALL Java_com_example_jnitwo_HellowJNI_increaseArray(JNIEnv *env, jobject thiz, jintArray array){ //1原创 2020-09-20 20:46:10 · 118 阅读 · 0 评论 -
将jstring转换char *
char* _JString2CStr(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = (*env)->FindClass(env, "java/lang/String"); jstring strencode = (*env)->NewStringUTF(env,"GB2312"); jmethodID mid = (*env)->GetMethodID(env, clsstring, "原创 2020-09-20 16:02:28 · 1667 阅读 · 0 评论 -
将AS的stringFromJNI修改为动态注册
jstring stringFromJNI(JNIEnv* env,jobject thiz){ return env->NewStringUTF("123465"); } /* * 方法对应表 */ //"Java 层的方法层","方法签名","对应的 native 层的方法指针" static JNINativeMethod gMethods[]={ {"stringFromJNI","()Ljava/lang/String;",(void*)stringFromJNI原创 2020-08-24 02:28:44 · 481 阅读 · 0 评论 -
JNI---动态注册与线程
动态注册 当我们执行System.loadLibrary时。 static { System.loadLibrary("native-lib"); } cpp文件首先将调用JNI_Onload方法(需要自己写) int JNI_OnLoad(JavaVM *vm, void *r){ return JNI_VERSION_1_6; } 所以我们也可以在这个方法进行jni的初始化工作。 最常见的的操作就是动态注册方法。 (记得动态方法至少也得加原来的那两个参数,不然原创 2020-05-22 16:59:00 · 156 阅读 · 0 评论 -
JNI---快速入门
在上一篇中,讲了如何CMake生成so动态库,这里写一下简单的语法操作。 java调用native方法返回值。 第一步:在java文件中写native方法。 public native String test(String name,int age); 第二步:在对应的cpp文件中创建native方法。语法如下: 方法名的组成是:Java_后面接包名,点用下划线代替,再接方法名。 第一行有一个是代表返回值类型。 extern "C" JNIEXPORT string JNICALL Java原创 2020-05-20 13:09:18 · 170 阅读 · 0 评论 -
JNI--初步认识CMake
如何去在android应用jni我这里就不说明了。 这里主要来记录一些基本操作: CMakeLists.txt: add_library:将cpp文件编译成so动态库的语法 find_library:查找so动态库;在安卓系统中去查找,查看安卓种log一个库,把它命名成log-lib target_link_libraries:作用就是一个so动态库关联的一个语法;比如把native-lib.c...原创 2020-03-26 16:09:16 · 308 阅读 · 0 评论