• JNI开发的常见错误


    1:JNI开发的常见错误
    1. 写错了load的library 
    java.lang.UnsatisfiedLinkError: Couldn't load hell0: findLibrary returned null
    2. Android.mk文件编写错误
    /jni/Android.mk:4: *** missing separator.  Stop.
    3. LOCAL_MODULE配置不能有扩展名
    //jni/Android.mk:hello.so: LOCAL_MODULE_FILENAME must not contain a file extension
    4. c或者c++的源文件名称配置错误
    objs/hello/helo.o'.  Stop.
    5. 如果使用了错误的cpu平台
    java.lang.UnsatisfiedLinkError: Couldn't load hello: findLibrary returned null
    添加多cpu平台的支持 APP_ABI := armeabi armeabi-v7a x86
    6. c语言方法名称错误,导致java代码无法寻找到c代码
    Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.itheima.hellojni.MainActivity.helloFromC:()Ljava/lang/String;
    7. 应用程序闪退
    06-25 07:31:46.698: I/dalvikvm(1871):   #00  pc 0008ee6d  /system/lib/libdvm.so
    06-25 07:31:46.698: I/dalvikvm(1871):   #01  pc 000738ca  /system/lib/libdvm.so
    06-25 07:31:46.698: I/dalvikvm(1871):   #02  pc 000739f4  /system/lib/libdvm.so
    06-25 07:31:46.698: I/dalvikvm(1871):   #03  pc 00038f5b  /system/lib/libdvm.so
    06-25 07:31:46.698: I/dalvikvm(1871):   #04  pc 0003bdbd  /system/lib/libdvm.so
    要么就是c代码有逻辑错误
    要么编码问题,中文或者空格路径
    2:JNI自动生成头文件
    使用javah命令
    3:c语言里面打印log的用法怎么做
    宏定义
    Android.mk中可以添加一段文字 LOCAL_LDLIBS+=-llog,引入一个.so的动态库文件
    4:C代码调用java代码的步骤
    a)  找到java里面的一个Class。(必须使用全路径,使用”/”)
    b) 找到Class里面的一个方法
    c) 调用clazz里面的那个方法
    5:c代码和cpp代码的区别
    1、 C和C++的主要区别在于,C++引入了面向对象的一些新特性,因此在编译的时候,会生成中间代码,并引入静态的函数库然后再编译.so文件.
    2、 如果是C++代码,一定要引入生成的头文件,否则运行的时候,会报错
  • 相关阅读:
    [JAVA安全机制]Java虚拟机-保险沙箱
    计算机网络自顶向下方法第3章-传输层 (Transport Layer).1
    Python基础:一起来面向对象 (二) 之搜索引擎
    Python基础:一起来面向对象 (一)
    计算机网络自顶向下方法第2章-应用层(application-layer).2
    Python基础:lambda 匿名函数
    Python基础:自定义函数
    Python基础:异常处理
    Python基础:条件与循环
    计算机网络自顶向下方法第2章-应用层(application-layer).1
  • 原文地址:https://www.cnblogs.com/itlyh/p/6047171.html
Copyright © 2020-2023  润新知