Android上安装第三方库
在Android sdk中安装预安装第三方的(动态,静态)库,到系统中,方便模块无差别的使用。
Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_LIBS := lib/libAirFlyWfd.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_MULTI_PREBUILT)
编译安装后系统会拷贝创建如下三个文件
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver_intermediates\export_includes
其中
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
是用来打包到arm板子上的。
out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
是用来供其他模块编译的时候链接调用的。
需要使用时只需要想连接其他系统库一样加入
LOCAL_SHARED_LIBRARIES := \
libAirFlyWfd \
-----------------------------------以下是采坑的过程---------------------------
按照将所网上的信息,还有以下两种方式,但是经过测试在android4.4.2上都不能正常使用
方法一 使用include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libAirFlyWfd
LOCAL_MODULE_CLASS :=SHARED_LIBRARIES
LOCAL_SRC_FILES := lib/libAirFlyWfd.so
include $(BUILD_PREBUILT)
这个方法最后的结果是如下,
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd
out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd
out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver_intermediates\export_includes
打包到两个lib目录下的文件没有.so后缀,这样导致其他模块调用libAirFlyWfd这个库的候在
out\target\product\dolphin-fvd-p1\obj\lib\目录下找不到libAirFlyWfd.so而报错
make: *** No rule to make target 'out/target/product/dolphin-fvd-p1/obj/lib/libAirFlyWfd.so'
同时打包到板子上的
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd这个文件也没有法识别成动态库
如果改成
LOCAL_MODULE := libAirFlyWfd.so
安装完后如下
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver.so_intermediates\export_includes
库文件名称是ok的,但是
libAirFlyReceiver.so_intermediates目录名称不对,多了.so导致其他模块调用时找不到export_includes
make: *** No rule to make target 'out/target/product/dolphin-fvd-p1/obj/SHARED_LIBRARIES/libAirFlyWfd_intermediates/export_includes'
方法二 使用include $(PREBUILT_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)
LOCAL_MODULE :=libAirFlyWfd.so
LOCAL_SRC_FILES := lib/libAirFlyWfd.so
include $(PREBUILT_SHARED_LIBRARY)
按照以上方法执行Android.mk后没有任何反应,android 4.4.2上应该没有定义
include $(PREBUILT_SHARED_LIBRARY) 对应的操作方法,貌似是NDK r5以后才支持这个操作,具体没测试过。
最后参考
https://blog.csdn.net/lizhiguo0532/article/details/7219349
使用include $(BUILD_MULTI_PREBUILT)方法才ok。
------------------------------------------------------------
以上是安装成系统的共享库,方便所有模块使用。
如果只是某个模块单独使用,可以在对应的Android.mk中直接使用
LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/libAirFlyWfd.so
来指定库的路径。
同时别忘了将该库拷贝(PRODUCT_COPY_FILES)到/system/lib/下,才能烧录到板子,否则依赖此库的应用在板子上都无法正常启动。
Android上安装第三方库的更多相关文章
- 使用PyCharm安装第三方库
使用PyCharm安装第三方库是一种十分简单的做法,接下来我来演示一下在PyCharm上安装第三方库requess的操作流程. 首先,先看一下当第三方库未安装时的提示内容,在pycharm中新建pyt ...
- pip安装第三方库以及版本
这篇blog只是写给自己看看的. 今天突然遇到sqlalchemy映射到数据库时,一个字段类型是datetime(6),我这边死活访问不上,之前一直没有问题,最后查明原因,原来是第三方库的版本问题,真 ...
- [置顶] android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
0:前言: 在第二篇中,我们主要介绍了丙方android公司利用乙方C++公司给的动态库,直接调用库中的方法,但是这样方式受限于: 乙方C++公司开发的动态库是否符合jni的规范,如果不规范,则不能直 ...
- Android中集成第三方库的方法和问题
Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...
- Dev-C++安装第三方库boost
Dev-C++安装第三方库boost 转 https://www.jianshu.com/p/111571e4d6f5?utm_source=oschina-app 之前鉴于codeblocks界面 ...
- 关于pycharm中安装第三方库时报错的解决办法(一)
记录自己的生活! 一.事发背景 在pycharm中直接安装第三方库时因为版本问题总是无法安装成功,事情不大,但是很重要. 二.经过 最开始我自己电脑上安装了Python3.6和Python2. ...
- 田螺便利店—PyCharm安装第三方库
PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功能而且操作十分简便.如下: 1. 打开软件,点击左上角“文件(File)”—>“设置(setting)”: 2. ...
- npm安装第三方库找不到“cl.exe”问题
1.安装第三方库时找不到"cl.exe"的解决方法 安装 本地 remix时 出现错误(npm install remix-ide -g) 原因:remix 依赖的 python库 ...
- PyCharm安装第三方库如Requests
转载: https://blog.csdn.net/fx677588/article/details/56830929 PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功 ...
随机推荐
- 解决umount: /home: device is busy
取消挂载/home时出现umount: /home: device is busy, 原因是因为有程序在使用/home目录,我们可以使用fuser查看那些程序的进程, 然后 ...
- seo优化刷百度指数方法
站长朋友们都听过"刷指数"这个概念,并且一直以来都有站长刷指数的现象.大家或为了提升网站数据,或为了满足排名的虚荣心,或为了与竞争对手抗衡,都或多或少研究过刷指数的原理和工具. 那 ...
- Django边学边记——中间件
特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...
- 低差异序列 (low-discrepancy sequences)之Halton序列均匀产生多维随机数的介绍与实现
Halton序列 在统计学中,Halton序列是用于生成空间中的点的序列,如Monte Carlo模拟的数值方法,虽然这些序列是确定性的,但它们的差异性很低,也就是说,在许多方面看起来是随机的.它们在 ...
- redis 设置密码 laravel框架配置redis
* 参考资料 redis文档 http://www.redis.cn/documentation.html, http://redisdoc.com/index.html r ...
- 为什么说Mysql预处理可以防止SQL注入
简单点理解:prepareStatement会形成参数化的查询,例如:1select * from A where tablename.id = ?传入参数'1;select * from B'如果不 ...
- Windows系统中的SVN使用方法
Windows 下搭建 SVN(3.9版本)服务器 2018年08月11日 12:22:55 Amarao 阅读数 11984 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议, ...
- GDOI2021划水记
Day0 上午有意志行,一大早就醒了,然后走了五个小时脚痛.中午洗澡,宿舍轮流看巨人最终话然后聊了一个小时? 下午老师带着我和全爷先开溜,宿舍好像很破旧还还没得充电,领了牌牌和斐爷去吃饭. 然后六点多 ...
- Redis之品鉴之旅(一)
Redis之品鉴之旅(一) 好知识就如好酒,需要我们坐下来,静静的慢慢的去品鉴.Redis作为主流nosql数据库,在提升性能的方面是不可或缺的.下面就拿好小板凳,我们慢慢的来一一品鉴. 1)redi ...
- 解决导入MAVEN项目报错Dynamic Web Module 3.1 requires Java 1.7 or newer.
解释:web模块需要使用java1.7及以后的版本,目前的版本不符合.因而只需要修改java版本到1.7及以上即可. 解决方法: 1.保证 在eclipse 构建 web中关于java版本有三处需要修 ...