Android 调用与载入第三方SO库.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前期准备:下载Cygwin,要求版本至少在1.7以上。Cygwin地址:/下载Android-NDK,R4出现重大更新,要求版本R5以上Android-NDK地址:/sdk/ndk/index.html获得已有第三方库以及头文件环境安装:Cygwin安装:双击安装文件,按步骤进行,保证安装路径无中文无空格无特殊字符默认package是不安装的,需要手动选择必须的package,编译所须的binutils,gcc,make都在 Devel库中,请选择安装。点击Default,将其变为Install,并选择下一步,直到完成安装打开 cygwin.bat 等待初始化直到出现linux命令行输入gcc,make 出现正常反应则安装完成解压缩Android-NDK待用,同样路径不包含空格和特殊字符中文等配置NDK环境变量首先找到cygwin的安装目录,找到一个home\你的用户名\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安装的时候我的home文件夹下面神马都没有,解决的办法:首先打开环境变量,把里面的用户变量中的HOME变量删掉,在E:\cygwin\home文件夹下建立名为Administrator的文件夹(是用户名),然后把E:\cygwin\etc\skel\.bash_profile拷贝到该文件夹下)。打开bash_profile文件,添加NDK=/cygdrive/你的盘符/android ndk 目录 例如:NDK=/cygdrive/e/android-ndk-r7export NDKNDK这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存打开cygwin,输入cd $NDK,如果输出上面配置的/cygdrive/e/android-ndk-r7信息,则表明环境变量设置成功了。Eclipse集成及编译新建Android工程,保证工程路径中不包含中文符号和空格,在工程中新建Java类,其中包含封装后的API函数,用来生成jni需要的h头文件。publicclass AndroidARHeader {publicnativeint loadImages(char[][] images, int[] widths, int[] heights, int num);publicnativeint DetectImage(char[] cameraframe, int width, int height, double[][] matrix, int[] nMatchID );publicnativeint addtest(int i,int j);}所有接口方法均为native,参数保证为基本类型。打开windows cmd命令行进入工程文件夹的src目录运行编译命令生成JNI用的 h 头文件新建C文件,完整复制h头文件内容,引用第三方so库的头文件,并实现接口方法,也就是回调第三方库方法。在工程中src同级目录新建jni目录将刚刚所写的c文件,第三方头文件以及so库放入该文件夹,并且在该文件夹下创建Android.mk文件LOCAL_PATH:= $(call my-dir)获取local_path 路径MY_LOCAL_PATH := $(LOCAL_PATH)存储一个根路径的指针include $(CLEAR_VARS)清除所有local变量LOCAL_PRELINK_MODULE := false不引入前制模块LOCAL_SRC_FILES := libIMARJni.c本地文件路径LOCAL_SHARED_LIBRARIES := libIMAR第三方库文件,不用加后缀.soLOCAL_PREBUILT_LIBS : = $(LOCAL_PATH)/libIMAR.so预载入库文件,第三方库绝对路径LOCAL_LDFLAGS := $(LOCAL_PATH)/libIMAR.so这一句是必须的,加载库文件标识,第三方库绝对路径LOCAL_MODULE += libIMARJni当前模块名称,因为引用了别的模块所以使用 +=LOCAL_PATH:= $(MY_LOCAL_PATH)重置LOCAL_PATH指针include $(BUILD_SHARED_LIBRARY)创建动态库完成后保存在eclipse中集成jni的编译器选择工程选择属性,选择builders新建立一个编译器Location 指向 Cygwin安装目录下bin文件夹下的 bash.exe文件Working Directory 选择 bin文件夹Arguments配置参数--login -c cd /cygdrive/d/jni/Andr

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档