背景:对于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");
问题:要仔细检查当前显示的屏幕类型下是否存在该.so文件,类型很多
/libs/arm64-v8a,/libs/armeabi,/libs/armeabi-v7a,/libs/mips,/libs/mips64,/libs/x86,/libs/x86_64
分享到:
相关推荐
- 在Java代码中加载库:使用`System.loadLibrary()`加载.so文件。 - 调用本地方法:在Java代码中调用native方法,执行C++代码。 3. **Android Studio与Eclipse的JNI开发差异**: - Android Studio:集成在Gradle...
### Android JNI调用详解 #### 一、简介与环境配置 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。对于Android开发来说,使用JNI可以实现用C/C++来编写性能...
首先,`.classpath`文件是Eclipse项目的类路径配置文件,包含了项目中所有库和源代码目录的信息,对于JNI项目来说,这里可能包含了jniLibs目录,该目录存放的是编译后的本地库文件(.so)。 `.project`文件则是...
本教程将围绕"Android JNI开发步骤"展开,详细介绍如何在Eclipse环境中进行JNI开发。 首先,我们需要创建一个Android项目。打开Eclipse,选择"File" -> "New" -> "Android Project",填写项目名称和目标SDK版本,...
这两种文件都包含了可被Java代码通过JNI调用的函数。 描述中提到的“包含C的项目和Java的Eclipse项目”,意味着这个压缩包里有两个部分:一个是C语言的项目,可能包含VC6(Visual C++ 6.0)工程文件,用于创建DLL;...
- 在Java代码中通过`System.loadLibrary`加载.so文件。 - 如果一切正常,就可以在Java代码中调用native方法了。 #### 三、注意事项 - 确保NDK环境已正确配置。 - 在Android.mk文件中正确指定C/C++源文件的位置。 -...
本文将详细介绍在Eclipse环境下进行Android JNI开发的基本知识点,包括环境配置、开发流程、常见问题以及一个示例项目。 一、环境配置 1. 安装Eclipse IDE:首先,你需要一个安装了ADT(Android Developer Tools)...
在本实例中,"JniTest"很可能是包含上述步骤的Java类,通过Eclipse进行测试,确保了JNI调用的正确性。开发者可以下载这个压缩包,参考其中的代码,学习如何在实际项目中应用JNI技术。通过这种方式,不仅可以提升...
- 在Eclipse中构建和运行Android项目,此时Android应用将加载并执行.so文件中的代码。 通过以上步骤,开发者能够在Windows环境下使用Eclipse和NDK进行原生代码的开发和调试。hello-jni是一个基本的示例,用于演示...
5. **编译和链接JNI代码**:使用NDK的`ndk-build`命令(或者Gradle的`externalNativeBuild`配置)编译JNI代码,并将生成的库文件(如`.so`)添加到项目的资源目录下。 6. **加载JNI库**:在Java代码中,使用`System...
- 在 Java 代码中加载 `.so` 文件,并调用相应的本地方法。 #### 六、注意事项 - 在编写 C/C++ 代码时,需要注意类型转换和数据类型的兼容性问题。 - 使用 `jni.h` 中提供的宏和函数,确保正确地处理 JNI 调用。 ...
在Android开发中,JNI通常用于实现性能敏感的代码、调用系统底层库或者利用硬件特性,例如图像处理、加密算法等。本教程将探讨在Android Studio中开发Eclipse NDK项目的流程,以及在编写过程中可能遇到的问题和解决...
在Android开发中,JNI被广泛应用于优化性能敏感的代码段、调用系统底层库或者利用C/C++已有的库。这个"myjni.rar_android_jni_native"压缩包包含了学习Android JNI开发的基本资源。 首先,`.classpath`文件是...
10. **生成JNI库**:在Eclipse中,右键项目 -> Android Tools -> Add Native Support,Eclipse会自动生成`Android.mk`和`Application.mk`文件。这两个文件用于构建NDK工程。 11. **配置构建脚本**:在`Android.mk`...
在Android开发中,我们通常通过创建一个Java类,声明native方法,并使用`System.loadLibrary()`加载对应的动态链接库(.so文件)来使用JNI。 调试JNI代码的关键在于能够在C层输出信息,以便查看程序执行的状态。...
- 运行在Eclipse中配置的NDK构建任务,这会使用NDK编译本地源代码并生成.so库文件。 - 在Android模拟器或真机上运行应用,测试JNI功能。 - 可以使用NDK提供的NDK-gdb工具进行远程调试。 7. **android_jni操作...
5. **在Android项目中集成本地库**:将生成的.so文件放入项目的jniLibs目录,以便在运行时自动加载。 6. **在Cocos2dx中调用JNI**:在Cocos2dx的C++代码中,你可以使用JNI接口来调用Java方法。例如,在游戏的某个...