Android查看当前应用已经加载的so库

源代码:

	private static List<String> allSOLists = new ArrayList<String>();/** * 获取全部已加载的SO库*/private void getAllSOLoaded(){allSOLists.clear();// 当前应用的进程IDint pid = Process.myPid();String path = "/proc/" + pid + "/maps";File file = new File(path);if(file.exists() && file.isFile()){readFileByLines(file.getAbsolutePath());} else {Log.e("DAVIS", "不存在[" + path + "]文件.");}StringBuilder sb = new StringBuilder();for(int i=0;i<allSOLists.size();i++){sb.append(allSOLists.get(i) + "\n");}Log.e("DAVIS", sb.toString());}/** * 获取当前应用已加载的SO库*/private void getCurrSOLoaded(){allSOLists.clear();// 当前应用的进程IDint pid = Process.myPid();String path = "/proc/" + pid + "/maps";File file = new File(path);if(file.exists() && file.isFile()){readFileByLines(file.getAbsolutePath());} else {Log.e("DAVIS", "不存在[" + path + "]文件.");}StringBuilder sb = new StringBuilder();for(int i=0;i<allSOLists.size();i++){if(allSOLists.get(i).startsWith("/data/app/")) {sb.append(allSOLists.get(i) + "\n");}}Log.e("DAVIS", sb.toString());}/*** 以行为单位读取文件,常用于读面向行的格式化文件*/public static void readFileByLines(String fileName) {File file = new File(fileName);BufferedReader reader = null;try {reader = new BufferedReader(new FileReader(file));String tempString = null;// 一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {if(tempString.endsWith(".so")) {int index = tempString.indexOf("/");if(index != -1){String str = tempString.substring(index);// 所有so库(包括系统的,即包含/system/目录下的)allSOLists.add(str);}}}reader.close();} catch (Exception e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}}

输出日志

全部已加载的SO库:

	/vendor/lib64/hw/gralloc.kirin710.so/vendor/lib64/hw/gralloc.kirin710.so/vendor/lib64/hw/gralloc.kirin710.so/system/lib64/vndk-sp-28/libion.so/system/lib64/vndk-sp-28/libion.so/system/lib64/vndk-sp-28/libion.so/vendor/lib64/libhiion.so/vendor/lib64/libhiion.so/vendor/lib64/libhiion.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so/system/lib64/libhwetrace_jni.so/system/lib64/libhwetrace_jni.so/system/lib64/libhwetrace_jni.so/system/lib64/vndk-sp-28/liblzma.so/system/lib64/vndk-sp-28/liblzma.so/system/lib64/vndk-sp-28/liblzma.so/vendor/lib64/egl/libGLES_mali.so/vendor/lib64/egl/libGLES_mali.so/vendor/lib64/egl/libGLES_mali.so/system/lib64/vndk-sp-28/libz.so/system/lib64/vndk-sp-28/libz.so/system/lib64/vndk-sp-28/libz.so/vendor/lib64/libc_secshared.so/vendor/lib64/libc_secshared.so/vendor/lib64/libc_secshared.so/system/lib64/vndk-sp-28/libutilscallstack.so/system/lib64/vndk-sp-28/libutilscallstack.so/system/lib64/vndk-sp-28/libutilscallstack.so/system/lib64/vndk-sp-28/libbacktrace.so/system/lib64/vndk-sp-28/libbacktrace.so/system/lib64/vndk-sp-28/libbacktrace.so/system/lib64/vndk-sp-28/libunwindstack.so/system/lib64/vndk-sp-28/libunwindstack.so/system/lib64/vndk-sp-28/libunwindstack.so/system/lib64/vndk-sp-28/libunwind.so/system/lib64/vndk-sp-28/libunwind.so/system/lib64/vndk-sp-28/libunwind.so/system/lib64/libwebviewchromium_loader.so/system/lib64/libwebviewchromium_loader.so/system/lib64/libwebviewchromium_loader.so/system/lib64/libcompiler_rt.so/system/lib64/libcompiler_rt.so/system/lib64/libcompiler_rt.so/system/lib64/vndk-sp-28/libutils.so/system/lib64/vndk-sp-28/libutils.so/system/lib64/vndk-sp-28/libutils.so/system/lib64/vndk-sp-28/libbase.so/system/lib64/vndk-sp-28/libbase.so/system/lib64/vndk-sp-28/libbase.so/system/lib64/vndk-sp-28/libcutils.so/system/lib64/vndk-sp-28/libcutils.so/system/lib64/vndk-sp-28/libcutils.so/system/lib64/vndk-sp-28/libhidlbase.so/system/lib64/vndk-sp-28/libhidlbase.so/system/lib64/vndk-sp-28/libhidlbase.so/system/lib64/vndk-sp-28/android.hardware.graphics.common@1.0.so/system/lib64/vndk-sp-28/android.hardware.graphics.common@1.0.so/system/lib64/vndk-sp-28/android.hardware.graphics.common@1.0.so/vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so/vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so/vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so/system/lib64/vndk-sp-28/libhidltransport.so/system/lib64/vndk-sp-28/libhidltransport.so/system/lib64/vndk-sp-28/libhidltransport.so/system/lib64/vndk-sp-28/android.hardware.graphics.mapper@2.0.so/system/lib64/vndk-sp-28/android.hardware.graphics.mapper@2.0.so/system/lib64/vndk-sp-28/android.hardware.graphics.mapper@2.0.so/system/lib64/vndk-sp-28/libhardware.so/system/lib64/vndk-sp-28/libhardware.so/system/lib64/vndk-sp-28/libhardware.so/system/lib64/vndk-sp-28/libc++.so/system/lib64/vndk-sp-28/libc++.so/system/lib64/vndk-sp-28/libc++.so/system/lib64/vndk-sp-28/libhwbinder.so/system/lib64/vndk-sp-28/libhwbinder.so/system/lib64/vndk-sp-28/libhwbinder.so/system/lib64/libiAwareSdk_jni.so/system/lib64/libiAwareSdk_jni.so/system/lib64/libiAwareSdk_jni.so/system/lib64/libjavacrypto.so/system/lib64/libjavacrypto.so/system/lib64/libjavacrypto.so/system/lib64/libsoundpool.so/system/lib64/libsoundpool.so/system/lib64/libsoundpool.so/system/lib64/libmedia_jni.huawei.so/system/lib64/libmedia_jni.huawei.so/system/lib64/libmedia_jni.huawei.so/system/lib64/libhwlog_jni.so/system/lib64/libhwlog_jni.so/system/lib64/libhwlog_jni.so/system/lib64/libhwaps.so/system/lib64/libhwaps.so/system/lib64/libhwaps.so

当前应用已加载的SO库:

	/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libNativeCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so/data/app/com.tsb-eMBG4MWSQgAzpqckdwC7cQ==/lib/arm64/libCloudwiseCrash.so

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 进程监控(top命令)

文章目录一、查看top命令Android N&#xff08;7.1系统&#xff0c;level 25&#xff09; 及之前Android O&#xff08;8.0系统&#xff0c;level 26&#xff09; 及之后二、top -n [number]Android N&#xff08;7.1系统&#xff0c;level 25&#xff09; 及之前Android O&…

java 快速排序

快速排序 对冒泡排序的一种改进 思路: 一趟排序后,选取一个中间值,数组被分为比中间值小的部分,比中间值大的部分;再对左右两部分分别递归排序 代码实现 import java.util.Arrays;public class QuickSort {public static void main(String[] args) {int[] arr {-9, 78, 0, 2…

C++字符串的个人理解

String string是字符串&#xff0c;在声明一个字符串的时候&#xff0c;比如string a;这个过程是在栈上进行的&#xff0c;但是如果给这个字符串分配内存空间&#xff0c;这段区间是存储在堆上的&#xff0c;因此最好在声明字符串的时候就要指出字符串的大小和对其进行初始化s…

Android 基础性能数据获取(/proc/)

一、系统内存 读取命令&#xff1a; /proc/meminfoJava代码&#xff1a; private void click(){try{String cmd "/proc/meminfo";BufferedReader reader new BufferedReader(new InputStreamReader(new FileInputStream(cmd)), 1000);StringBuilder sb new Stri…

物理 常见力与牛顿三定律

常用知识点 动量 dmvdmvdvm p-mv- f-dp-/dtma- 开普勒第三定律 r1^3__k只与恒星质量有关 T^2 总结 1.电梯匀速就相当于在地面,加速或减速就会有一个a 2.当合外力为0时,物体保持静止或匀速直线运动 3.力是改变物体运动状态的原因 4.重力在地球两极最大,赤道最小,随纬度…

Java命令:jmap — 打印指定进程的共享对象内存映射或堆内存细节

文章目录一、前言二、命令介绍三、使用实例1、jmap -heap [pid]2、jmap -histo[:live] [pid]3、jmap -histo[:live] [pid] |grep "[关键字1]\|[关键字2]"4、jmap -dump:live,formatb,filea.log [pid]四、总结一、前言 jdk安装后会自带一些小工具&#xff0c;jmap命令…

C++vector相关学习,我的理解

vector的初始化方式 1&#xff0c;使用拷贝初始化时候&#xff0c;即使用的时候&#xff0c;只可以提供一个初始值2&#xff0c;如果提供一个类内初始值&#xff0c;只可以使用拷贝初始化或者使用花括号的方式初始化3&#xff0c;如果提供的是初始元素值的列表&#xff0c;只可…

概率论 一维随机变量

随机变量 离散型随机变量:有限个或无限可列个 连续型随机变量 分布函数F(X) 范围是[a,b) 包含能取到a以及a之前的值的概率相加 分布律(概率分布) 1.所有概率相加为1 2.WX-1,计算出每一个对应的W,然后如果有相同的W就合并其概率,最后一一对应P(x)即可 概率密度函数(密度) …

Linux命令:grep命令详解

grep常用参数说明 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN]... [-f FILE]... [FILE...]OPTIONS:-e: 使用正则搜索-i: 不区分大小写-v: 查找不包含指定内容的行-w: 按单词搜索-c: 统计匹配到的次数-n: 显示行号-r: 逐层遍历目录查找-A: 显示匹配行及后…

ECC密钥结构和密码学基础

参考链接 密码学基础3&#xff1a;密钥文件格式完全解析ECC数据结构

JAVA牛客专项练习2020.12.31

1.使用迭代器的remove方法&#xff0c;可以边遍历边删除元素 2.线程 启动线程 new thread&#xff08;&#xff09;.start&#xff08;&#xff09; new thread&#xff08;new runnable&#xff08;&#xff09;&#xff09;.start&#xff08;&#xff09; 普通方法&#xf…

Linux命令:find命令详解

find命令格式 find path -option [-print] [-exec -ok |xargs |grep] [command {} \;]# 参数说明path: find命令所查找的目录路径。~ 表示$HOME目录;.来表示当前目录;/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: find命令对匹配的文件执行该参数所…

boost::interprocess::named_mutex的翻译和学习

官方地址 named_mutex 简介 // In header: <boost/interprocess/sync/named_mutex.hpp>class named_mutex { public:// construct/copy/destruct 构建/复制/销毁named_mutex(create_only_t, const char *, const permissions & permissions());named_mutex(open_o…

安卓牛客专项练习2020.12.31

1.窗口dialog或半透明 2.Pracelable性能比serializable高

MAC查找JDK的路径

在控制台中输入&#xff1a; /usr/libexec/java_home -V输出如下结果&#xff1a; Matching Java Virtual Machines (4):1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home1.7.0_79, x86_64: "Java SE 7&quo…

sqliteorm的sync_schema介绍

迁移功能 在迁移过程中&#xff0c;没有明确的上下函数。取而代之的是sqlite_orm提供的sync_schema函数&#xff0c;它负责将实际的db文件模式和你在make_storage调用中指定的模式进行比较&#xff0c;如果有什么不一样&#xff0c;它就会改变或放弃/创建模式。 storage.sync_…

安卓系统体系架构

1.大体:共有四层&#xff0c;系统应用层&#xff0c;JAVA API层&#xff0c;安卓系统运行层&#xff0c;Linux内核层 具体: 系统应用层&#xff08;System Apps&#xff09; Java API 框架层&#xff08;Java API Framework&#xff09; Android系统运行层&#xff08;包括Andr…

Java命令:jstack — 获取线程dump信息

目录一、命令介绍二、使用实例实例一&#xff1a;jstack查看输出实例二&#xff1a;jstack统计线程数实例三&#xff1a;jstack检测死锁实例四&#xff1a;jstack检测CPU高一、命令介绍 Usage:jstack [-l] <pid>(to connect to running process) //连接活动线程jstack …

Java多线程死锁例子

目录一、产生死锁的原因二、如何避免死锁一、产生死锁的原因 发生死锁的情况&#xff1a; 多个线程需要同时占用多个共享资源而发生需要互相死循环等待的情况&#xff0c;就是&#xff0c;两个线程互相等待着对象释放锁&#xff0c;一直这样僵持下去&#xff0c;所以导致了死锁…

C++中lock_guard的学习

lock_guard 锁守卫是一个管理mutex对象的对象&#xff0c;使其始终处于锁定状态。在构造时&#xff0c;mutex对象被调用线程锁定&#xff0c;在销毁时&#xff0c;mutex被解锁。这是最简单的锁&#xff0c;作为一个自动持续时间的对象&#xff0c;它的作用特别大&#xff0c;可…