Android Eclipse配置NDK开发

作者: 黄煤球 | 来源:发表于2017-03-25 22:35 被阅读0次

    前期准备

    1.下载NDK开发需要的工具包:https://developer.android.com/ndk/downloads/index.html,我使用的是r9d的开发包

    2.配置ndk环境变量(后面要使用ndk-build命令,编译项目)

    编译ndk目录下的demo项目

    首先我们来看下ndk下载下来后自带的demo来运行一次,ndk下载下来后,解压,目录下有个sample目录,在Eclipse中导入hello-jni这个项目

    打开cmd命令窗口,进入Eclipse工作空间中的hello-jni项目目录下(如果在导入Eclipse的时候,没有勾选复制到工作区空间,就要进入ndk下,反正就是进入hello-jni目录下),然后执行ndk-build命令(这就是前面说的先配置好ndk的环境变量,没配置的话,进入ndk解压目录在路径栏直接cmd然后回车)

    OK,现在刷新一下Eclipse中的helloJni项目,你就能看到多了一个obj文件夹,下面就是so文件,然后就可以运行了,运行后的截图:


    新建NDK项目

    主要步骤:

         1.在Java文件中编写JavaNative代码

         2.使用javah命令根据native方法生成头文件

         3.新建.c文件实现头文件

         4.新建Android.mk文件

         5.加载动态链接库


    一:在Java文件中编写JavaNative代码

    新建项目,在MainActivity中写上一句native代码

    二:使用javah命令根据native方法生成头文件

    在项目上右键-->新建文件夹名字为jni,打开cmd,进入项目所在目录(我的目录E:\eclipse4.5workspace\NDKProject),执行javah命令,可以先看下javah命令的一些参数:

    OK,然后我们输入:javah -classpth bin/classes -d jni com.lhq.ndkproject.MainActivity,我们来解释下这句命令:

    使用javah命令,指定你要加载的类的文件目录(-classpath),然后指定头文件文件输出目录(-d jni,指定到jni目录,因为我们前面新建了jni的文件夹,不新建也行,它会自动创建,在你执行javah命令的目录下),然后加上JavaNative代码所在类的完整类名(包名+类名,所以,上面的classpath的参数注意了,输入到你要生成的头文件的源文件所在的目录,不然会找不到),然后回车

    但是出错了,说找不到activity,因为我们这个native方法是写在MainActivity里面的,但是MainActivity是继承了Activity的,它找不到Activity这个类(如果native方法是写在一个单独Java文件中,不会出这个错),我们更改下命令在bin/classes目录后加一个分号,然后去把Activity加进来,那怎么加进来呢?,去你的sdk目录下的platforms中随便找一个版本的然后进去,比如我进入的是android-21,然后目录下有个android.jar文件,我们要的就是它,复制下文件路径,在刚才命令classes的分号后面粘贴(如果是单独的Java文件就不需要这样),然后执行命令

    再进入Eclipse刷新一下,在jni目录下多了一个.h的头文件

    三:新建.c文件实现头文件

    现在我们要实现这个头文件,新建一个.c为后缀的文件,随便叫啥,我取个hello.c

    hello.c文件现在是空的,我们来实现它,在hello.c中需要新引入c的一些库的头文件:stdio,stdlib,当然还有自己的com_lhq_ndkproject_MainActivity.h头文件

    然后到.h文件中找到我们开始在MainActivity中写的那个native方法所对应的头文件中的方法,到.h中找到这个方法,然后复制到刚修改过的.c文件中,做好相应修改保存

    四:新建Android.mk文件

    现在已经实现了头文件,接下来我们到ndk中的demo,就是我们前面运行的那个demo中,复制Android.mk这个文件到我们自己项目的jni目录下,并做相应修改:LOCAL_MODULE为编译后的so库名字(这个你想叫什么都行),LOCAL_SRC_FILES为你要编译的这个文件的路径

    现在我们打开cmd命令窗口,进入当前项目目录下执行ndk-build命令,然后Eclipse中刷新项目,会发现多了一个obj文件夹,里面有我们刚编译的so动态链接库

    五:加载动态链接库

    编译好的so文件会在前面加上lib前缀,但是我们在加载的时候不需要写,直接写Android.mk中指定的文件名就行了

    运行成功!!!

    配置自动编译

    到目前为止,我们的ndk项目就能正常运行了,但是,我们每改一次c代码都要手动的用ndk-build编译,那我们来配置下自动编译:

    在项目上右击,然后选择properties,然后在弹出窗口中选择Builders,再点击new

    然后选择Program点击ok

    然后点击Browse File System

    选择ndk目录下的ndk-build.cmd文件

    OK,再配置下Working Direcroty,点击Browse Workspace选择自己的项目

    OK,然后点击Build Optionsg勾选During auto builds然后点击OK,到此为止,项目就不用每次都手动ndk-build了

    ****************************************如果转载请注明出处***********************************************

    相关文章

      网友评论

        本文标题:Android Eclipse配置NDK开发

        本文链接:https://www.haomeiwen.com/subject/kzocottx.html