自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

袋鼠

有梦想谁都了不起

  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

原创 android 实现 7zip压缩与解压,还不收藏一下?

android 实现 7zip压缩与解压添加依赖解压压缩追加方式压缩添加依赖implementation 'org.apache.commons:commons-compress:1.18'implementation 'org.tukaani:xz:1.8'解压 /** * @param inCompressFile 需要解压的7zip文件 * @param outputDir 解压后的文件的存储目录 * @throws IOException

2021-08-12 14:53:19 1710

原创 捋一捋,到底怎么样去理解Window机制?

说到 Window 机制,通常想到的就是PhoneWindow、ViewRootImpl、WindowManagerImpl、子窗口、DecorView 等等,网上也有不少博客通过源码分析他们之间的调用关系,可是能说得比较清楚的却不多,或深入源码不可自拔,或越说越复杂概念一大堆。今天,我们就来好好捋一捋,到底怎么样去理解Window机制呢?先撇开复杂源码与难懂的概念,我们现在谈的Window都是单纯地指Window这个类,请读者暂时抛开"窗口"、“子窗口”、 “子Window” 这些扰乱思路的概念,文章

2021-04-19 17:11:56 275

原创 从LeakCanary探究线上内存泄漏检测方案

文章目录生成Dump文件解析Dump文件查找引用链Listener组件泄漏引用链的显示总结拓展19年年末总结一篇《LeakCanary原理从0到1》,当时还比较满意,以为自己就比较了解这个框架了,Too young, Too Simple。周五群里一个小伙伴问:“线上做内存泄漏检测大家有什么思路吗?”。内存泄漏检测首先想到的是 LeakCanary,可以看看能从LeakCanary上找到一些思路吗?本文并不是从0开始解释 LeakCanary 的工作原理,所以为了阅读体验更佳,还不太了解 LeakC

2021-04-11 13:07:33 352

原创 HTTPS流程详解

概述超文本传输安全协议(HyperText Transfer Protocol Secure,缩写:HTTPS)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。其主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。了解HTTPS,有助于我们定位和解决日常遇到的网路问题,对HTTPS流程的了解程度,也在一定程度上反映了一个开发人员的网络知识基本功。加密与签名Hash「Hash算法」也被称为散列算法。「Hash算法」没有一个固

2021-02-28 19:31:44 4372

原创 【Android】自定义无限循环的LayoutManager

文章目录概述初探LayoutManagermeasurelayoutrecycleLayoutManager创建回收使用结语参考概述在日常开发的过程中,同学们都遇到过需要RecyclerView无限循环的需求,但是在官方提供的几种LayoutManager中并未支持无限循环。遇到此种问题,通常的解决方案是:1、在adapter返回Integer.MAX_VALUE并让RecyclerView滑动到某个足够大的位置。2、选择自定义LayoutManager,实现循环的RecyclerView。自定

2020-12-24 11:23:03 734 1

原创 Android调试原理

概述在Android开发过程中,调试是不可避免的,在IDE的帮助下,只需要在IDE按钮上点击两下便可以进行调试。这让调试的工作变得十分简单方便,以至于开发者只需要熟记各种IDE的debug技巧,无需了解调试原理就可以完成程序的debug。在调试的时候,开发者可以打断点调试、需改运行参数、dump虚拟机的堆栈信息、远程调试等,那这些都是怎么做到的呢?本文将带你一起探讨 Android 的调试原理。要学习 Adb 的调试原理,需要从稍微简单一点的 Java 调试原理入手,因此首先介绍一下 Java 调试原

2020-10-26 09:47:35 640 2

原创 APK构建原理由浅入深

概述APK构建流程涉及许多将项目转换成 Android 应用软件包 (APK) 的工具和流程。构建流程非常灵活,因此了解它的一些底层工作原理会很有帮助。APK的详细构建流程稍微有点复杂,本文将分为四步由浅入深带读者深入分析构建流程。第一步:初见构建第二步:再探构建第三步:深入构建第四步:放弃构建初见构建首先『初见构建』,这步中我们可以先忽略构建中的细节,先对主流程有个大致了解。如上图所示(方形:表示文件,菱形:表示操作):1、 整个构建分为两个主要操作:编译(Compile)、打

2020-10-11 22:03:52 459

原创 一文读懂resource.arsc文件结构

resource.arsc文件结构概述arsc文件作用chunkarsc文件结构Chunk头结构ResTable_headerStringPoolPackage`ResTable_typeSpec` 和 `ResTable_type`结尾推荐阅读概述    resource.arsc文件是Apk打包过程中的产生的一个资源索引文件。在对apk进行解压或者使用Android Studio对apk进行分析时便可以看到resource.arsc文件。 &nbs

2020-10-05 16:32:28 7305

原创 抓包线上apk

文章目录背景相关工具反编译在使用 apktool 中遇到的问题参考背景Android 7.0以上手机不再信任用户证书,如果需要抓包则需要将手机root,将抓包工具的证书放入系统根证书目录下,此操作比较复杂。另外一种则是反编译apk、配置清单文件networkSecurityConfig、重新打包apk;下面以Soul app为例:相关工具ApkToolCharles平台:Mac...

2020-03-24 11:00:08 1539

原创 Android Studio 安装TinyPng插件

文章目录下载插件临时邮箱API Key 申请入口API Key使用使用下载插件TinyPNG Image Optimizer临时邮箱https://temp-mail.org/zh/API Key 申请入口https://tinypng.com/developersAPI Key使用Perference ->TinyPNG Image Optimize使用1、选择批量图片...

2019-11-20 10:07:33 2028 3

原创 LeakCanary原理从0到1

文章目录引用分类强引用软引用弱引用虚引用LeakCanary理论依据源码解析为了使文章尽量通俗易懂。在探究LeakCanary之前,有必要补充些Java引用的知识。引用分类强引用强引用是使用最普遍的引用。如果一个对象具有强引用,在GC发生时,垃圾回收器将不会回收它。当Jvm虚拟机内存空间不足时,虚拟机会抛出OutOfMemoryError错误,使程序异常终止,不会回收具有强引用的对象来解...

2019-11-03 18:39:42 578 4

原创 Charles进阶使用日志

文章目录监听HTTPS保留请求现场编辑并发起新请求修改请求参数映射请求结果监听HTTPS1) 首先下载Charles证书2)添加HTTPS端口443的监听3) 手机安装Charles信任证书android手机1.设置无线代理为Charles2.使用手机浏览器,输入地址chls.pro/ssl,下载名为charles-pro***.pem的证书3.手机打开设置&gt...

2019-10-18 17:56:15 2358

原创 解决Okhttp的Response#body()#string()后Response返回体为空问题

文章目录背景及问题string()解决方法背景及问题在使用Okhttp时,经常会用到自定义的拦截器,对请求体Request或返回体Response做额外的处理。在拦截器中,通常使用如下方式获取Request和Response;Request request = chain.request();//获取请求Response response = chain.proceed(request)...

2019-09-10 08:48:09 8974

原创 在Android项目中自定义Gradle插件

## 编写groovy插件在使用`build.gradle`编译项目时,需要使用```gradleapply plugin: "xxxxx"```告诉`build.gradle`接下来要编译的是什么项目类型,不同的项目类型规定有不同的文件目录,所以在创建项目时,一旦项目类型确定,该项目的文件目录结构也是确定的。当指定的文件类型为**gradle插件**时,其文件目录树为:

2019-08-02 10:48:23 289

原创 RecyclerView的canScrollVertically

前几日在某机型上线上出现了一个与RecyclerView上划下滑相关的BUG。源码解读看了会儿RecyclerView的canScrollVertically(int direction)函数: /** * Check if this view can be scrolled vertically in a certain direction. * * ...

2019-07-10 17:35:24 3035

原创 Android主题更换换肤

文章目录预备知识认识setFactory获取包外`Resource`参考文章预备知识android主题换肤,通常借助LayoutInflater#setFactory换肤认识setFactory获取包外Resource我们通常通过Context#getSource()获取res目录下的资源,Context#getAssets()获取asset目录下的资源。参考文章遇见LayoutI...

2019-06-12 00:04:50 4075 1

原创 Mac电脑启动Andorid Studio时Fatal error initializing plugin Code Iris

文章目录问题分析及解决问题刚才在为Android Studion 3.3安装插件Code Iris后,Android Studio无法正常启动。分析及解决打开日志,得法如下关键字:Fatal error initializing plugin Code Iris应该是Code Iris插件初始化出现问题,所以需要将Android Studi默认开启插件配置文件进行修改,并删除错误...

2019-06-03 18:38:58 1675

原创 Android TextView实现镂空效果

文章目录效果图思路分析代码效果图接到一个需求,需要实现文字镂空(按钮字体颜色与按钮父布局的背景色一直),最终效果如下:思路通过设置图层合成是的图像过滤模式PorterDuff.Mode,来达到镂空效果,对于PorterDuff.Mode的理解可以从参考:各个击破搞明白PorterDuff.Mode。“以SCREEN的计算方式为例:[Sa + Da - Sa * Da, Sc + Dc...

2019-05-27 20:50:41 1075

原创 Android Drawable中layer-list中的图片异常缩放问题

文章目录需求分析与设计问题解决总结`Attr`、`Style`、`Theme`的总结:`layer-list`及其内部`item`的总结:`item`旋转技巧需求最近需要做这样一个默认地址的按钮,实现的方式有很多种。但是强迫症的我肯定会买弄一下,其实是想尽自己所学用尽可能好的方式来实现,所以选择使用不含图片的手撸layer-list和CheckBox来实现。然而,却出现了这样一种情况:在A...

2019-01-13 20:25:31 7182

原创 Android中使用Zxing集成、分析与优化

文章目录参考参考Android zxingzxing/zxingzxing私人定制之一

2018-10-19 17:57:13 5626

原创 Java注解理解

文章目录分类`RetentionPolicy.SOURCE`案例演示需求:说明:实现:编写注解编写注解处理器运行与调试`RetentionPolicy.CLASS``RetentionPolicy.RUNTIME`案例演示注解申明注解使用反射处理注解鸣谢分类根据注解的作用时间@Retention可将注解分为三类:RetentionPolicy.SOURCERetentionPolicy...

2018-09-28 00:20:41 693

原创 Gradle: SSL peer shut down incorrect与 read timeout处理

目录问题症状一症状二症状三问题分析解决方案方案一方案二方案三问题在建立新项目或者添加新的第三方依赖时:症状一Android Studio下执行sync或build等Gradle任务出现如下症状:项目build一直卡在:Gradle: Resolve dependencies ‘:app:_debugCompile’下载第三方依赖时,日志输出: Gradle sync failed:...

2018-09-26 22:43:52 2892 1

原创 Android图片的加载与压缩

目录图片加载图片压缩Bitmap(位图)的压缩色位深度图片文件与Bitmap图片文件压缩对compress的使用反思图片加载在了解图片压缩前,先简单介绍常用的几种图片加载 方式,在BitmapFactory类中提供了decodeFile、decodeResource、decodeStream、decodeByteArray、decodeFileDescriptor几种静态方法,通过使用这些静态...

2018-09-25 20:56:58 845

原创 Java中的TCP、UDP通讯

文章目录TCP创建客户端创建服务器UDP创建客户端创建服务器小结TCP创建客户端客户端套接字//连接本地22333端口Socket client = new Socket("127.0.0.1", 22333);向套接字中写入数据//使用PrintWriter向套接字的OutputStream中写入数据PrintWriter printWriter = new Print...

2018-09-22 17:52:30 190

原创 Keytool在Android Studio中的应用

目录Keytool在Android Studio中的应用创建密钥库通过Android Studio界面创建密钥库通过keytool指令创建密钥库Store Password 与 Key PasswordStore PasswordKey PasswordDebug签名配置配置Debug签名步骤Keytool在Android Studio中的应用创建密钥库一个密钥库(keyStore)可含多条...

2018-09-18 15:45:49 1871

原创 在IntelliJ中添加MarkDown编辑插件

在IntelliJ中默认是没有MarkDown文件支持的,如果想要在IntelliJ中进行MarkDown文件的编辑,需要安装对应的插件,这里使用MarkDown Navigator。本地安装 1) 版本选择,下载Zip包; 2) 安装: File → Plugins → Install plugin from desktop →选择Zip包→Apply; 3) ...

2018-09-17 10:30:40 31147

原创 自定义View之自定属性

在自定义的View中,很多时候我们需要对View添加自定义属性步骤如下:编写xml文件,定义属性名称与属性数据类型<resources> <declare-styleable name="MyView"> <attr

2018-09-16 21:02:29 230

原创 Writer与OutputStream的区别

为了弄懂`Writer`与`OutputStream`的区别,首先要理解字节和字符(或者字节流和字符流)的区别;关于字节和字符的知识,我想Java 中字节流与字符流的区别?这篇文章已经将得非常详细了。本文则从应用上做简单的补充:首先以writer()方式向一个文件中写入一个字符串,由于writer()是为字符流设定的,所以在写入的时候我们可以指定字符串写入的编码格式,这里采用“UTF-16...

2018-08-20 16:17:49 7452

原创 Android Studio使用gradle进行编译打包产生 java.lang.OutOfMemoryError: GC overhead limit exceeded

如果只关心解决方案,在gradle.properites文件中添加如下配置即可(4096m = 4g,具体依个人情况设置大小):org.gradle.jvmargs=-Xmx4096m 或者使用内存运允许的情况下 建议使用如下配置org.gradle.jvmargs=-Xmx4096m -Xms4096m分析过程什么导致了 GC overhead limit excee...

2018-08-12 14:17:28 7347 2

原创 Android中通过其他APP启动Activity的四种方式

第一种:通过applicationId与package+activityPathapplicationId告诉系统活动在那个App内,进入App内就需要类路径找具体的Activity。//applicationId:com.example.student0.caller CallerActivity.javaprivate final static int REQ_CODE = 0X...

2018-08-01 10:38:28 5979

原创 在Android Studio 2.3 中开发运行 Cordova 8.0.0项目

问题描述:最近在维护一个公司的项目,使用了Cordova,但是以前在学校并没有学习过。项目使用的是在原生的Android中嵌入Cordova WebView。为了学习Cordova,我按照教程建立了一个Cordova项目,我想通过比较新建的Demo和项目的差异来学习理解项目。但是在我使用Android Studio 2.3打开这个新建的Demo时却弹出需要更新至Android Studio...

2018-08-01 09:12:21 511

原创 Android中活动(Activity)与活动任务记录栈(TaskRecord)的区分

申明:文章并不介绍Activity的四种启动模式,而是帮助读者理解Activity与活动任务栈之间的关系开发过程中,为满足各种业务需求,开发者需要灵活运用Activity的四种启动模式,这里就不介绍启动模式的具体用法了,通常我们通过指定`launchMode`就能解决大部分的问题,而对活动任务记录栈的理解只是停留在抽象的概念当中。为了更好地理解活动任务栈,本文将通过实际的数据演示,来帮助理解T...

2018-07-27 10:31:41 3257

原创 Android开发使用mipmap文件夹的正确姿势: px 、dpi 、dp

背景对于mipmap的使用以前并没有太多的深入追究。开发中,图片的适配几乎没有,一张图片适配所有设备,能用就行,自学时的单独开发是如此,工作后的项目之中也是这样。直到阅读《阿里Android开发规范》后,在mipmap的规范上有所疑惑,于是在好奇心的驱使下进行了相关学习,相去已有半载,前两天又碰到相关问题,故而记录温故一下。像素(px)与像素密度(dpi)px即是像素点,dpi表示每一...

2018-07-23 14:46:21 10221

原创 Cordova插件开发一篇就够了

工具与环境介绍开发工具:Android Studio 2.3、VS CodeCordova Version: 8.0.0 开发步骤1、建立cordova项目cordova create MyProject2、添加Android平台cd MyProjectcordova platform add android3、降低gradle版本1) 使用vs code...

2018-07-17 15:28:59 8742

原创 如何在原生Android项目里嵌入Cordova

背景:这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova。在接到项目后比较了一下项目架构和Cordova的结构,发现其中的差别还是不少,主要差别就在项目是通过原生的Activity去启动CordovaActivity的。经验告诉我:这个Cordova被嵌入了原生当中,这货是个混合App。

2018-01-12 10:52:57 2530 2

原创 linux下vi不能直接使用上下左右键及删除键,用vim解决

linux下vi不能直接使用上下左右键及删除键,用vim解决

2016-11-03 16:05:07 7999

原创 U盘装机(linux,debian)过程的选择问题解答

1、首先是选语言:自己选,一般选English(担心中文可能会编码错误导致显示不出信息,所以我选了英文),如果你一定要中文那推荐你看这个,他这个是虚拟机上装的(来源:cnblogs.com  作者:vrgm):http://www.linuxidc.com/Linux/2015-10/123715.htm2、选完后会提示:"what type of keyboard do you

2016-11-03 15:01:10 1191

原创 第二步:BIOS设置电脑为U盘启动

1、先将刻录好的U盘插在电脑上。2、进入BIOS不同的电脑或者主机进入BIOS步骤部一样,我的是按完电源按钮后频繁按“F10”,直到出现BIOS,其他大多数是按完电源按钮后频繁按“ESC”键(频繁按只是为了提高进入BIOS的可能性,进不去的百度“进入BIOS”)。3、将U盘设为启动盘这里推荐:http://jingyan.baidu.com/article/295430f10f4a

2016-11-03 14:32:01 770

原创 第一步:将U盘设为启动盘(我装的是Debian8.2,其他的基本没大区别)

装linux系统(debian8.2),将U盘设为启动盘

2016-11-03 13:55:30 2213

原创 putty下的密钥登录

PuTTY不输入密码快捷密钥登录

2016-10-31 20:15:09 6982

minjson.jar

MinJson用于分析Json数据解析类的相似度,帮助开发者减少Json数据解析类的重复创建。

2019-07-16

AnimBezierShape

贝塞尔曲线演示程序

2017-08-26

androidSDK-build-tools-23.0.1

在React Native环境配置的过程中,build-tools在SDK Manager中下载出错;将安装包解压到相关目录即可

2017-07-20

空空如也

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

TA关注的人

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