在Android sdk中安装预安装第三方的(动态,静态)库,到系统中,方便模块无差别的使用。

Android.mk

  1. include $(CLEAR_VARS)
  2. LOCAL_MODULE_TAGS := optional
  3. LOCAL_PREBUILT_LIBS := lib/libAirFlyWfd.so
  4. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
  5. include $(BUILD_MULTI_PREBUILT)

编译安装后系统会拷贝创建如下三个文件

  1. out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
  2. out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
  3. out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver_intermediates\export_includes

其中

  1. out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
    是用来打包到arm板子上的。
  1. out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
    是用来供其他模块编译的时候链接调用的。

    需要使用时只需要想连接其他系统库一样加入

LOCAL_SHARED_LIBRARIES := \
libAirFlyWfd \

  1. -----------------------------------以下是采坑的过程---------------------------
    按照将所网上的信息,还有以下两种方式,但是经过测试在android4.4.2上都不能正常使用

    方法一 使用include $(BUILD_PREBUILT)
  1. include $(CLEAR_VARS)
  2. LOCAL_MODULE_TAGS := optional
  3. LOCAL_MODULE := libAirFlyWfd
  4. LOCAL_MODULE_CLASS :=SHARED_LIBRARIES
  5. LOCAL_SRC_FILES := lib/libAirFlyWfd.so
  6. include $(BUILD_PREBUILT)

这个方法最后的结果是如下,

  1.  
  1. out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd
  2. out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd
  3. out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver_intermediates\export_includes

打包到两个lib目录下的文件没有.so后缀,这样导致其他模块调用libAirFlyWfd这个库的候在

  1. out\target\product\dolphin-fvd-p1\obj\lib\目录下找不到libAirFlyWfd.so而报错
  1. make: *** No rule to make target 'out/target/product/dolphin-fvd-p1/obj/lib/libAirFlyWfd.so'

  1. 同时打包到板子上的
  1. out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd这个文件也没有法识别成动态库

如果改成

  1. LOCAL_MODULE := libAirFlyWfd.so
  1. 安装完后如下
  1. out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.so
  2. out\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.so
  3. out\target\product\dolphin-fvd-p1\obj\SHARED_LIBRARIES\libAirFlyReceiver.so_intermediates\export_includes

库文件名称是ok的,但是

  1. libAirFlyReceiver.so_intermediates目录名称不对,多了.so导致其他模块调用时找不到export_includes
  1. make: *** No rule to make target 'out/target/product/dolphin-fvd-p1/obj/SHARED_LIBRARIES/libAirFlyWfd_intermediates/export_includes'

方法二 使用include $(PREBUILT_SHARED_LIBRARY)

  1. LOCAL_PATH := $(call my-dir)
  2.  
  3. include $(CLEAR_VARS)
  4. LOCAL_MODULE :=libAirFlyWfd.so
  5. LOCAL_SRC_FILES := lib/libAirFlyWfd.so
  6. include $(PREBUILT_SHARED_LIBRARY)
  1. 按照以上方法执行Android.mk后没有任何反应,android 4.4.2上应该没有定义
  1. include $(PREBUILT_SHARED_LIBRARY) 对应的操作方法,貌似是NDK r5以后才支持这个操作,具体没测试过。
    最后参考
    https://blog.csdn.net/lizhiguo0532/article/details/7219349
    使用include $(BUILD_MULTI_PREBUILT)方法才ok

    ------------------------------------------------------------
    以上是安装成系统的共享库,方便所有模块使用。
    如果只是某个模块单独使用,可以在对应的Android.mk中直接使用
  1. LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/libAirFlyWfd.so
    来指定库的路径。

    同时别忘了将该库拷贝(PRODUCT_COPY_FILES)到/system/lib/下,才能烧录到板子,否则依赖此库的应用在板子上都无法正常启动。
  1.  

