Android jni开发有哪些常见的错误

我们在Android jni开发中,特别是对于刚入门学习Android jni开发的同学来说,往往会遇到很多错误,这里总结了我们经常遇见的错误。这些错误,你是否经常遇到。

错误1:java.lang.UnsatisfiedLinkError: Native method not found: 本地方法没有找到

1、本地函数名写错

2、忘记加载.so文件 没有调用System.loadlibrary

错误2:findLibrary returned null

1、System.loadLibrary("libhello"); 加载动态链接库时 动态链接库名字写错

2、平台类型错误 把只支持arm平台的.so文件部署到了 x86cpu的设备上

查看帮助文档:

APP_ABI

By default, the NDK build system will generate machine code for the ’armeabi’ ABI. This corresponds to an ARMv5TE based CPU with software floating point operations. You can use APP_ABI to select a different ABI.

For example, to support hardware FPU instructions on ARMv7 based devices, use:

APP_ABI := armeabi-v7a

Or to support the IA-32 instruction set, use:

APP_ABI := x86

Or to support the MIPS instruction set, use:

APP_ABI := mips

Or to support all at the same time, use:

APP_ABI := armeabi armeabi-v7a x86 mips

Or even better, since NDK r7, you can also use the special value ’all’ which means "all ABIs supported by this NDK release":

APP_ABI := all

For the list of all supported ABIs and details about their usage and limitations, please read CPU-ARCH-ABIS.

在jni目录下创建 Application.mk 在里面指定

APP_ABI := armeabi x86

重新编译后可以看到分成两个平台编译,生成2个.so文件

我们可以看到上面的编译过程中出现警告,可以在 Application.mk 指定:
APP_PLATFORM := android-8

文章来自:博客园/wuyudong

时间: 2024-12-06 17:34:57

Android jni开发有哪些常见的错误的相关文章

Android JNI开发提高篇

有关JNI的开发技术,我们继续围绕Android平台进行,JNI可以支持C或C++,从目前为止我们写过的JNI代码均为C实现的,即文件名为.C而C++的和这些有什么不同呢? Android平台上的JNI一般使用C还是C++编写呢? Android平台在中间层和大部分的类库的底层使用了C++的开发方式,后缀为.cpp,比如Android Framework.OpenCore.Webkit.SQLite等等.使用C++好处就是可以使用很多库但目前Android不支持STL,我们知道C表示字符串都是字

Android 应用中十大常见 UX 错误

[核心提示] Android 开发者关系团队每天都会试用无数的 App 或者受到无数的开发者发来的请求评测的 App,在评测如此之多的应用之后,他们总结出了10个最常见的错误. 作为一个长期使用 Android 的用户,我在使用 Android 应用的时候经常遇到各种各样的交互上的问题,并且早就想整理它们写一篇文章了.但是由于懒惰和拖延,这篇文章一直处于草稿的状态.正巧,这期 ADiA 中,Android 开发团队为我们着重强调了当下 Android 应用中很常见的,应该避免的错误. Andro

Android JNI开发生成.h头文件问题

在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,这里讲一下: 通过DOS命令执行,(1)开始->运行->cmd->进入dos命令操作界面 在命令行中输入javah com.example.huiduhua2.ImageProc 通过输入javah 可以看到以下结果: 用法:javah [选项] <类> 其中 [选项] 包括: -help                 输出此帮助消息并退出

Android JNI开发生成.h头文件问题(转)

在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过DOS命令执行,(1)开始->运行->cmd->进入dos命令操作界面 在命令行中输入javah -classpath bin\classes -d jni com.sirc.jni.HelloWorld 通过输入javah 可以看到以下结果:用法:javah [选项] <类>

jni开发中的常见错误

* java.lang.UnsatisfiedLinkError: Native method not found: 本地方法没有找到 * 本地函数名写错 * 忘记加载.so文件 没有调用System.loadlibrary * findLibrary returned null * System.loadLibrary("libhello"); 加载动态链接库时 动态链接库名字写错 * 平台类型错误 把只支持arm平台的.so文件部署到了 x86cpu的设备上 * 在jni目录下创建

Android jni开发资料--NDK环境搭建

谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了.只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自

史上最易懂的Android jni开发资料--NDK环境搭建

谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了.只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自

Android JNI开发

概述 在开发framework的时候有时会遇到需要自己开发JNI,以便使Java能够调用自己底层开发的库.网上的文章一般都是介绍如何通过命名规则及javah,使jni层函数与java层函数自动建立链接(Java虚拟机通过命名规则建立),本文将讲解如何动态注册jni函数. 依赖库及头文件 先贴出Android.mk的代码 1 LOCAL_PATH :=$(call my-dir) 2 include $(CLEAR_VARS) 3 4 LOCAL_SRC_FILES := kiki_jni.cpp

Android JNI 开发 Demo by NDK (native develop kit)

最近终于有了一些空闲时间,所以想着把之前的Android相关的项目整理一下,前几天整理了Android OCR 的项目, 今天就干脆再整理一下 NDK JNI调用. 关于Android 中通过JNI进行本地调用的配置与开发,已经在链接 http://blog.csdn.net/watkinsong/article/details/9849973 中给出了非常详细的说明. 请仔细阅读. 同时,关于Android 作OCR的说明,也已经 在 http://blog.csdn.net/watkinso