安卓玩机自做小工具------内置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

相关推荐
冬奇Lab17 小时前
Android系统启动流程深度解析:从Bootloader到Zygote的完整旅程
android·源码阅读
泓博18 小时前
Android中仿照View selector自定义Compose Button
android·vue.js·elementui
zhangphil19 小时前
Android性能分析中trace上到的postAndWait
android
十里-20 小时前
vue2的web项目打包成安卓apk包
android·前端
p***199420 小时前
MySQL——内置函数
android·数据库·mysql
兆子龙21 小时前
我成了🤡, 因为不想看广告,花了40美元自己写了个鸡肋挂机脚本
android·javascript
儿歌八万首1 天前
Android 全局监听神器:registerActivityLifecycleCallbacks 解析
android·kotlin·activity
弹幕教练宇宙起源1 天前
cmake文件介绍及用法
android·linux·c++
&岁月不待人&1 天前
一个Android高级开发的2025总结 【个人总结无大话】
android
吴声子夜歌1 天前
RxJava——FlowableProcessor详解
android·echarts·rxjava