`
xp9802
  • 浏览: 1204308 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android Eclipse JNI 调用 .so文件加载问题

阅读更多

背景:对于Android工程 Eclipse里编译好的.so文件放到 libs\armeabi下以后, 这样.so文件就可以打包到apk文件里,在apk装到手机上以后 

在libs\armeabi下的.so文件应该就会解压到/data/data/这里是你project的包名(比如com.first.second)/lib下。

问题:写了个测试的android JNI app,.so已经放到了libs\armeabi下 而且从编译的apk里也能看到.so已经打包进去(解压apk文件,里边应该有lib文件夹) 但是在/data/data/com.test.test/lib下就是没有相应的.so文件

解决方法:原来是因为我的.so没有按照android标准命名,.so的名字必须有'lib'前缀 否则apk解压/安装到手机的时候不会把libs\armeabi下的.so拷贝到/data/data/com.test.test/lib下。原来我用的so名字是JNITest.so, 改为libJNITest.so后一切正常。

补充:
a) 用loadLibrary调用的时候需要去掉lib前缀 System.loadLibrary("JNITest"); 
b) 用load调用的时候需要写全路径名 且不能去掉lib前缀 因为这里是当成一个普通文件读取的 System.load("/data/data/com.test.test/libJNITest.so");

分享到:
评论

相关推荐

    JniTest.rar Android Java JNI 调用C++

    - 在Java代码中加载库:使用`System.loadLibrary()`加载.so文件。 - 调用本地方法:在Java代码中调用native方法,执行C++代码。 3. **Android Studio与Eclipse的JNI开发差异**: - Android Studio:集成在Gradle...

    android jni调用详细解说

    ### Android JNI调用详解 #### 一、简介与环境配置 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。对于Android开发来说,使用JNI可以实现用C/C++来编写性能...

    Eclipse JNI Demo

    首先,`.classpath`文件是Eclipse项目的类路径配置文件,包含了项目中所有库和源代码目录的信息,对于JNI项目来说,这里可能包含了jniLibs目录,该目录存放的是编译后的本地库文件(.so)。 `.project`文件则是...

    android jni开发步骤

    本教程将围绕"Android JNI开发步骤"展开,详细介绍如何在Eclipse环境中进行JNI开发。 首先,我们需要创建一个Android项目。打开Eclipse,选择"File" -> "New" -> "Android Project",填写项目名称和目标SDK版本,...

    JNI实现的DEMO Java调用VC编写的DLL,对应于Linux .SO

    这两种文件都包含了可被Java代码通过JNI调用的函数。 描述中提到的“包含C的项目和Java的Eclipse项目”,意味着这个压缩包里有两个部分:一个是C语言的项目,可能包含VC6(Visual C++ 6.0)工程文件,用于创建DLL;...

    Android JNI 开发 步骤

    - 在Java代码中通过`System.loadLibrary`加载.so文件。 - 如果一切正常,就可以在Java代码中调用native方法了。 #### 三、注意事项 - 确保NDK环境已正确配置。 - 在Android.mk文件中正确指定C/C++源文件的位置。 -...

    eclipse 环境下关于android jni开发

    本文将详细介绍在Eclipse环境下进行Android JNI开发的基本知识点,包括环境配置、开发流程、常见问题以及一个示例项目。 一、环境配置 1. 安装Eclipse IDE:首先,你需要一个安装了ADT(Android Developer Tools)...

    jni实例 已Eclipse测试可用

    在本实例中,"JniTest"很可能是包含上述步骤的Java类,通过Eclipse进行测试,确保了JNI调用的正确性。开发者可以下载这个压缩包,参考其中的代码,学习如何在实际项目中应用JNI技术。通过这种方式,不仅可以提升...

    配置NDK集成eclipse使用hello-jni实例

    - 在Eclipse中构建和运行Android项目,此时Android应用将加载并执行.so文件中的代码。 通过以上步骤,开发者能够在Windows环境下使用Eclipse和NDK进行原生代码的开发和调试。hello-jni是一个基本的示例,用于演示...

    jni中用多线程调用java代码

    5. **编译和链接JNI代码**:使用NDK的`ndk-build`命令(或者Gradle的`externalNativeBuild`配置)编译JNI代码,并将生成的库文件(如`.so`)添加到项目的资源目录下。 6. **加载JNI库**:在Java代码中,使用`System...

    android jni开发指南

    - 在 Java 代码中加载 `.so` 文件,并调用相应的本地方法。 #### 六、注意事项 - 在编写 C/C++ 代码时,需要注意类型转换和数据类型的兼容性问题。 - 使用 `jni.h` 中提供的宏和函数,确保正确地处理 JNI 调用。 ...

    jni开发demo

    在Android开发中,JNI通常用于实现性能敏感的代码、调用系统底层库或者利用硬件特性,例如图像处理、加密算法等。本教程将探讨在Android Studio中开发Eclipse NDK项目的流程,以及在编写过程中可能遇到的问题和解决...

    myjni.rar_android_jni_native

    在Android开发中,JNI被广泛应用于优化性能敏感的代码段、调用系统底层库或者利用C/C++已有的库。这个"myjni.rar_android_jni_native"压缩包包含了学习Android JNI开发的基本资源。 首先,`.classpath`文件是...

    eclipse jni,ndk环境搭建测试程序

    10. **生成JNI库**:在Eclipse中,右键项目 -> Android Tools -> Add Native Support,Eclipse会自动生成`Android.mk`和`Application.mk`文件。这两个文件用于构建NDK工程。 11. **配置构建脚本**:在`Android.mk`...

    jni调试 c层在eclipse中输出信息

    在Android开发中,我们通常通过创建一个Java类,声明native方法,并使用`System.loadLibrary()`加载对应的动态链接库(.so文件)来使用JNI。 调试JNI代码的关键在于能够在C层输出信息,以便查看程序执行的状态。...

    Android-JNI环境参考资料

    - 运行在Eclipse中配置的NDK构建任务,这会使用NDK编译本地源代码并生成.so库文件。 - 在Android模拟器或真机上运行应用,测试JNI功能。 - 可以使用NDK提供的NDK-gdb工具进行远程调试。 7. **android_jni操作...

    cocos2dx 3.3工程,C++通过JNI与Java相互调用

    5. **在Android项目中集成本地库**:将生成的.so文件放入项目的jniLibs目录,以便在运行时自动加载。 6. **在Cocos2dx中调用JNI**:在Cocos2dx的C++代码中,你可以使用JNI接口来调用Java方法。例如,在游戏的某个...

Global site tag (gtag.js) - Google Analytics