android NDK开发及调用标准linux动态库 so文件

本文介绍了Android NDK开发过程,包括NDK的作用、Cygwin环境、CDT和Sequoyah插件的使用。详细讲解了Android.mk文件的配置,如LOCAL_MODULE、LOCAL_SRC_FILES等变量的含义,并展示了不同类型的编译模板。还提到了JNI调用的规则和添加依赖包的方法,最后讨论了编译设置,如bash和ndk-build的配置。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

预备知识及环境搭建

1、NDK(native development Kit)原生开发工具包,用来快速开发C、C++动态库,并能自动将so文件和java应用一起打包成apk.对应:jni层c++开发

2、Cygwin:是windows平台上模拟Linux运行环境的工具,即window平台上的linux环境工具,so文件需要在linux平台上编译运行。对应:arm linux平台

3、CDT:eclipse下的C/C++开发工具,需要在eclipse下安装这个插件。对应:标准C++开发。应该可以通过这个工具开发、编译arm平台的C++程序

4、Sequoyah:Sequoyah插件用于设置Android工程对Native开发的支持,make文件生成工具,帮助我们自动生成mk文件,需要在eclipse下安装这个插件。对应:make文件生成

开发调用流程

一、新建一个android项目,此处命名为WsJniPlayer.

二、NDK本地支持

1、添加NDK本地支持:在新建项目上,右键-》Android Tools->Add Native Support,弹出对话框

按默认设置即可,点击Finish按钮后,在项目目录中,多了一个名为jni的目录,这个目录便是Sequoyah自动生成的用于存放C/C++源代码的目录

jni目录中有两个文件Android.mk和cpp文件WsJniPlayer.cpp

2、mk文件说明

 菜鸟级别解释::=是赋值的意思,$是引用某变量的值,include是执行动作。GNU:(GNU's Not Unix),GNU计划,为保证GNU软件可以自由地“使用、复制、修改和发布”,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。

一个Android.mk file用来向编译系统描述你的源代码。具体来说:-该文件是GNU Makefile的一小部分。这个文件的语法允许把你的源代码组织成模块:静态库.a和共享库.so。你可以在每一个Android.mk file中定义一个或多个模块。下面是常用语句的解释:

*LOCAL_PATH:= $(call my-dir):首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。宏函数’my-dir’,由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。

*include $( CLEAR_VARS):CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量,除LOCAL_PATH

*LOCAL_MODULE := helloworld:LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。重要注意事项:如果你把库命名为‘libhelloworld’,编译系统将不会添加任何的lib前缀,也会生成libhelloworld.so,这是为了支持来源于Android平台的源代码的Android.mk文件,如果你确实需要这么做的话。

*LOCAL_SRC_FILES := helloworld.c:变量必须包含将要编译打包进模块中的C或C++源代码文件。注意,你不用在这里列出头文件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好.

*include $(BUILD_SHARED_LIBRARY):BUILD_SHARED_LIBRARY是编译系统提供的变量,指向一个GNU Makefile脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值