Android上安装第三方库的更多相关文章

  1. 使用PyCharm安装第三方库

    使用PyCharm安装第三方库是一种十分简单的做法,接下来我来演示一下在PyCharm上安装第三方库requess的操作流程. 首先,先看一下当第三方库未安装时的提示内容,在pycharm中新建pyt ...

  2. pip安装第三方库以及版本

    这篇blog只是写给自己看看的. 今天突然遇到sqlalchemy映射到数据库时,一个字段类型是datetime(6),我这边死活访问不上,之前一直没有问题,最后查明原因,原来是第三方库的版本问题,真 ...

  3. [置顶] android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so

    0:前言: 在第二篇中,我们主要介绍了丙方android公司利用乙方C++公司给的动态库,直接调用库中的方法,但是这样方式受限于: 乙方C++公司开发的动态库是否符合jni的规范,如果不规范,则不能直 ...

  4. Android中集成第三方库的方法和问题

    Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...

  5. Dev-C++安装第三方库boost

    Dev-C++安装第三方库boost  转 https://www.jianshu.com/p/111571e4d6f5?utm_source=oschina-app 之前鉴于codeblocks界面 ...

  6. 关于pycharm中安装第三方库时报错的解决办法(一)

    记录自己的生活!   一.事发背景 在pycharm中直接安装第三方库时因为版本问题总是无法安装成功,事情不大,但是很重要.   二.经过 最开始我自己电脑上安装了Python3.6和Python2. ...

  7. 田螺便利店—PyCharm安装第三方库

    PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功能而且操作十分简便.如下: 1. 打开软件,点击左上角“文件(File)”—>“设置(setting)”: 2. ...

  8. npm安装第三方库找不到“cl.exe”问题

    1.安装第三方库时找不到"cl.exe"的解决方法 安装 本地 remix时 出现错误(npm install remix-ide -g) 原因:remix 依赖的 python库 ...

  9. PyCharm安装第三方库如Requests

    转载: https://blog.csdn.net/fx677588/article/details/56830929 PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功 ...

随机推荐

  1. CentOS8部署nextcloud网盘

    Nextcloud是一款开源的存储软件,功能丰富,支持多人协同工作,目前完全免费. 官网:https://www.nextcloud.com 架构:LAMP或LNMP 本文以LAMP为基础 注意:ph ...

  2. PHP打印跟踪调试信息

    对于大部分编译型语言来说,比如 C . Java . C# ,我们都能很方便地进行断点调试,但是 PHP 则必须安装 XDebug 并且在编辑器中进行复杂的配置才能实现断点调试的能力.不过,如果只是简 ...

  3. 腾讯云 CIF 工程效能峰会,10 月 19 - 20 日震撼来袭!

    近年来,依托于云计算的飞速发展,腾讯云云产品更新迅猛,云原生生态构建初具规模,越来越多的企业也开始寻求与深入数字化转型之路.但在摸索与实践中,企业往往会进入"伪上云"的误区.除了单 ...

  4. (转载https://segmentfault.com/a/1190000016313947)了解RestFul Api架构风格设计

    最近几年REST API越来越流行,特别是随着微服务的概念被广泛接受和应用,很多Web Service都使用了REST API. REST是HTTP规范主要编写者之一的Roy Fielding提出的, ...

  5. 一文让你掌握软件测试工程师SQL面试题

    数据结构说明 已知有如下4张表: 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程名称,教师号) 教师表:teac ...

  6. 鸿蒙内核源码分析(汇编传参篇) | 如何传递复杂的参数 | 百篇博客分析OpenHarmony源码 | v23.02

    百篇博客系列篇.本篇为: v23.xx 鸿蒙内核源码分析(汇编传参篇) | 如何传递复杂的参数 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...

  7. P4716-[模板]最小树形图

    正题 题目链接:https://www.luogu.com.cn/problem/P4716 题目大意 给出\(n\)个点\(m\)条边的一张有向图,求以\(r\)为根的最小外向树. \(1\leq ...

  8. P3190-[HNOI2007]神奇游乐园【插头dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P3190 题目大意 \(n*m\)的网格上有权值,求一条权值和最大的不交回路. \(1\leq n\leq 100, ...

  9. Visual Studio 6.0 在 Windows 10 下崩溃的一种解决方法

    Visual Studio 6.0 下载地址: https://winworldpc.com/product/microsoft-visual-stu/60 安装步骤: https://www.cod ...

  10. gin 跨域问题

    package middlewares import ( "github.com/gin-gonic/gin" "net/http" ) func Cors() ...