此文章包含Android JNI学习过程中的遇到的各种错误记录和学习总结。

1.错误:java.lang.UnsatisfiedLinkError: Native method not found: com.example.test.InterfaceJni.init:()V

  已经生生so库,提示找不到native方法。

 解决方法:

  • 看.h或者.cpp文件中,方法名是否正确,Java_包名_类名_方法名(参数表)。
  • .h或者.cpp文件中native方法声明和定义必须包含在extern "C"{}中。

2.JNI_OnLoad()

 在System.loadLibrary时,调用此函数,返回JNI版本,不同的版本支持的特性可能不同。也可以做一些初始化的动作。

3.android打印。在c++层或者c中的打印(print),不能在logcat中查看。需要调用android/log.h中的log打印:

    __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)  :ANDROID_LOG_DEBUG是打印级别,TAG是打印的标签,__VA_ARGS__是打内容。

 可以这样使用:

  #include <android/log.h>

  #define TAG "TEST_CPP"

  #define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)

  使用:LOGD("In C:\n---------");

  

  另外,链接时可能会提示:error: undefined reference to '__android_log_print',是因为没有加入共享库,在mk文件中加入:

    LOCAL_LDLIBS    := -llog

4.修改Android ping.c代码,增加socket通信,增加头文件:#include <cutils/sockets.h>,编译出错:undefined reference 。

  解决方法:修改Android.mk,增加:LOCAL_SHARED_LIBRARIES+= libcutils

JNI使用问题记录的更多相关文章

  1. Android 4.4.2 动态加入JNI库方法记录 (一 JNI库层)

    欢迎转载,务必注明出处.http://blog.csdn.net/wang_shuai_ww/article/details/44456755 本篇是继<s5p4418 Android 4.4. ...

  2. Android学Jni/Ndk 开发记录(一)

      治疗拖延症的唯一办法就是:一想起些什么 / 要做些什么就 TM 立马去做! 是的,突然想起我不会 JNI.NDK 开发.解决办法:立马去学! 一:配置 NDK 环境 下载 NDK 写入到配置文件 ...

  3. Android 4.4.2 动态加入JNI库方法记录 (二 app应用层)

    欢迎转载,务必注明出处:http://blog.csdn.net/wang_shuai_ww/article/details/44458553 源代码下载地址:http://download.csdn ...

  4. JNI相关使用记录

    JNI 工作流程 java层调用system.load方法. 通过classloader拿到了so文件的绝对路径,然后调用nativeload()方法. 通过linux下的dlopen方法,加载并查找 ...

  5. 使用codeblock实现JNI开发-2016.01.31

    使用交叉编译工具实现andorid平台下的jni开发,记录codeblock配置过程,方便后续参考. 1 工具版本信息 NDK r8b Code::Blocks 10.05 2 配置过程 使用code ...

  6. 基于Eclipse的Android JNI层測试应用开发过程记录

    前言 本文记录一个Java层与JNI层參数与数据交互的应用程序开发过程.为实现一个功能完整的带Java与JNI的应用程序打下基础. 本文如果读者已搭建好Android的Eclipse与NDK开发环境, ...

  7. JNI错误记录--JNI程序调用本地库时JVM崩溃

    什么是JNI内存泄露,基本的避免方法 : http://www.ibm.com/developerworks/cn/java/j-lo-jnileak/ 最近的课题中需要用到Spark,同组同学负责的 ...

  8. 【OpenCV for Android】Android Studio JNI和NDK配置及采坑记录

    在配置好Android studio的OpenCV环境后,我们就可以通过Java代码调用OpenCV的API了,但是在通常情况下,用Java代码编写图像处理算法的运行效率是没有C++代码高的,在应用层 ...

  9. 记录第一次使用jni编译so包的入门操作

    1.配置 下载自己相对应的ndk平台版本后配置到studio 在local.properties加入路径 在gradle.properties文件添加 2.创建工具类(注意方法都是native的) 3 ...

随机推荐

  1. github with msysgit:配置SSH Key

    Step 1: Check for SSH keys First, we need to check for existing ssh keys on your computer. Open up G ...

  2. Rails sanitize

    The SanitizeHelper module provides a set of methods for scrubbing text of undesired HTML elements. T ...

  3. overridePendingTransition简介

    1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时 ...

  4. Android中锁定文件的方法

    androidSDK中并没有锁定文件相关的api. 但是android是基于linux操作系统的,linux比较底层,灵活性也更大,为了实现锁定文件的效果,大概有以下几种办法: 用chmod命令修改文 ...

  5. Lodash.js的库

    1.orderBy _order(数组,排序对象,["asc"]升序或者["desc"]降序)

  6. jquery插件封装成seajs模块

    jquery直接在html中引入. jquery插件修改为: define(function (require, exports, moudles) { return function (jquery ...

  7. Circular Buffer

    From:http://bradforj287.blogspot.com/2010/11/efficient-circular-buffer-in-java.html import java.util ...

  8. Gitlab完美安装【CentOS6.5安装gitlab-6.9.2】

    摘要: 拆腾了几天,终于在今天找到了快速安装Gitlab的方法.CentOS6.5安装gitlab-6.9.2 参考网址:https://gitlab.com/gitlab-org/omnibus-g ...

  9. .net MVC 简单图片上传

    主要完成的是在网页上 上传一张图片到服务器 我搜出来的上传文件代码都特别复杂,对于初学者来说,先解决能上传的问题才最重要,并不需要特别多的功能,仅适合不会上传的初学者,大神请绕路,错误请指出,谢谢 v ...

  10. 建表and新增删除数据A

    SELECT*FROM 表名:查询表 新建数据库: select 文件名(可以很多被查询的文件名)from 文件名 创建student表  CREATE TABLE `student`  ( `id` ...