android 使用NDK编译android需要的.SO库文件

阅读: 评论:0

android 使用NDK编译android需要的.SO库文件

android 使用NDK编译android需要的.SO库文件

JNI编译so库文件,要看个人的需求,以下分两种需求

公共部分(无论那种需求都需要的步骤 如下):

1,下载ndk,并进行配置环境变量:如 :F:android-ndk-r16bbuild

2,需要创建Android.mk    Application.mk两个文件文件

3,编写接口文件 如

4,然后找到工程路径下com级目录 ,如下图

打开命令行,输入

1) javac   comexampleadministratormyapplicationjniDemo.java

2) application.jni.Demo

后生成一个,如下图:

把.h文件复制到 openCV中jni文件夹中 ,复制.h文件并进行修改后缀名为 .cpp ,如下图

打开cpp文件并添添加 #include <jni.h>和添加参数 ,如下图

然后修改android.mk文件 ,如下图

到此需要的公共文件就已经准备好了,然后按照如下选择自己的需求 

第一种需求: 普通的so库文件编译要求:

在自己觉得合适的地方创建一个文件夹名称随便起 : XXX,然后在XXX文件夹中再创建一个文件夹,这个取名为: jni

然后把生成的com_xxx_xxx_xx_Demo.h Android.mk Application.mk 需要的.cpp .h文件放到 jni 文件夹中 ,在该目录下打开命令输入 ndk-build 就可以编译了

Android.mk 内容如下:

LOCAL_PATH := $(call my-dir)
OPENCV_PATH := ../sdk/native/jni
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog
LOCAL_C_INCLUDES :=            
    $(LOCAL_PATH)              
    $(OPENCV_PATH)/include
LOCAL_MODULE    := MapAPIs
LOCAL_SRC_FILES := map_compress.cpp com_yx_b34_jni_MapAPIs.cpp
LOCAL_LDLIBS    += -lm -llog -lc -ldl -lz -Wl,--gc-sections,-ljnigraphics
LOCAL_CPPFLAGS += -ffunction-sections -fdata-sections -fvisibility=hidden
LOCAL_CFLAGS += -ffunction-sections -fdata-sections -fvisibility=hidden -std=c++11
include $(BUILD_SHARED_LIBRARY)

Application.mk 内容如下:

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all
APP_PLATFORM := android-8

 

第二种需求: 需要opencv的so库文件编译要求:

把上面公共部分准备好之后,然后下载 opencv android版本:如下:

opencv-3.4.2-android-sdk 

下载地址 : /

下载完成后进行解压,配置环境变量 如下:  F:opencv-3.4.2-android-sdkOpenCV-android-sdksdk

配置成功后,在opencv解压文件中创建一个名为JNI文件夹 ,如下图:

然后把生成的com_xxx_xxx_xx_Demo.h Android.mk Application.mk 需要的.cpp .h文件放到 jni 文件夹中 ,在该目录下打开命令输入 ndk-build 就可以编译了

Android.mk 内容如下:

LOCAL_PATH := $(call my-dir)
OPENCV_PATH := ../sdk/native/jni

include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include $(OPENCV_PATH)/OpenCV.mk
LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog
LOCAL_C_INCLUDES :=            
    $(LOCAL_PATH)              
    $(OPENCV_PATH)/include

LOCAL_MODULE    := XXXAPIs
LOCAL_SRC_FILES := xxx.cpp com_xx_xx_jni_XXXAPIs.cpp xxx.cpp xxx.cpp
LOCAL_LDLIBS    += -lm -llog -lc -ldl -lz -Wl,--gc-sections,-ljnigraphics
LOCAL_CPPFLAGS += -ffunction-sections -fdata-sections -fvisibility=hidden
LOCAL_CFLAGS += -ffunction-sections -fdata-sections -fvisibility=hidden -std=c++11
include $(BUILD_SHARED_LIBRARY)

Application.mk 内容如下:

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all
APP_PLATFORM := android-8

下载示例代码连接 : 

本文发布于:2024-01-31 04:29:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170664658725489.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   android   NDK
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23