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或其他工具,平台就自带了这个功 ...
随机推荐
- CentOS8部署nextcloud网盘
Nextcloud是一款开源的存储软件,功能丰富,支持多人协同工作,目前完全免费. 官网:https://www.nextcloud.com 架构:LAMP或LNMP 本文以LAMP为基础 注意:ph ...
- PHP打印跟踪调试信息
对于大部分编译型语言来说,比如 C . Java . C# ,我们都能很方便地进行断点调试,但是 PHP 则必须安装 XDebug 并且在编辑器中进行复杂的配置才能实现断点调试的能力.不过,如果只是简 ...
- 腾讯云 CIF 工程效能峰会,10 月 19 - 20 日震撼来袭!
近年来,依托于云计算的飞速发展,腾讯云云产品更新迅猛,云原生生态构建初具规模,越来越多的企业也开始寻求与深入数字化转型之路.但在摸索与实践中,企业往往会进入"伪上云"的误区.除了单 ...
- (转载https://segmentfault.com/a/1190000016313947)了解RestFul Api架构风格设计
最近几年REST API越来越流行,特别是随着微服务的概念被广泛接受和应用,很多Web Service都使用了REST API. REST是HTTP规范主要编写者之一的Roy Fielding提出的, ...
- 一文让你掌握软件测试工程师SQL面试题
数据结构说明 已知有如下4张表: 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程名称,教师号) 教师表:teac ...
- 鸿蒙内核源码分析(汇编传参篇) | 如何传递复杂的参数 | 百篇博客分析OpenHarmony源码 | v23.02
百篇博客系列篇.本篇为: v23.xx 鸿蒙内核源码分析(汇编传参篇) | 如何传递复杂的参数 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...
- P4716-[模板]最小树形图
正题 题目链接:https://www.luogu.com.cn/problem/P4716 题目大意 给出\(n\)个点\(m\)条边的一张有向图,求以\(r\)为根的最小外向树. \(1\leq ...
- P3190-[HNOI2007]神奇游乐园【插头dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3190 题目大意 \(n*m\)的网格上有权值,求一条权值和最大的不交回路. \(1\leq n\leq 100, ...
- Visual Studio 6.0 在 Windows 10 下崩溃的一种解决方法
Visual Studio 6.0 下载地址: https://winworldpc.com/product/microsoft-visual-stu/60 安装步骤: https://www.cod ...
- gin 跨域问题
package middlewares import ( "github.com/gin-gonic/gin" "net/http" ) func Cors() ...