精华内容
下载资源
问答
  • 2013-10-27 19:14:00

          Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小;然而Native 内存并不能在虚拟堆上看到;Android系统基于Linux,这样的话其具备Linux的大多数特性;在Linux当中有不少方法可以查看进程占用的内存,可以采用图形界面工具,也可以采用命令,具体如何查看这边就不介绍了。

         Android Native 内存查看:

    1.首先需要确保你的PC上装了adb工具;不同平台安装相应的版本。

    2.adb shell 然后通过ps 命令查看手机上的进程。

      

    u0_a101   18271 174   656392 32856 ffffffff 00000000 S com.baidu.map.location
    u0_a101   18286 174   654332 34288 ffffffff 00000000 S com.baidu.map.location:re
    mote
    u0_a58    18325 174   673716 38868 ffffffff 00000000 S com.xiaomi.channel:pushse
    rvice
    u0_a58    18347 174   688288 43628 ffffffff 00000000 S com.xiaomi.channel
    root      18380 2     0      0     ffffffff 00000000 S kworker/0:3
    u0_a11    18440 174   686980 41256 ffffffff 00000000 S com.google.process.gapps
    u0_a11    18470 174   674016 36508 ffffffff 00000000 S com.google.android.gms
    u0_a11    18497 174   676944 38440 ffffffff 00000000 S com.google.android.gsf.lo
    gin
    u0_a11    18517 174   684580 41268 ffffffff 00000000 S com.google.process.locati
    on
    u0_a12    18588 174   654444 32760 ffffffff 00000000 S com.miui.cloudservice
    u0_a74    18623 174   838968 123264 ffffffff 00000000 R com.android.chrome
    u0_i134   18654 174   747068 56468 ffffffff 00000000 S com.android.chrome:sandbo
    xed_process0
    u0_a23    18767 174   654368 32372 ffffffff 00000000 S com.google.android.partne
    rsetup
    3.查看进程:下面以com.android.chrome为例

    找到com.android.chrome 进程id是18623:在终端上输入:

    shell@android:/ $ cat /proc/18623/status

    cat /proc/18623/status
    Name:   .android.chrome
    State:  S (sleeping)
    Tgid:   18623
    Pid:    18623
    PPid:   174
    TracerPid:      0
    Uid:    10074   10074   10074   1007
    Gid:    10074   10074   10074   1007
    FDSize: 256
    Groups: 1006 1015 1028 3003
    VmPeak:   842864 kB
    VmSize:   811216 kB
    VmLck:         0 kB
    VmPin:         0 kB
    VmHWM:    126080 kB
    VmRSS:    125484 kB
    VmData:    69156 kB
    VmStk:       136 kB
    VmExe:         8 kB
    VmLib:     68128 kB
    VmPTE:       298 kB
    VmSwap:        0 kB
    Threads:        46
    SigQ:   0/14952
    SigPnd: 0000000000000000
    ShdPnd: 0000000000000000
    SigBlk: 0000000000001204
    SigIgn: 0000000000000000
    SigCgt: 00000002000094e8
    CapInh: 0000000000000000
    CapPrm: 0000000000000000
    CapEff: 0000000000000000
    CapBnd: ffffffffffffffff
    Cpus_allowed:   f
    Cpus_allowed_list:      0-3
    voluntary_ctxt_switches:        2759
    nonvoluntary_ctxt_switches:     2591

    4.分析内存

      熟悉Linux的童鞋知道proc目录下存放的是进程的各种信息;

      第三步中看到的VmRSS就是进程当前占用的实际内存。

      具体其他参数可以参考:进程信息参数详解

       

     rss %ld     (24) Resident Set Size: number of pages the
                              process has in real memory.  This is just the
                              pages which count toward text, data, or stack
                              space.  This does not include pages which have not
                              been demand-loaded in, or which are swapped out.
    5.ps会列出很多进程我们有时候需要直接找到对应的进程,linux大家都知道可以通过grep、或者find找到直接找到进程;

    adb shell;trim版本的linux ,不直接支持这些命令;不过有个方法是通过busybox来解决;下面以查找chrome为例:

    shell@android:/ $ ps | busybox grep chrome
    ps | busybox grep chrome
    u0_a74    18623 174   837800 125568 ffffffff 00000000 S com.android.chrome
    u0_i134   18654 174   752124 55908 ffffffff 00000000 S com.android.chrome:sandbo
    xed_process0







         

            

    更多相关内容
  • ANDROID源码分析实录

    热门讨论 2016-01-11 09:52:11
    Android源码分析实录》共分为15章,主要内容包括走进Android世界、硬件抽象层详解、分析JNI(Java本地接口)层、Android内存系统分析、Andmid虚拟机系统详解、IPC通信机制详解、Zygote进程/System进程和应用程序...
  • Android内存占用情况分析

    千次阅读 2020-09-05 21:49:31
    Android内存占用情况分析    本文主要讲解用系统自带工具分析android手机在运行时内存分部情况,当手机内存不足时,可以按照下面步骤分析到底是谁占用了内存。 查看手机剩余内存情况 在终端输入以下...

    Android内存占用情况分析

       本文主要讲解用系统自带工具分析android手机在运行时内存分部情况,当手机内存不足时,可以按照下面步骤分析到底是谁占用了内存。

    查看手机剩余内存情况

    在终端输入以下指令:

    adb shell dumpsys meminfo

    主要信息如下图:

    剩余内存描述
       查看手机剩余内存方法有很多,这个方法比较准确。

    Total RAM为手机的总内存;
    Free RAM为剩余内存:其中cached pss为后台缓冲进程,当系统内存不足或缓冲进程数目达到系统限制最大数时会杀掉(部分)以释放内存。cached为高速缓冲存储器的内存,这部分内存已经分配好了,但是系统为了节约频繁申请内存开销,free时会把一部分内存cache起来,当用户再次申请内存时可能会直接从缓冲拿一块出来。free为未分配的物理内存;
    Used RAM为用户态使用总内存;
    Lost RAM为内核态使用内存,比如OpenGL纹理内存、GPU占用内存、图形显示ION buffer都包含在Lost RAM里。

       值得注意的是当Free RAM比较小时可以认为系统内存不足(有种情况不能确定就是:Lost RAM占用内存很大,Lost RAM可能是内核缓冲内存太多了导致Free RAM小,但是并不是内存足,因为当内存不足时kernel会释放缓存,可以通过echo 3 > /proc/sys/vm/drop_caches主动释放)。

       如果想了解根据详细内存分配情况可以在终端输入:

    adb shell cat /proc/meminfo

    详细内存分配情况
    其中:

    MemTotal: LowTotal与HighTotal总和,系统总可用RAM大小(即物理内存减去一些预留位和内核的二进制代码)

    MmFree: LowFree与HighFree的总和,被系统留着未使用的内存

    Buffers: 用来给文件做缓冲大小

    Cached: 被高速缓冲存储器(cache memory)缓存的内存的大小(等于 diskcache minus SwapCache)

    SwapCached: 被高速缓冲存储器(cache memory)用的交换空间的大小已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口

    Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用

    Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径

    HighTotal: 高内存,内核不能直接访问的这部分内存

    HighFree: 高内存剩余大小

    LowTotal: 底内存,内核能够直接访问的内存

    LowFree: 低内存剩余大小

    SwapTotal: 交换空间的总大小

    SwapFree: 未被使用交换空间的大小

    Dirty: 等待被写回到磁盘的内存大小

    Writeback: 正在被写回到磁盘的内存大小

    AnonPages:未映射页的内存大小

    Mapped: 设备和文件等映射的大小

    Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗

    SReclaimable:可收回Slab的大小

    SUnreclaim: 不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)

    PageTables: 管理内存分页页面的索引表的大小

    NFS_Unstable: 不稳定页表的大小

    VmallocTotal: 可以vmalloc虚拟内存大小

    VmallocUsed: 已经被使用的虚拟内存大小

    查看进程内存占用情况

    top指令查看各进程内存

       在终端输入:

    adb shell top

    top指令查看内存

    查看某个进程内存

       找到要查看的进程pid,在终端输入:

    adb shell dumpsys meminfo pid

    单个进程内存

       如上图,可以分别看到Native Heap、Dalvik Heap、PSS大小。

    展开全文
  • Android日志分析工具的开发介绍

    万次阅读 热门讨论 2017-04-20 14:14:46
    Android日志分析工具的开发介绍 一,软件下载地址: 技术交流QQ群:513138238(用于公布软件最新版本信息和相关技术交流) [V3.6.3] http://download.csdn.net/detail/u013662621/9945190 [V3.5.3] ...
    

    Android日志分析工具的开发介绍

    一,软件下载地址:

    技术交流QQ群:513138238(用于公布软件最新版本信息和相关技术交流)

    [V3.9.2] https://download.csdn.net/download/u013662621/85396833

    [V3.6.4] Android日志分析工具-V3.6.4_android日志分析工具,android日志查看工具-Android工具类资源-CSDN下载

    [V3.6.3] Android日志分析工具-V3.6.3-Android工具类资源-CSDN下载
    [V3.5.3] Android日志分析工具-V3.5.3-Android工具类资源-CSDN下载
    [V3.5.2] Android日志分析工具-V3.5.2_androidlog分析工具,android日志分析工具-Android工具类资源-CSDN下载
    [V3.4.2] Android日志分析工具--V3.4.2-Android工具类资源-CSDN下载
    [V3.2.2] Android日志分析工具V3.2.2修复版-Android工具类资源-CSDN下载
    [V3.1.1] Android日志分析工具V3.1.1-Android工具类资源-CSDN下载
    [V3.0.0] Android日志分析工具修复版-Android工具类资源-CSDN下载

    [Linux-IDE]下载地址

    [V1.0.1] 百度一下,你就知道

    <Linux-IDE:end>

    二,软件简介
    Android常用开发工具Eclipse和Android Studio本身自带有日志查看工具LogCat,一般性使用基本满足要求。但若长期处于Android的深度开发,会发现自带的工具内容缓冲区有限,会造成历史数据的丢失,且无法进行信息过滤和日志头自动提取分类。为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需依赖开发工具。另外,软件为完全自主开发,对后期若有新的功能需求可以很方便的进行功能扩展和维护。

    欢迎反馈意见到964195140@qq.com

    软件界面预览

    三,软件设计框架概览

    四,软件功能简介
    1,左侧Filters为日志头过滤器栏,当载入日志文件时会自动识别;
    2,日志内容会自动根据打印等级显示不同的颜色以区分;
    3,可通过设置右上角的日志等级筛选出大于等于该等级的打印信息;
    4,可通过中上方的搜索框搜索日志内容,搜索规则为:任意字符串,大小写不敏感;
    5,可通过设置时间过滤器的起止时间来筛选出在该时间范围内的所有日志信息;
    6,可通过设置信息过滤器的开关来选择是否显示对应的信息;
    7,可通过工具栏中模式切换按钮在“离线查看模式”和“实时终端模式”之间切换;
    8,可通过工具栏中ADB连接按钮,进行ADB设备的扫描、连接、断开等操作;
    9,软件底部显示当前工作的状态,如:工作模式、ADB设备状态、当前打开的日志文件路径;
    10,退出实时终端模式时可将日志缓存文件导出另存;
    11,可在软件设置中配置外部ADB工具的路径;
    12,对日志内容解析后,可提供:行号、时间、等级、PID进程号、Tag、文本信息;
    13,在实时终端模式中,ADB设备断开或丢失后可自动重连3次,并自动恢复日志内容的显示,若3次重连失败则退出ADB环境;
    14,可通过将鼠标移动到Tag列表栏的某一项上,预览该Tag的完整信息;
    15,文件加载过程有进度条提示;
    16,可通过菜单栏中最近打开的文件选项快速打开文件;
    17,可通过快捷键“Ctrl+G”或者工具栏中的对应图标快速跳转到指定行;
    18,支持保存软件的全局配置属性和重要数据到配置文件中,待软件下次启动时可恢复上一次的操作环境;若该文件不存在,则会自动生成配置文件;和导志内志信该软件;

    19,支持软件配置文件的备份和导入;
    20,支持快捷键Ctrl+C复制当前选中的日志内容;
    21,支持进程过滤器,即仅显示与选中进程相关的日志信息;
    22,支持在具有加密策略的电脑上使用该软件;支持软件配置文件的备份和导入;
    23,优化实时终端模式下日志内容的刷新,新增文件光标定位器,并优化日志Tag提
    提器,使得最终的日志内容刷新率高达50~100Hz,且刷新频率不再受文件大
    小的影响,此机制的实现使得实时监控的连续时间可无限长;
    24,新增日志Tag系统级过滤器,主要过滤输出数量占比较大且不具备很大分析价值
    的内容,既可以让更有价值的内容快速呈现,也很大程度的节省了内存的占用;
    25,新增日志内容搜索进度条的显示,提醒用户当前的搜索状态;
    26,软件启动前新增重构并删除上一次软件异常闪退时未删除的日志缓存文件,并提
    示用户在删除前是否另存为;
    27,新增对大文件进行分页加载的机制,并设置有快速页跳转的功能(只有当首次遍
    历过所有的页数据后,才可跳转任意页),该机制的实现使得离线分析不再受
    文件大小的限制,同时也保证了软件运行时不会无节制的占用系统内存;
    28,新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据库,避免
    长时间的监控造成大量内存的占用;
    29,新增实时终端模式下,ADB设备非人为断开或非人为退出终端模式时,自动备份
    当前的日志缓存文件,后期再对这些备份文件进行分析重构,并还原为一个完
    整的日志文件,且设有重构进度条的显示;
    30,新增Tag日志头种类及其数量分析功能,并以图标的形式展现;

    31,新增软件重启功能;
    32,新增实时模式下清空当前显示的功能;
    33,新增设置属性“是否启用调试指定APP”,输入eclipse或android studio中正在调试的APP包名,如“com.example.uidemo”,点击下载程序后,该工具可自动识别并跳转到该APP的进程,并显示相关日志信息;

    34,新增安装APK到指定设备的功能;

    35,支持对android studio自带日志工具导出的日志格式进行解析;
    36,新增软件自动检查是否有更新版本发布,若有,则弹窗提示下载链接;
    37,新增设置选项“是否启用软件安全机制”;

    38,优化软件以支持最新版win10系统;

    五,软件安全保护机制
    为了防止软件被轻易的反编译和破解,于是在该软件中引入了注册码注册机制和软件加壳处理机制,仅对指定设备授权开源(未授权设备仍可以使用所有功能,只是无法查看部分软件信息而已),增大了反编译和破解的难度,一定程度上保护了软件的可维护性。

    六,软件版本升级日志


    【V1.0.0】:初始版  2017/2/6  何晓龙  964195140@qq.com;
    支持Tag过滤;
    支持打印等级过滤;
    支持文本搜索;
    支持根据打印等级以不同的颜色显示内容;
    支持自动提取所有Tag种类以及其对应的数量;
    支持文件的打开与关闭;
    支持设置字体;

    【V2.0.0】:升级版  2017/2/9  何晓龙  964195140@qq.com;
    新增时间过滤器;
    新增信息过滤器;
    支持定位信息头的识别;
    新增文件编码格式的设置;
    新增当前文件重载功能;

    【V3.0.0】:升级版  2017/3/17  何晓龙  964195140@qq.com;
    新增“实时终端模式”,通过ADB连接Android设备,并支持ADB设备扫描、连接、断开、状态显示等功能,且可在“离线查看模式”和“实时终端模式”之间随意切换;
    新增退出实时终端模式时可将日志缓存文件导出另存为的功能;
    新增设置菜单中ADB路径设置的功能;
    新增进程PID号的显示,并在信息过滤器中增加对PID的过滤开关;
    新增实时终端模式下ADB设备连接断开或丢失后自动重连,并自动恢复实时显示日志内容的功能;
    为日志Tag列表栏新增鼠标移动到Tag上时,自动弹出Tip提示,提示内容为该Tag的完整信息,以防止当Tag内容过长而无法完整显示;
    升级ADB命令执行接口,之前为主线程(即UI线程)中阻塞式执行ADB命令,若命令执行时间较长,容易导致UI线程长时间无响应,严重地影响了用户体验;升级后为新建一个专门执行ADB命令的后台线程,使其与主线程互相独立运行,通过信号与槽的方式进行数据交换,如此便可以在不影响UI线程的前提下更好地执行ADB命令,提高了用户体验度;
    新增日志文件加载进度条显示,以更好地提示用户当前的加载进度;
    新增软件工具栏,将软件中常用的操作添加到工具栏中,并配备合理的图标和Tip提示信息,且工具栏可选择显示或隐藏,以及存放的位置(顶部、底部)等,此功能的增加提高了用户的操作性和软件使用的简易性;
    重新设计“关于软件窗口”的布局方式,将软件功能简介和更新日志的详细信息默认隐藏,通过“查看细节”按钮显示详细信息;
    软件菜单栏中新增最近打开文件的历史记录功能,可设置最大记录的文件数量,可通过历史菜单直接选择文件将其打开,无须每次都通过系统的文件管理器方式打开;
    新增跳转到日志文件的指定行的功能,且设有快捷键“Ctrl+G”,可快速跳转到需要查看的行,并将其高亮显示;
    新增退出软件确认对话框功能,防止用户误操作使软件直接退出,而导致分析数据的丢失;
    新增软件全局配置文件的功能:可记录软件的属性设置、文件历史浏览记录、以及一些重要的数据到该文件中,待软件下次启动时可恢复上一次操作的环境;实现原理:定义配置文件的语法格式,创建能够对该文件进行识别、解析、读写的解析器,然后再主程序中通过该解析器来操作配置文件;
    优化对日志数据内容的解析过程以及日志文件的加载,使解析效率提高了70%多;
    优化日志内容显示功能,通过加入显示缓冲区的机制,每次仅加载显示缓冲区中的数据,大大提高了显示速度;
    优化实时终端模式显示日志的方式,通过加入增量式解析的机制,每次仅解析新增的内容,不必重复解析之前已经解析过的内容,如此可将显示速度提升十倍以上,很好的达到了实时显示的效果;
    优化ADB服务器启动功能,增加等待对话框,并新增3次自动重连功能,若3次连接失败,则退出ADB环境;
    优化Tag列表栏的显示,对所有Tag进行按字母排序,以便用户快速查找需要查看的Tag;
    优化自动调整标签栏位置的功能,使其自动调整更加智能且定位准确;
    优化软件状态栏显示方式,使其更加直观舒适;
    修复滚动日志内容到最低端后,仍可继续滚动的BUG;
    修复日志内容显示区域滚动条有时往上滑动时无法滑动的BUG;
    修改日志缓存文件的路径,并增加路径的安全性判断和自动建立的功能;
    修复当退出实时终端模式时,ADB重连导致再次进入终端模式的BUG;
    修复BUG,当快速重复点击“重载文件”按钮时导致多次加载同一文件。修改为仅当一个文件加载完毕后才可继续下一步操作;
    修复BUG,当快速重复点击“连接ADB设备”按钮时导致多次重复执行扫描ADB设备的操作,以至于等待对话框无法正常关闭,而使软件进入假死状态。修改为仅当一次扫描完成后才可继续下一次扫描操作;
    【注意】实时终端模式下,每次只能连续实时监控1小时,超过该时间后由于日志文件过大,导致解析时间比较长,无法达到实时显示的效果;但后台仍然在将日志内容输出到缓存文件,可等待执行完后再将该文件导出后进行离线分析即可;

    【V3.1.1】:优化版  2017/4/21  何晓龙  964195140@qq.com
    新增软件退出时自动删除缓存目录;
    新增配置文件的备份和导入;
    新增ADB连接状态指示灯显示;
    新增进程过滤器,即只显示选中进程的相关日志信息;
    更改软件配置文件存储路径为系统用户(即C盘中我的文档)的路径;
    优化在线ADB设备信息显示,增加厂商、型号、系统版本号、SDK版本号等信息;
    修复由于重复显示等待对话框却无法正常关闭,导致软件死机的BUG;
    修复少数格式的PID进程号解析错误的BUG;

    【V3.2.2】:优化版  2017/4/25  何晓龙  964195140@qq.com
    更改日志缓存文件后缀名为“.log”,以便支持在具有加密策略的电脑上使用该软件,为了兼容旧版本,仍支持对txt格式的日志文件进行离线分析;
    优化日志缓存文件另存为的功能,使用户确定退出终端模式后,立即停止日志输出;
    优化Filter栏选项排序为大小写不敏感;
    修复实时终端模式下Filter栏的项乱跳的BUG;
    修复实时终端模式下滑动滚动条导致软件闪退的BUG;

    【V3.4.2】:优化版  2017/5/5  何晓龙  964195140@qq.com
    优化实时终端模式下日志内容刷新的代码:
    *1)优化增量式文件加载器,新增文件光标位置定位器,每次加载时
    直接跳转到上一次的位置;
    *2)优化日志Tag提取器,将之前的每次计算所有Tag改为增量式计
    算,即每次仅计算新增的内容,然后与之前的叠加即可;
    *3)通过以上方式的优化后,实时模式下日志内容的刷新速度将不再
    受文件大小的影响,且刷新时间基本在20ms以内,即显示刷新频率在
    50Hz以上,真正意义上实现了日志内容实时刷新的功能;
    新增日志Tag系统级过滤器,主要过滤掉输出数量占比较大且不具备很大分析价值的内容,既可以让更有价值的内容快速呈现,也很大程度的节省了内存的占用。该过滤器共分为一级过滤和二级过滤,一级过滤为完全不具备分析价值的内容,二级过滤为极少数情况可能会有一点分析价值;
    新增日志内容搜索进度条显示,提醒用户当前的搜索状态,避免当搜索时间较长时给用户一种软件假死的现象;
    软件启动前新增删除上一次软件异常闪退时未删除的日志缓存文件,并提示用户在删除前是否另存为;
    新增对大文件进行分页加载的机制,可自动识别是否需要对文件进行分页,并设置有快速页跳转的功能;
    *该机制的目的):使离线分析日志文件不再受文件大小的限制,同时保证了软件运行过程中不会无节制的占用系统内存;
    *该机制的原理):每次加载当前页后才能确定下一页的光标偏移量,因此只有当第一次加载过所有页后,才可随意的进行页跳转,否则只能跳转下一页或前面的所有页;
    新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据库,避免长时间的监控造成大量内存的占用(注意:此处清空仅为软件中数据清空,而实际缓存文件中的数据仍然是存在的);
    新增实时终端模式下,ADB设备非人为断开或非人为退出终端模式时,自动备份当前的日志缓存文件,后期再对这些备份文件进行分析重构,还原为一个完整的日志文件,并对重构的过程设有进度条显示;
    新增Tag日志头种类及其数量分析功能,并以图表的形式展现;
    优化软件退出时若从未开启过ADB服务,则无需执行ADB服务的关闭;
    修复有时软件退出后仍有等待对话框在显示的BUG;
    修复无法输出系统进程system_process的部分日志信息的BUG;
    修复文件加载进度条有时显示异常导致卡死,且无法关闭的BUG;
    修复进行进程筛选后再执行系统过滤设置,在文件重载的过程中软件死机闪退的BUG;
    修复行跳转到最后一行时偶尔造成软件死机闪退的BUG;
    
    【V3.5.2】:优化版  2017/5/19  何晓龙  964195140@qq.com
    新增软件重启功能;
    新增实时模式下清空当前显示的功能;
    新增设置属性“是否启用调试指定APP”,在输入框输入eclipse或android studio中正在调试的APP包名,如“com.example.uidemo”,点击下载程序后,该工具可自动识别并跳转到该APP的进程,并显示相关日志信息;
    优化实时模式下切换打印等级后,重新显示所有信息(旧版为仅显示后面更新的信息);
    优化进程筛选执行后仅显示该进程的信息(旧版为只要包含了该进程的都会显示);
    优化日志缓存文件重构过程,禁止重构进度的人为关闭,防止用户关闭该进程后导致日志文件破损;
    优化文件加载进度条最大值的设定方式,自动识别文件是否需要进行分页处理;
    优化日志内容显示区域中单行被选中时的显示方式,改为前景色不变,背景色高亮;
    修复部分设备采用Log.wtf()打印时实际输出为'F'标志,导致无法解析该内容的BUG,而实际其相当于'A'等级的日志,故新增对其的支持;
    修复日志显示区域自定义的滚动条偶尔出现滚动紊乱的BUG;
    修复特殊情况下软件配置文件备份失败的BUG;
    修复ADB设备名中包含有'-'符号的设备无法连接的BUG;
    修复等待对话框gif动画无法显示的BUG;
    【V3.5.3】:优化版  2017/6/26  何晓龙  964195140@qq.com
    新增安装APK到指定设备的功能;
    优化软件中主线程阻塞延时等待的实现机制,避免有时报已有事件在运行的警告;
    优化ADB设备名显示格式,以缩短其显示长度;
    优化显示日志等级的控制机制,只有在启动软件时自动初始化为VERBOSE,其他任何情况都保持不变,除非手动改变;
    修复列表显示中设置和获取指定行可能存在行无效或获取对象为null而导致软件死机闪退的BUG;
    修复有时ADB设备连接断开后仍显示连接成功状态的BUG;
    修复ADB状态检测定时器与日志文件检测定时器冲突导致ADB不断重连的BUG;
    修复实时终端模式下ADB连接断开后无法自动重连的BUG;
    修复软件重启选择是或否都会重启的BUG;
    修复实时终端模式下长时间运行后内存占用逐渐增大导致内存泄漏而使软件异常闪退的BUG,通过优化代码以及主动释放频繁申请的内存来解决;
    修复实时终端模式下变换软件窗口尺寸时偶尔出现软件异常闪退的BUG;
    修复实时终端模式下updateFile()接口执行过程中出现异常后无法正常退出,并死循环在此处的BUG;
    【V3.6.3】:优化版  2017/8/22  何晓龙  964195140@qq.com
    支持对android studio自带日志工具导出的日志格式进行解析;
    新增软件自动检查是否有更新版本发布,若有,则弹窗提示下载链接;
    新增设置选项“是否启用软件安全机制”;
    优化设置界面布局,合并字体设置和文件编码格式设置;
    优化PID进程过滤器的显示,对PID号进行排序操作,便于快速定位;
    优化软件设置功能,禁止在实时终端模式下设置编码格式和系统过滤;
    优化时间过滤器控制逻辑;
    [V3.6.4]:修复版  2018/7/14  何晓龙  964195140@qq.com
    修复信息过滤器全部启用导致数组索引越界而闪退的BUG;
    修复实时模式下当前行对应的等级颜色不一致BUG;
    修复软件无法在新版win10系统上打开的BUG;
    修复win10系统中输入编辑框闪白色的BUG;
    
    
    
    展开全文
  • 一、Android 签名机制、 二、生成 Android 签名文件、 三、分析签名文件、 四、签名文件两个密码的作用、 五、三种签名方式、





    一、Android 签名机制



    APK 文件签名 是为了保证 APK 来源真实性 , 以及 APK 文件没有被修改过 ;


    APK 签名基于 Hash 散列算法进行 ;

    Hash 散列算法特性 :

    • 唯一性
    • 长度固定
    • 不可逆

    常用的 Hash 三列算法 :

    • SHA-1 算法 : 安全散列算法 1 1 1 , 长度 160 160 160 位 ;
    • MD5 算法 : 128 128 128 位 ;

    签名过程 :

    • ① 计算数据摘要 : 通过 Hash 算法 , 计算出原始数据 ;
    • ② 私钥加密 : 使用私钥对原始数据再次进行加密 ; 校验时 , 使用公钥对原始数据进行解密 ;
    • ③ 写入签名 : 将签名写入签名区块 ;

    签名时 , 输入签名文件 keystore 的密码后 , 还要输入的别名 和 别名密码 ; 一个 keystore 可以存放多个密钥 ;


    签名相当于一个指纹 , 对 APK 的任何修改 , 哪怕在任意资源文件上加上一个空格 , 都会导致签名被破坏 , 无法通过校验 ;

    签名时 , 使用私钥对 APK 加密 ; 安装 APK 包时 , 系统会使用公钥解密 ;





    二、生成 Android 签名文件



    生成签名密钥 :

    在 Android Studio 中 , 选择 " 菜单栏 / Build / Generate Signed Bundle/APK… " 选项 ,

    在这里插入图片描述

    选择 APK 选项 ,

    在这里插入图片描述

    选择创建新的签名文件 ,

    在这里插入图片描述

    在 " Key store path " 中 , 选择签名文件的生成路径 ,

    在这里插入图片描述

    在弹出的对话框中 , 点击绿色的安卓图标 , 生成在工程根目录 ,
    在这里插入图片描述

    输入密码和别名密码 , 都设置为 123456 , 点击 " OK " 即可生成该签名文件 ;

    在这里插入图片描述

    签名文件生成在工程根目录中 ;

    在这里插入图片描述





    三、分析签名文件



    使用

    keytool -list -v -keystore keystore.jks
    

    命令 , 可以查看该签名密钥的详细信息 ;

    下方的扩展中 , 有 1 1 1 个密钥 #1: ObjectId: 2.5.29.14 Criticality=false ;

    1 1 1 个 jks 文件中 , 可以有多个密钥的 , 在该扩展中 , 可以有多个密钥 ;

    上述签名 , 有负责 Java 程序签名的 , 有负责 Android APK 签名的 ;

    Y:\002_WorkSpace\001_AS\AppStart>keytool -list -v -keystore keystore.jks
    输入密钥库口令:
    密钥库类型: PKCS12
    密钥库提供方: SUN
    
    您的密钥库包含 1 个条目
    
    别名: key0
    创建日期: 2021-9-14
    条目类型: PrivateKeyEntry
    证书链长度: 1
    证书[1]:
    所有者: CN=Han Shuliang
    发布者: CN=Han Shuliang
    序列号: 3f8f6290
    有效期为 Tue Sep 14 22:31:41 GMT+08:00 2021Sat Sep 08 22:31:41 GMT+08:00 2046
    证书指纹:
             MD5:  C1:02:69:22:1F:DB:62:A2:75:B4:C3:B8:6A:55:0C:23
             SHA1: 52:00:F8:BB:3B:3E:5B:DC:CF:BD:94:5A:30:A4:DF:C4:9D:33:54:EE
             SHA256: 02:42:F3:F2:5B:9A:04:9A:28:FD:16:06:25:66:BF:28:F0:DE:14:42:69:04:60:DF:2C:AD:42:C0:51:6D:9B:57
    签名算法名称: SHA256withRSA
    主体公共密钥算法: 2048 位 RSA 密钥
    版本: 3
    
    扩展:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 26 9F 73 C0 B7 BC 03 F2   6A 15 0A E1 B7 8C 0B 78  &.s.....j......x
    0010: 1A 92 C4 8E                                        ....
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    

    在这里插入图片描述





    四、签名文件两个密码的作用



    红色矩形框内的密码是签名文件的密码 ;

    蓝色矩形框内的别名和密码 , 是给 APK 签名的密码 ;

    在这里插入图片描述





    五、三种签名方式



    Android 有 3 3 3 套签名方式 ,

    V1 签名是 Jar 文件签名 ; 该签名有一定的不安全性 ;

    V2 签名是 整个 APK 文件签名 ; 这是在 Android 7.0 7.0 7.0 之后出现的 ;

    V3 签名需要升级签名密钥 ; 在 Android 9.0 9.0 9.0 之后出现的 ;

    在这里插入图片描述

    展开全文
  • Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读...
  • 3.上图显示是Android6.0以后的样子,图片显示为8个颜色,Android4.0-5.0(API级别14-21)为4种颜色,下面会说明。 每种颜色代表不同的含义,所以需要特意说明一下: 简单解释一些不易懂的说明: 红色:意思就是...
  • ANDROID底层驱动分析和移植

    热门讨论 2016-12-07 18:33:04
     本书适合作为 Android驱动开发者、Linux开发人员、Android底层学习人员、Android爱好者、Android源码分析人员、Android应用开发人员的学习用书,也可以作为相关培训学校和大专院校相关专业的教学用书。
  • android trace 文件怎么分析

    千次阅读 2018-09-13 16:33:23
    对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR...
  • Android系统源代码情景分析的评论 这本书是我看过的最深入的一本android书了,可以看出作者是一个很有悟性的程序员,很适合需要提高的android框架层工程师进阶。binder部分是目前所有书中分析的最全面的。匿名共享...
  • 在内容上,本书结合使用情景,全面、深入、细致地分析Android系统的源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层(Application Framework)以及应用程序层(Application)。...
  • Android NDK墓碑/崩溃分析

    千次阅读 2017-07-07 13:33:11
    #04 pc 000342f4 /system/lib/libgui.so (android::BufferQueueProducer::queueBuffer(int, android::IGraphicBufferProducer::QueueBufferInput const&, android::IGraphicBufferProducer::QueueBufferOutput*)+...
  • Android布局分析的两种方式

    千次阅读 2016-09-27 19:39:54
    1、Dump UI Hierarchy for UI Atomator,分析UI层级 从Android Studio中启动Android Device Monitor: Tools -&gt; Android -&gt; Android Device Monitor. 使用方法很简单,如下图 2、HierachyViewer ...
  • android系统启动流程整体介绍
  • Android Log分析

    千次下载 热门讨论 2011-11-12 10:26:24
    android log的详细分析 希望对大家有帮助
  • Android系统源代码情景分析》光盘内容 1. 目录结构说明 =========================================== chapter-1 chapter-2 chapter-3 chapter-4 chapter-5 chapter-6 chapter-7 chapter-8 chapter-9 chapter-10 ...
  • Android实时抓包分析的app

    热门讨论 2014-09-19 21:03:02
    在Adroid上就可以实时抓包的apk的源代码,手机没有root,这个apk就没法抓包了,仅做测试用的,
  • 在使用Android Studio开发的时候,有时候会发现手机CPU使用特别高,但是又不确定哪个线程占用高。除了能够使用android profiler查看外,还可以使用命令来查看。 命令 adb shell top 使用参数: Usage: top...
  • android源代码分析电子书

    千次下载 热门讨论 2012-05-29 15:50:16
    android源代码分析,非常好用. 适合android开发人员,学习者,强烈推荐.
  • Android分析破解-秒脱360加固大法

    万次阅读 2017-05-06 00:41:19
    Android相比iOS,安全问题往往比较...Andoid开发的同学可能会遇到需要做竞品分析的情况,APK加固常常会成为分析的障碍。360渠道做为Android应用分发的最大渠道,很多apk都使用了360加固。本文就来聊聊如何过掉这个坑...
  • 关于使用Android Studio的APK分析工具Analyze Apk,可以十分方便的查看Apk的基本信息,如占用空间、版本号、SDK版本等,可以看到各个文件大小,如DEX、res、lib、assets等,及利用ApkAnalyzer分析学习第三方APK的...
  • android分析monkey的anr

    千次阅读 2012-07-26 19:02:40
    2.在文件夹logs4android--x中搜索“ANR”,或者在monkeylog中搜索“anr in”找到发生anr的时间 3.在文件夹logs4android--x中搜索“sigkill”,判断系统是否处于“低内存运行状态”。若是,则表明可能是其他原因造成...
  • Android系统源代码情景分析

    千次下载 热门讨论 2012-12-09 12:16:26
    Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 ...
  • Android 性能分析工具——Perfetto 介绍

    万次阅读 2020-12-09 18:01:25
    Android 性能分析工具——Perfetto 介绍 Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。与 Systrace 不同,它提供数据源超集,可让你...
  • android录音并频谱分析绘图

    热门讨论 2013-04-23 10:07:50
    android录音并频谱分析绘图
  • Android 性能优化:使用 TraceView 找到卡顿的元凶

    万次阅读 多人点赞 2017-01-11 20:01:21
    使用 Android Studio 生成 trace 文件 使用 DDMS 生成 trace 文件 根据 TraceView 显示内容定位问题 解决 DDMS 中的 TraceView 无法搜索find 无法使用的问题 解决办法就是直接使用 SDK 中的 TraceView TraceV
  • 本文档为8月26日“【技术公开课】Android内存泄漏案例分析”的演讲PPT。
  • Android系统源码目录分析

    千次阅读 2020-01-21 10:10:29
    基于Android8.0源码进行分析 系统根目录结构说明 art:全新的art运行环境 bionic:系统C库 bootable:启动引导相关代码 build:存放系统编译规则及generic等基础开发包配置 cts:Android兼容性测试套件标准 ...
  • android追踪工具Trace概述

    千次阅读 2020-09-09 21:12:31
    ​ systrace 是分析 Android 设备性能的主要工具。不过,它实际上是其他工具的封装容器:它是 atrace 的主机端封装容器,是用于控制用户空间跟踪和设置 ftrace 的设备端可执行文件,也是 Linux 内核中的主要跟踪机制...
  • Android恶意样本分析——frida破解三层锁机样本

    千次阅读 多人点赞 2021-08-31 13:05:59
    Android 恶意样本分析——三层锁机样本破解 一、样本介绍 最近在吾爱上看到一个三层锁机的样本,恰好最近在学习研究Frida,通过动静态分析来彻底了解一下这个锁机样本。 二、实验环境 夜神模拟器+Kali ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 445,399
精华内容 178,159
关键字:

android分析

友情链接: 05key_input.zip