eclipse下使用NDK开发so库
来源:互联网 发布:老人打字软件 编辑:程序博客网 时间:2024/06/03 23:39
前言
相信伙伴们看完前两篇博文eclipse搭建JNI开发环境和一个例子掌握JNI开发之后,很想在Android手机上跃跃欲试。话不说多,首先开门见山示例一次构建NDK开发流程,之后再讲解本宝宝在工作之中遇到的一些问题。
1、配置NDK
开发安卓程序时,我们需要在电脑上安装sdk。同理,现在我们需要安装NDK。第一次听说过没关系,Google被封了不知道从哪下载也没关系。宝宝倾情奉献NDK最新版本的(截止当前)下载地址:android-ndk-r11b-windows-x86.zip、android-ndk-r11b-windows-x86_64.zip、android-ndk-r11b-darwin-x86_64.zip、android-ndk-r11b-linux-x86_64.zip。下载完成后在eclipse配置,如图:
2、Add Native Support
新建android工程,右键工程名称,选择Android Tools->Add Native Support,弹出一个窗口提示输入so文件的名称。文件格式同lib<工程名>.lib。
3、配置JNI库
添加好支持的库之后,系统会自动生成对应的目录和文件。在<工程名>.cpp文件中,会自动导入头文件。如果仍然提示找不到jni.h头文件的错,参照配置JNI开发环境(eclipse搭建JNI开发环境)添加对应的库。不同的是,这次是在NDK目录中添加对应的文件夹。所有包含的头文件夹参照下图:
4、编写代码,测试结果
如果成功的做到这一步,那么恭喜你,你已经成功的构建了NDK的开发环境。可以根据需求,使用C语言实现对应的功能。但是如果工程大,需要编译多个源文件呢?如果需要调用SDK里的类库呢?如果需要在so里面输出log日志呢?如果需要编译不同CPU指令集的so文件呢?当在工作中真正开发的时候依然会遇到N多问题。包括开启debug模式,到目前为止仍然不会。
Application.mk
APP_ABI := armeabi armeabi-v7a x86armeabi最常见的一个。用过genymotion的小伙伴也许头疼过,当工程中导入过so文件之后,发现自己的应用在genymotion上总是运行不了,因为绝大多数提供so库的厂商,只提供前两个armeabi、armeabi-v7a。只是genymotion是基于virtualbox运行的虚拟机,其指令集是模拟计算机CPU的,所以添加一个支持x86指令集的so文件就可以正常运行程序了。要编译多个类型的so文件,名称需要用空格分开。当需要编译支持所有指令集的so文件,无须列举出所有的名称,一个all搞定。
APP_ABI := all
android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := yt_safeLOCAL_SRC_FILES := yt_safe.cpp crypto/crypto.cpp file/file.cppLOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llogLOCAL_LDLIBS += -landroidinclude $(BUILD_SHARED_LIBRARY)参照上述代码,编译多个cpp文件时,需要列举出所有的cpp文件,用个空格分开。要用到sdk库时,需要再用到LOCAL_LDLIBS变量。第一个值,支持输出log日志,第二个值支持引用SDK中的类。
编译头文件
当编译头文件时,遇到参数类型是Context 等其他android.jar中的类型时,指令如:
javah -classpath /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest
需要指定sdk目录下具体android.jar的路径,我用到的命令是:javah -classpath /Users/flueky/Develop/ADT/sdk/platforms/android-21/android.jar:. com.yitong.utils.io.AssetFileInputStream
:. 之后才是需要编译的Java文件的路径。
原创博文,转载请标明出处eclipse下使用NDK开发so库
- eclipse下使用NDK开发so库
- Eclipse下NDK开发(java调用so文件)
- Eclipse下NDK开发(java调用so文件)
- Eclipse下NDK开发(java调用so文件)
- Eclipse下NDK开发
- Eclipse下NDK开发
- eclipse 下ndk开发
- eclipse下NDK开发
- eclipse下NDK生成.SO文件
- NDK SO 库开发与使用中的 ABI 构架选择
- NDK SO 库开发与使用中的 ABI 构架选择
- NDK SO 库开发与使用中的 ABI 构架选择
- 使用系统libsqlite.so 进行ndk 开发
- 使用系统libsqlite.so 进行ndk 开发
- 使用系统libsqlite.so 进行ndk 开发
- Linux下Eclipse使用NDK开发Android应用
- 利用IDEA进行JNI开发:使用NDK生成Linux平台下的so文件
- 在Eclipse 下集成ndk 自动编译生成so文件
- DB2开启归档模式
- 中国移动业务支撑系统简介(BOSS、BASS、BOMC、4A及VGOP)
- JTable的排序和过滤
- 简单的用CAShapeLayer画个圈
- struts2
- eclipse下使用NDK开发so库
- 基于TestNG 与Selenium 的自动化测试设计与实施(四)
- Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- Fragment详解(五):Fragment与Activity交互
- DB2“静默”状态与解除
- Android多种View动画:EasyAndroidAnimations
- QDialog QFrame QWidget QMainWindow区别
- 删除指定文件夹以及文件下的文件
- 什么是pyc文件