博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android上安装第三方库
阅读量:6815 次
发布时间:2019-06-26

本文共 2682 字,大约阅读时间需要 8 分钟。

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

Android.mk

include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_PREBUILT_LIBS := lib/libAirFlyWfd.soLOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)include $(BUILD_MULTI_PREBUILT)

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

out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfd.soout\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.soout\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 := optionalLOCAL_MODULE := libAirFlyWfdLOCAL_MODULE_CLASS :=SHARED_LIBRARIESLOCAL_SRC_FILES := lib/libAirFlyWfd.soinclude $(BUILD_PREBUILT)

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

 
out\target\product\dolphin-fvd-p1\system\lib\libAirFlyWfdout\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfdout\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.soout\target\product\dolphin-fvd-p1\obj\lib\libAirFlyWfd.soout\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.soLOCAL_SRC_FILES := lib/libAirFlyWfd.soinclude $(PREBUILT_SHARED_LIBRARY)
按照以上方法执行Android.mk后没有任何反应,android 4.4.2上应该没有定义
include $(PREBUILT_SHARED_LIBRARY) 对应的操作方法,貌似是NDK r5以后才支持这个操作,具体没测试过。 最后参考 使用include $(BUILD_MULTI_PREBUILT)方法才ok。 ------------------------------------------------------------ 以上是安装成系统的共享库,方便所有模块使用。 如果只是某个模块单独使用,可以在对应的Android.mk中直接使用
LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/libAirFlyWfd.so 来指定库的路径。 同时别忘了将该库拷贝(PRODUCT_COPY_FILES)到/system/lib/下,才能烧录到板子,否则依赖此库的应用在板子上都无法正常启动。
 

转载于:https://www.cnblogs.com/tid-think/p/11078692.html

你可能感兴趣的文章
软件定时器算法
查看>>
day1 01
查看>>
[MACOS] Mac上的抓包工具Charles
查看>>
电话机器人原来真的运用了人工智能的核心技术
查看>>
实现图片的轮播效果
查看>>
pt-archiver 数据删除、迁移工具使用
查看>>
下载网站地址
查看>>
桌面虚拟化浅谈
查看>>
我的友情链接
查看>>
将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程...
查看>>
Hyper-V 自动化支持技术
查看>>
VS2010启动调试时报“未能将脚本调试器附加到计算机”
查看>>
Python中的一些面试题(2)
查看>>
无法启动 DTC 分布式事务服务,MS DTC 发生服务特定错误: 3221229584
查看>>
基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
查看>>
【精品教程】Android高手进阶教程pdf分享
查看>>
我的友情链接
查看>>
cocos2dx-3.0rc0安装和创建新工程
查看>>
佛系程序员的月薪五万指南
查看>>
Visual Studio 2017 右键项目 清理(Clean)、生成(Build)和重新生成(Rebuild)
查看>>