
【安卓开发系列 -- 系统开发】AOSP 源码环境开发系统 APP 预置带有 SO 的 AAR 包
发布日期:2021-05-07 20:51:07
浏览次数:23
分类:原创文章
本文共 4729 字,大约阅读时间需要 15 分钟。
【安卓开发系列 -- 系统开发】AOSP 源码环境开发系统 APP 预置带有 SO 的 AAR 包
【1】案例说明
1. 在 AOSP 源码环境中开发系统 APP 时需要引入 android-gif-drawable AAR 包并显示 GIF 动图;2. 开发环境 2.1 开发板,AIO-3399C 六核 AI 开发板 2.2 主机,Win10;虚拟机,Ubuntu 16.04 2.3 android 源码,android 7.13. 本博客记录在上述开发环境下引入 android-gif-drawable AAR 包的方法;
【2】Android.mk 文件引入带有 SO 的 AAR 包
Android.mk 文件中关于引入 AAR 包的关键内容
# 引入 AAR 包LOCAL_STATIC_JAVA_AAR_LIBRARIES := android-gif-drawable# 引入 AAR 包LOCAL_AAPT_FLAGS := ...LOCAL_AAPT_FLAGS += --extra-packages pl.droidsonroids.gifLOCAL_AAPT_FLAGS += --extra-packages com.aispeech.dui.dds# 引入 AAR 包文件路径include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := android-gif-drawable:libs/android-gif-drawable-1.1.9.aarLOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += lib-dds:libs/lib-dds-1.1.8.1-release.aarinclude $(BUILD_MULTI_PREBUILT)
Android.mk 文件中关于引入 SO 的关键内容
# 引入 SO 包LOCAL_JNI_SHARED_LIBRARIES := libpl_droidsonroids_gif# 引入 SO 包include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE_SUFFIX := .soLOCAL_MODULE := libpl_droidsonroids_gifLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_SRC_FILES_arm64 := jniLibs/arm64-v8a/libpl_droidsonroids_gif.soLOCAL_SRC_FILES_arm32 := jniLibs/armeabi-v7a/libpl_droidsonroids_gif.soLOCAL_MODULE_TARGET_ARCHS:= arm64 arm32LOCAL_MULTILIB := 64 32include $(BUILD_PREBUILT)
完整的 Android.mk 文件内容
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_RESOURCE_DIR := packages/apps/SecretRobot/resLOCAL_RESOURCE_DIR += frameworks/opt/datetimepicker/resifeq ($(TARGET_BUILD_APPS),)LOCAL_RESOURCE_DIR += frameworks/support/design/resLOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/resLOCAL_RESOURCE_DIR += frameworks/support/v7/gridlayout/resLOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/reselseLOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/design/resLOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/resLOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/resLOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/recyclerview/resendifLOCAL_PACKAGE_NAME := SecretRobotLOCAL_CERTIFICATE := platformLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src gen)# 引入 JAR 包LOCAL_STATIC_JAVA_LIBRARIES := android-opt-datetimepickerLOCAL_STATIC_JAVA_LIBRARIES += messageformatLOCAL_STATIC_JAVA_LIBRARIES += android-support-designLOCAL_STATIC_JAVA_LIBRARIES += android-support-v13LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompatLOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayoutLOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview# 引入 AAR 包LOCAL_STATIC_JAVA_AAR_LIBRARIES := android-gif-drawableLOCAL_STATIC_JAVA_AAR_LIBRARIES += lib-dds# 引入 SO 包LOCAL_JNI_SHARED_LIBRARIES := libpl_droidsonroids_gifLOCAL_AAPT_FLAGS := --auto-add-overlayLOCAL_AAPT_FLAGS += --extra-packages android.support.designLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompatLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.gridlayoutLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerviewLOCAL_AAPT_FLAGS += --extra-packages com.android.datetimepickerLOCAL_AAPT_FLAGS += --extra-packages com.android.messageformat# 引入 AAR 包LOCAL_AAPT_FLAGS += --extra-packages pl.droidsonroids.gifLOCAL_AAPT_FLAGS += --extra-packages com.aispeech.dui.ddsLOCAL_PROGUARD_FLAG_FILES := ../../../frameworks/support/design/proguard-rules.proLOCAL_PROGUARD_FLAG_FILES += proguard-rules.proinclude $(BUILD_PACKAGE)# 引入 AAR 包文件路径include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := android-gif-drawable:libs/android-gif-drawable-1.1.9.aarLOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += lib-dds:libs/lib-dds-1.1.8.1-release.aarinclude $(BUILD_MULTI_PREBUILT)# 引入 SO 包include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE_SUFFIX := .soLOCAL_MODULE := libpl_droidsonroids_gifLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_SRC_FILES_arm64 := jniLibs/arm64-v8a/libpl_droidsonroids_gif.soLOCAL_SRC_FILES_arm32 := jniLibs/armeabi-v7a/libpl_droidsonroids_gif.soLOCAL_MODULE_TARGET_ARCHS:= arm64 arm32LOCAL_MULTILIB := 64 32include $(BUILD_PREBUILT)include $(call all-makefiles-under, $(LOCAL_PATH))
常见问题总结
问题一 :library "/system/lib64/libpl_droidsonroids_gif.so" ("/system/lib64/libpl_droidsonroids_gif.so") needed or dlopened by"/system/lib64/libpl_droidsonroids_gif.so" is not accessible for the namespace "classloader-namespace"解决方案 :方案一 :修改 system/core/rootdir/etc/public.libraries.android.txt将需要添加的 SO 库添加到该文件中重新编译系统镜像并下载安装方案二 :不用编译,直接在板子上修改,对应目录 /system/etc问题二 :ANDROID NATIVE 的 No implementation found for native 等类似问题说明,该问题主要是针对 libpl_droidsonroids_gif.so 产生的,android-gif-drawable.aar 与安卓 sdk 版本的兼容问题,需要下载适合于 SDK 的 android-gif-drawable.aar 版本
参考致谢
本博客为博主学习笔记,同时参考了网上众博主的博文以及相关专业书籍,在此表示感谢,本文若存在不足之处,请批评指正。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月30日 11时49分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Deep residual learning for image recognition
2021-05-08
IO控制器
2021-05-08
LeetCode122.买卖股票的最佳时机2Golang版
2021-05-08
Java 知识点总结篇(2)
2021-05-08
Python 知识点总结篇(2)
2021-05-08
Python 知识点总结篇(3)
2021-05-08
Numpy 如何操作数组
2021-05-08
爬取网易科技滚动新闻
2021-05-08
vuex modules
2021-05-08
Java笔记:单链表
2021-05-08
phthon基本语法——温习
2021-05-08
sleep、wait、yield、join——简介
2021-05-08
web项目配置
2021-05-08
VTK:Medical之MedicalDemo2
2021-05-08
c语言(基本数据类型)实参与形参传值 用汇编理解
2021-05-08
基于单片机可控音乐流水灯控制设计-全套资料
2021-05-08
基于单片机简易信号误差分析设计-全套资料
2021-05-08
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2021-05-08
并发框架下的“基础类型”——浅析基本类型、ThreadLocal、原子类的线程安全机制
2021-05-08