安卓NDK开发步骤以及开发过程如何引用第三方.so文件

基于当前的eclipse最新版本,和最新的NDK开发包,开发过程很简单,步骤如下:

1. 正常建立一个安卓工程

2. 鼠标右键工程,选择安卓工具的增加本地支持,按照提示下一步即可,之后你的工程下面就会多了三个文件夹,即可进行NDK开发,编写c/c++代码编译等

安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件

需要注意的是:

1. 生成的jni文件夹下会自动生成Android.mk,但是没有Application.mk工程,此时编译生成的.so包是默认所有平台的如下图所示,如果只生成指定平台的.so文件,需要自己在jin目录新建Application.mk文件,增加类似语句 APP_ABI := armeabi armeabi-v7a mips x86,不同的平台之间用空格。

安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件

2.在安卓程序里面调用了本地方法后,生成.h文件方法可以通过eclipse扩展工具,也可以手动的通过打开终端,再次介绍eclipse的方法,步骤如下图

安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件新建-------->安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件安卓NDK开发步骤以及开发过程如何引用第三方.so文件

之后让光标在MainActivity.java内的情况下,单击那个扩展工具即可生成。

3. 开发自己的.so的同时调用第三方的.so文件时,如果直接复制到libs文件件下面,编译时会被删除,解决方法是:在jni文件下建立一个文件夹名为符合你调用的so文件平台的名字例如armeabi,x86_64文件夹,然后将so文件复制到该文件夹下面,在Android.mk文件里面添加如下类似代码

include $(CLEAR_VARS)
LOCAL_MODULE := libpp_neon
TARGET_ARCH_ABI := x86_64
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libpp_neon.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)

其中libpp_neon,libpp_neon.so,是根据自己调用的.so,很容易理解,x86_64为你建立的文件夹目录,$(TARGET_ARCH_ABI)/libpp_neon.so代表该目录下的文件,原Android.mk文件中的LOCAL_PATH := $(call my-dir)路径是项目的jni文件夹路径,我这是参考了NDK的开发文档,还要注意一点就是你调用的so文件的平台需要和你Application.mk设定生成的一一对应,不然会报错无法识别该so文件,,,,我感觉.so文件肯定可以放在其他位置,而且不一定非要一一对应,但我菜鸟还不知道怎么弄,希望有大神补充怎么弄。

如果有的地方不懂在参考文章中应该能够找到解决办法。第二种方法请参考下一篇文章。

参考文章:

http://blog.****.net/e_inch_photo/article/details/75214124

https://developer.android.com/ndk/guides/prebuilts.html#sa

http://www.cnblogs.com/pplxlee/p/5559223.html

http://blog.****.net/zhangziki/article/details/50470765