ndk生成elf可执行文件及动态库文件

    Eclipse中安装好adt插件后,就可以通过Eclipse开发Android工程,然后网上下载一个ndk包并解压,然后在Eclipse中填好ndk目录,之后便可以使用ndk。ndk最主要的功能是为了实现Android 的jni,除此功能外还可通过ndk生成elf可执行文件和so动态库文件,下面一一讲解其中细节。

1. adt的安装和ndk的配置到能查找到很多教程,最终配置好后,如下界面会是:

  

    Eclipse中Windows-Preferences-Android-NDK就能进去上面界面。

2. 配置jni所在工程

    1)创建一个Eclipse工程,如下:

    2)配置jni

    选中工程名,右键,选择Android Toos—Add Native Support ...,便会在工程目录下生成jni、libs、obj这三个目录,编辑jni代码需要在jni目录,里面有一个*.cpp文件和一个Android.mk文件,ndk是通过Android.mk进行编译的(一般大型源码都是通过*.mk文件编译的,不过这里ndk代码量不大)。在*.cpp中写代码即可,Android.mk的书写是默认将代码编译成动态库文件,的,因为其中最后一句:include $(BUILD_SHARED_LIBRARY),如果要想编译成可执行文件,只需要将该行改成:include $(BUILD_EXECUTABLE),此时完全安找平时C/C++的方式书写,不过ndk里面的代码库是gcc的库,和VC有一定差别,不过也有类似VC中MSDN的查询文档,可在 https://download.csdn.net/download/denny_chen_/10482438 中下载。

    如以下代码:

#include <jni.h>
#include <stdio.h>
int main(int argc, char* argv[]){
	printf("Hello world! ndk\r\n");
	return 11;
}

    使用Ctrl + B便能编译该代码,在libs和obj中都能生成相应的可执行文件,不过如果报了APP_PLATFORM不对的问题,还需加一个Application.mk文件到jni目录,其中只需一行:APP_PLATFORM := android-14 即可,因为刚才创建工程时选择的API版本是14。

    3)执行可执行文件

adb push oneNdkElf /data/local/tmp
adb shell chmod 777 /data/local/tmp/oneNdkElf
adb shell /data/local/tmp/oneNdkElf

    将以上三条命令写到bat脚本中,或者一条条执行(前提是插上了可用的安卓机或者安卓虚拟机),即可。

    4)对于动态库文件直接参考Android本地调用jni方法。

猜你喜欢

转载自blog.csdn.net/Denny_Chen_/article/details/85396314