文档章节

Android ndk 使用第三方so和头文件编译

拉风的道长
 拉风的道长
发布于 2017/03/10 14:35
字数 347
阅读 513
收藏 0

        我们在使用ndk的时候,有时候可能会使用到第三放提供的so和头文件。一般他们是提供对外暴露的接口,供开发者去开发。

        这里我举个例子,看看如何在Eclipse环境下使用第三方的so。

        第三方的提供:

          |___libXyun.so
          |___Xyun
                |__HeaderA.h
                |__HeaderB.h 

我们要基于这个so和两个头文件做自己的事情。需要在android.mk中添加对他们的引用。

        首先,需要把他们拷贝到工程的jni目录中。最后结构如下:

jni          
 |___libXyun.so
 |___Xyun
       |__HeaderA.h
       |__HeaderB.h 

        然后修改android.mk

#####添加对库的引用#######

include $(CLEAR_VARS)
   LOCAL_MODULE := libXyun #名称
   LOCAL_SRC_FILES := libXyun.so #so的路径
include $(PREBUILT_SHARED_LIBRARY)

LOCAL_SHARED_LIBRARIES := libXyun


#####加入头文件#########
LOCAL_C_INCLUDES += $(LOCAL_PATH)/Xyun/ #头文件所在的目录

        基本上这样就OK了。

TIPS
用Eclipse写jni代码,没有什么提示功能,用ANDROID studio编写比较舒服,有代码提示。所以建议:在studio中写代码,然后用mk去链接编译。

// TODO
Android Studio 2.2之后对jni的编写支持也好多了,有了CMake,使用起来也比较方便。CMakeList中怎么去使用,我还没有摸清楚。以后再加。估计会了之后,用CMake也会很方便。

 

© 著作权归作者所有

共有 人打赏支持
拉风的道长
粉丝 54
博文 110
码字总数 55629
作品 0
昌平
程序员
私信 提问
Build Assimp library for Android

Build Assimp library for Android 首先各路教程中有推荐使用 NDK 或者 STANDALONE TOOLCHAIN 编译的,根据我的理解,这两种方式都是可以的,如果能直接使用 NDK 编译成功的话,就没有必要使...

皮斯卡略夫
2018/11/05
0
0
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

大家好,我是光源。 最近在尝试搭建 FFmpeg 开发环境时遇到一个蛋疼的事,Google 了 N 篇文章竟然没有一篇是可以跑起来的! 少部分教程是给出了自我矛盾的配置(是的,按照贴出来的代码和配置...

光源_Android
2018/05/13
0
0
NDK全称 Native Development Kit

1、概述 NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具...

长平狐
2012/08/29
209
0
Android NDK带来什么 (转)

1、前言 6月26日,Google Android发布了NDK,引起了很多发人员的兴趣。NDK全称:Native Development Kit。下载地址为:http://developer.android.com/sdk/ndk/1.5_r1/index.html。 2、误解 ...

GDP_搞地皮
2012/11/27
1K
0
编译可在Android上运行的依赖库(一):glib库

前言 这是系列文章,它们由《编译可在Android上运行的glib库》及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出。由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库交叉编译...

阿里聚安全
2016/05/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
3
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
2
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
2
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部