自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 APK逆向过程基础

一.APK的打包过程 了解apk的逆向过程首先需要了解apk包是怎么来的,都包括哪些内容,所以我会从apk的打包过程讲起。下面可以看到Android官网给出的一张apk打包的基本流程图:(蓝色格子是本人添加的) 从中可以梳理出apk打包的基本流程有如下7步:1.打包资源文件对象:Resource文件(res目录中的文件)、 Assets文件(assets...

2019-08-05 17:56:38 11944 8

转载 RecyclerView 嵌套卡顿优化

一.解决嵌套卡顿a.调用预加载方法 setInitialPrefetchItemCount(int) 来优化嵌套时预加载性能,例如横向RecycleView上有3-5个item需要显示,可以调用LinearLayoutManager.setInitialPrefetchItemCount(4),默认的数值是2。b.设置recycleview的子项缓存 rv.setItemViewCacheSize(200);c.继续结合rv.setHasFixedSize(true);rv.setNestedSc

2020-12-14 20:32:39 4183 2

原创 android singleTask启动模式启动Activity传参失败

前言相信,大家都应该使用过singleTask启动模式去启动目标Activity,这模式是当任务栈中存在目标Activity实例时,是不会重新创建该Activity(即不走onCreate方法),而是销毁该Activity上面所有其他的Activity,以此来将目标Activity置于栈顶显示(此时走onResume方法);如果不存在,则在栈顶创建一个Activity实例(走onCreate方法)。而本次传参失败是发生在任务栈中已经存在目标Activity实例的情况下再次启动该Activity而传参的时候

2020-08-12 16:09:35 577

原创 android隐藏状态栏和底部导航栏

前言相信几乎每个项目都可能会遇到隐藏或者适配状态栏和导航栏的需求,尤其是面对如今手机款式多种多样情况下,使得一些以前起作用的方法如今用起来可能并不奏效,经过自己的寻找和尝试下,特此记录此次的解决方案。隐藏状态栏(适配刘海屏、水滴屏,API 21以上)第一步,使状态栏透明:(在Activity的onCreate方法调用)/** * 1.使状态栏透明 * @param window */private static void setTransparent(@NonNull Window wind

2020-07-30 22:12:42 3750

原创 Recyclerview使用Glide加载大量图片时出现内存溢出(OOM)

前言最近在项目中使用了一个GitHub上开源的图片选择器库,在android8.0以上的机子测试没发现异常,正常将相册里的相片加载到Recyclerview,但测试了美图一台Android7.1的手机却出现了闪退,看日志发现是OutOfMemory。首先想到的是Glide的使用是不是不太正确,于是有了以下尝试:尝试1:Glide的diskCacheStrategy属性Glide.with(mContext).load(image.getPath()) .skip

2020-07-30 19:16:13 2586

原创 Android使用Retrofit框架时JSON解析出错的解决方案

前言Retrofit 是目前主流的网络请求框架,相信用过的小伙伴都可能会遇到这样的问题,绝大部分接口测试都正常,就个别接口尤其是返回失败信息时报了个奇怪的错误信息,而看了自己的代码逻辑也没什么问题。那是什么原因呢?是后台返回的数据有误吗?还是自己在处理这些失败数据的时候没考虑仔细呢?问题原因后台返回的失败数据不是自己期望的数据格式,比如说,代码中实体bean长这样:public class BaseResponse<T> { private boolean success;

2020-05-29 17:49:42 2969

原创 查看文件的签名信息(MD5值)

前言数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。那我们怎么获得这些签名信息呢?查看签名信息通过签名文件查看证书指纹信息(SHA1):命令: keytool -list -keystore x...

2020-04-29 13:44:58 2949

原创 Android 利用proguard.jar对jar包混淆

前言记得在之前写过一篇android混淆规则笔记是关于android代码混淆的知识,也掌握了一些代码混淆的技巧。但最近自己去理解同事开发的一套SDK出包工具的时候,发现里面不仅是有代码混淆的需求,还有对jar包进行混淆的需要,前者是对Apk进行混淆,后者是对jar包进行混淆,两者还是有区别的(区别就自行学习吧),通过查找相关目录文件和学习发现了其中的一些奥妙。使用proguard.jar对j...

2020-04-05 21:58:45 1189

原创 关于HTTPS请求原理与Fiddler抓包理解

前言提醒:阅读本文之前需要了解AES对称加密和RSA非对称加密的一些基本知识概念!一、因为好奇!好奇Https哪里比Http安全,好奇Https的请求原理!二、因为需求!因为抓包是日常工作所需的技能,所以便去学习了Fiddler!三、为什么要合起来记录,可能我觉得这样可以更好理解Fiddler!HTTPS请求原理以上图例便是网上学习HTTPS原理后综合自己的愚见所画的一张图,虽然简陋...

2020-04-01 20:43:56 723

原创 Retrofit2的POST请求MultiPart与FormUrlEncoded

前言最近在项目里使用了Retrofit2 + Rxjava框架封装网络请求,照着网上的教程一步步搭建起来,顺利地完成了网络请求模块的工作,同时通过okhttp3提供的logging拦截器打印出的请求与服务器回复日志,也是正常的参数与数据,但不知为何日志显示得很长很详细,如下图(还没截完),通过抓包工具看到的参数key也是很长很详细的key,这就令人疑惑了,究竟是为什么呢?解决疑问通过向同事...

2020-03-31 19:24:24 12519 4

原创 Android反编译替换资源的一些理解

前言Android手游聚合SDK对外提供的时候,往往是提供一个躯壳(jar包)给到游戏研发(简称“cp”),只是供他们去对接接口使用,但接口里的具体实现是待到正式出游戏推广包的时候才会加进去,也就是说,cp对接好的游戏包只是聚合SDK对接的第一步,这只是空实现的apk(简称“母包”),正式出包是出所需的渠道包(如某手机应用商店,某宝等),这就需要将母包进行下一步的处理(即替换jar包)。第一步...

2020-03-30 14:38:30 428

原创 Android字符串判空方案差异记录

背景最近在回顾自己以往写下的一些代码并修改相关需求,安装后进行相关调试,出现了一个惊人的崩溃闪退现象,一看日志,原来是空指针异常导致的,还是字符串判空的时候出现的空指针,这就纳闷了,赶紧找了一翻资料,把这个问题解决并记录下来。字符串判空方案这里先要记录一点,只声明了字符串变量,不给它赋值的话,系统会默认给它赋值null,如: private String name; @Test ...

2020-03-26 17:30:21 244

原创 android混淆规则笔记

写在前面混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的 Android 插件,我们将移除未被使用的资源,可以有效减小 apk 安装包大小。https://www.j...

2020-01-21 15:20:50 416

原创 设计模式学习之责任链模式

定义责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的 处理者 通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。使用场景多个对象处理同一请求时,但是具体由哪个对象去处理需要运行时做判断。具体处理者不明确的情况下,向多个处理者提交了一个请求。可动态指定...

2019-12-26 14:26:03 118

原创 设计模式学习之命令模式

定义命令(Command)模式的定义:将一个命令封装为一个对象,使发出命令的责任和执行命令的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。在现实生活中,用到命令模式的例子也很多,例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。使用场景当需要将请求调用者与请求接收者解耦时,命令模式使得调用者和接收者不直接交互...

2019-12-23 21:23:41 123

原创 设计模式学习之模板方法模式

定义模板方法模式,顾名思义,就是通过模板拓印的方式。具体是指定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。使用场景算法的整体步骤很固定,但其中个别部分易变时,这时可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。当多个子类存在公共的行为,而且逻辑相同时,可以将其提取出来并集中到一个公...

2019-12-14 19:10:38 95

原创 android shape的基础知识

前言最近在重构公司的项目,发现里面有大量的png图片,而且一些简单的图标也用png,无形中使得项目的体积增大了,于是决心使用Android中的Shape去替代那些简单图标的png,于是有了这一篇学习笔记。定义一般使用shape首先会在drawable目录下新建一个xml资源文件,Android studio常常默认是selector标签(下节再学习),所以要改为需要的shape标签。使用sh...

2019-12-02 11:58:20 290

原创 设计模式学习之策略模式

设计模式学习之策略模式定义使用场景Android中的使用例子实现所需角色UML图(以支付方式为例)具体实现1.环境类2.抽象策略类3.实现抽象的具体策略类优点缺点================The End================参考链接定义策略模式官方解释是定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。翻译过来就是在策略模式中,会针对一...

2019-12-01 18:04:28 151

原创 android中访问照相机和相册后的Uri转换

android中File、Path、Uri之间的转换前言最近在做有关调用系统照相机拍照和从图库获取照片的功能,其中涉及到一些file、path和uri三者的转换不太熟悉,通过网上学习并实践后,记录其中一些有效的方法。有时候我们还需要根据照片的路径得到照片的media Uri,那么又该如何转换呢?首先是拍照时获取Uri一般拍照后需要保存图片,这时我们就需要指定一个存储图片路径的path,这就...

2019-11-21 20:06:23 1380

原创 Windows命令行清屏命令

我们很多时候都会使用Windows的命令行工具,按"win"+R弹出运行框,输入cmd便可进入命令行界面,如果运行指定命令后输出的内容很多很多,在输入下一条命令前想清空当前所有的界面内容,那么可以运行"cls"命令实现清屏,如图。当然,你也可以关掉或重新打开一个命令窗口。...

2019-11-11 19:10:19 19281

原创 适配Android 6.0以上安装外存下指定的apk文件

适配Android 6.0以上安装外存下指定的apk文件最近测试了一款前人留下来的App,发现安装指定路径下的apk功能崩溃了,查看了下日志,显示了android.os.FileUriExposedException: file:///storage/emulated/0/xxx/xxx.apk exposed beyond app through Intent.getData() 这样的错误信...

2019-10-28 15:39:33 610

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除