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
Android查看当前应用已经加载的so库相关推荐
- Android框架之路——Glide加载图片(结合RecyclerView、CardView)
Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...
- Android 中LayoutInflater(布局加载器)之介绍篇
本文出自博客Vander丶CSDN博客,如需转载请标明出处,尊重原创谢谢 博客地址:http://blog.csdn.net/l540675759/article/details/78099358 前 ...
- Android平滑图片加载和缓存库 Glide 使用详解
版权声明:本文原创作者:一叶飘舟 作者博客地址:http://blog.csdn.net/jdsjlzx 一.简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide的图片加载库,作者 ...
- Android 二次封装网络加载框架
Android 二次封装网络加载框架 写在最前面 开发当中,在请求网络的时候,大家或多或少都会使用一些第三方框架,Android-Async-Http. Volley.XUtils.Okhttp.Re ...
- android多种方式实现异步加载图片
记得之前做安卓应用时都是在2.2以下的版本,如果在UI线程中进行耗时操作,比如http,socket等 会产生android.os.NetworkOnMainThreadException 如果异步加 ...
- android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...
本文将带你了解Android应用开发之[Android]使用android-gif-drawable包加载GIF动图,希望本文对大家学Android有所帮助. [导包] 首先需要导入android-g ...
- 【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )
文章目录 一.不同版本的 DEX 加载 1.Android 8.0 版本 DEX 加载分析 2.Android 6.0 版本 DEX 加载分析 3.Android 5.0 版本 DEX 加载分析 一. ...
- Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)
两款比较优秀的开源图片处理库框架:Universal-ImageLoader和Picasso. Universal-ImageLoader 简介: Universal-ImageLoader是目前An ...
- android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例
本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...
最新文章
- dsp和通用计算机的区别,dsp芯片是什么_dsp芯片和通用微处理器有什么区别
- HighCharts使用心得
- 【译】权益证明的设计理念
- leetcode111 爬楼梯 python实现
- x86虚拟机NXVM_Centos6.5 x86_64系统安装kvm虚拟机—基础篇
- 洛谷——P1093 奖学金
- 一款监控网络状态的好工具- Smokeping
- c# 去除转义符号_c#语法
- Linux内核线程kernel thread详解--Linux进程的管理与调度
- Unity3d Asset Server启动问题
- 查看电脑的s/n序列号信息方式
- php将数组转成字符串的,php怎样将数组转化成字符串
- MatConvNet 相关函数解释说明
- 三分钟解决Matlab中文乱码问题
- HTML如何剪切图片,css如何截取图片?
- 程序员最喜欢的15款文本编辑器推荐
- 计算机可以谭音乐吗,武汉音乐学院作曲系师生作品入选第44届国际计算机音乐大会...
- 计算机考研854题型,2020哈尔滨工业大学计算机考研854真题回忆版
- python2/3 opencv的fitline函数
- 从表征到行动---意向性的自然主义进路(续一)