安卓玩机自做小工具------内置apk应用 分析应用依赖库so文件工具操作

在rom修改定制过程中。有些客户需要内置的应用无法使用常规步骤进行内置。通常表现在内置的应用出现无法打开或者使用出现bug,这就是应用依赖库so文件的原因。当然解决方式也有很多,例如将应用根据当前设备cpu架构将so文件内置在apk应用中。或者使用自启脚本在开机状态自动安装等等。但我们需要了解在一个特殊应用中。那些so文件是软件运行必须的依赖库?

基础依赖库文件常识

为何部分库必须内置

1-----so是特定功能的实现载体

许多高性能或硬件相关的功能(如音视频处理、图形渲染、加密算法等)是通过 C/C++ 实现的,并编译成 .so文件。如果移除这些库,相关的 JNI 接口将无法找到实现,导致 UnsatisfiedLinkError崩溃。因此,这些库对 App 的正常运行至关重要

2-----系统不会提供第三方 .so

Android 系统只会为应用提供其自身运行所需的系统库(如 libc.so, libandroid_runtime.so),而不会包含任何第三方 SDK(如高德地图、支付 SDK)的 .so文件。因此,所有第三方功能库都必须随 App 一同打包发布

3-----架构不匹配导致加载失败

App 在安装时,系统会根据设备 CPU 架构(ABI)从 APK 的 lib/目录中选择匹配的 .so文件进行安装。如果 App 声明支持多种 ABI(如 arm64-v8a, armeabi-v7a),就必须为每种 ABI 都提供对应的 .so文件。否则,在缺失对应架构 .so的设备上就可能出现崩溃

4-----32/64 位必须"全有或全无"

一个进程在同一时刻只能运行一种架构(32位或64位)的代码。如果 APK 中同时存在32位和64位的 .so文件,系统会根据设备情况选择一种架构,并要求该架构下的所有 .so文件必须齐全。部分提供会导致加载失败。因此,要么全部提供,要么只提供一种架构的库

5------避免依赖系统私有库

NDK 明确列出了可安全使用的系统库。如果第三方 .so依赖了系统私有库(如某些厂商的 HAL 库),在不同厂商的设备上可能因私有库版本或存在性不同而导致加载失败。因此,最稳妥的方式是让库自带其依赖,避免依赖不稳定的系统组件。

手搓分析工具

在rom中遇到此类问题。根据实际需要。手搓了一个分析apk中依赖库文件的图形化小工具。用于分析一些特殊应用apk中必须要内置依赖库so文件。并且有详细的日志分析

分析日志

其中

all_so_files.txt为应用所有so文件列表

dependencies.txt 为依赖关系详情

required_so.txt - 必需so文件列表

工具下载:

https://download.csdn.net/download/u011283906/92635177

相关推荐
学习使我健康1 小时前
Android App 启动原理
android·android studio
TechMix2 小时前
【性能工具】atrace、systrace、perfetto抓取的trace文件有何不同?
android·性能优化
张小潇2 小时前
AOSP15 WMS/AMS系统开发 - 窗口层级源码分析
android·前端
努力努力再努力wz5 小时前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql
zh_xuan7 小时前
Android gradle任务
android·gradle构建
Grackers8 小时前
Android Perfetto 系列 10:Binder 调度与锁竞争
android·binder
李白你好8 小时前
Android 自动化渗透测试指令生成
android·自动化
CeshirenTester9 小时前
Claude Code 不只是会写代码:这 10 个 Skills,才是效率分水岭
android·开发语言·kotlin
朝星10 小时前
Android开发[2]:Flow
android·kotlin
zzb158011 小时前
Android Activity 与 Intent 学习笔记
android·笔记·学习