
Android
文章平均质量分 74
d袋鼠b
Android开发工程师
展开
-
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 · 2297 阅读 · 0 评论 -
捋一捋,到底怎么样去理解Window机制?
说到 Window 机制,通常想到的就是PhoneWindow、ViewRootImpl、WindowManagerImpl、子窗口、DecorView 等等,网上也有不少博客通过源码分析他们之间的调用关系,可是能说得比较清楚的却不多,或深入源码不可自拔,或越说越复杂概念一大堆。今天,我们就来好好捋一捋,到底怎么样去理解Window机制呢?先撇开复杂源码与难懂的概念,我们现在谈的Window都是单纯地指Window这个类,请读者暂时抛开"窗口"、“子窗口”、 “子Window” 这些扰乱思路的概念,文章原创 2021-04-19 17:11:56 · 349 阅读 · 0 评论 -
从LeakCanary探究线上内存泄漏检测方案
文章目录生成Dump文件解析Dump文件查找引用链Listener组件泄漏引用链的显示总结拓展19年年末总结一篇《LeakCanary原理从0到1》,当时还比较满意,以为自己就比较了解这个框架了,Too young, Too Simple。周五群里一个小伙伴问:“线上做内存泄漏检测大家有什么思路吗?”。内存泄漏检测首先想到的是 LeakCanary,可以看看能从LeakCanary上找到一些思路吗?本文并不是从0开始解释 LeakCanary 的工作原理,所以为了阅读体验更佳,还不太了解 LeakC原创 2021-04-11 13:07:33 · 537 阅读 · 0 评论 -
【Android】自定义无限循环的LayoutManager
文章目录概述初探LayoutManagermeasurelayoutrecycleLayoutManager创建回收使用结语参考概述在日常开发的过程中,同学们都遇到过需要RecyclerView无限循环的需求,但是在官方提供的几种LayoutManager中并未支持无限循环。遇到此种问题,通常的解决方案是:1、在adapter返回Integer.MAX_VALUE并让RecyclerView滑动到某个足够大的位置。2、选择自定义LayoutManager,实现循环的RecyclerView。自定原创 2020-12-24 11:23:03 · 956 阅读 · 1 评论 -
Android调试原理
概述在Android开发过程中,调试是不可避免的,在IDE的帮助下,只需要在IDE按钮上点击两下便可以进行调试。这让调试的工作变得十分简单方便,以至于开发者只需要熟记各种IDE的debug技巧,无需了解调试原理就可以完成程序的debug。在调试的时候,开发者可以打断点调试、需改运行参数、dump虚拟机的堆栈信息、远程调试等,那这些都是怎么做到的呢?本文将带你一起探讨 Android 的调试原理。要学习 Adb 的调试原理,需要从稍微简单一点的 Java 调试原理入手,因此首先介绍一下 Java 调试原原创 2020-10-26 09:47:35 · 735 阅读 · 2 评论 -
APK构建原理由浅入深
概述APK构建流程涉及许多将项目转换成 Android 应用软件包 (APK) 的工具和流程。构建流程非常灵活,因此了解它的一些底层工作原理会很有帮助。APK的详细构建流程稍微有点复杂,本文将分为四步由浅入深带读者深入分析构建流程。第一步:初见构建第二步:再探构建第三步:深入构建第四步:放弃构建初见构建首先『初见构建』,这步中我们可以先忽略构建中的细节,先对主流程有个大致了解。如上图所示(方形:表示文件,菱形:表示操作):1、 整个构建分为两个主要操作:编译(Compile)、打原创 2020-10-11 22:03:52 · 657 阅读 · 0 评论 -
一文读懂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 · 8335 阅读 · 0 评论 -
抓包线上apk
文章目录背景相关工具反编译在使用 apktool 中遇到的问题参考背景Android 7.0以上手机不再信任用户证书,如果需要抓包则需要将手机root,将抓包工具的证书放入系统根证书目录下,此操作比较复杂。另外一种则是反编译apk、配置清单文件networkSecurityConfig、重新打包apk;下面以Soul app为例:相关工具ApkToolCharles平台:Mac...原创 2020-03-24 11:00:08 · 1606 阅读 · 0 评论 -
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 · 2378 阅读 · 3 评论 -
LeakCanary原理从0到1
文章目录引用分类强引用软引用弱引用虚引用LeakCanary理论依据源码解析为了使文章尽量通俗易懂。在探究LeakCanary之前,有必要补充些Java引用的知识。引用分类强引用强引用是使用最普遍的引用。如果一个对象具有强引用,在GC发生时,垃圾回收器将不会回收它。当Jvm虚拟机内存空间不足时,虚拟机会抛出OutOfMemoryError错误,使程序异常终止,不会回收具有强引用的对象来解...原创 2019-11-03 18:39:42 · 804 阅读 · 4 评论 -
Charles进阶使用日志
文章目录监听HTTPS保留请求现场编辑并发起新请求修改请求参数映射请求结果监听HTTPS1) 首先下载Charles证书2)添加HTTPS端口443的监听3) 手机安装Charles信任证书android手机1.设置无线代理为Charles2.使用手机浏览器,输入地址chls.pro/ssl,下载名为charles-pro***.pem的证书3.手机打开设置>...原创 2019-10-18 17:56:15 · 2696 阅读 · 0 评论 -
Android Drawable中layer-list中的图片异常缩放问题
文章目录需求分析与设计问题解决总结`Attr`、`Style`、`Theme`的总结:`layer-list`及其内部`item`的总结:`item`旋转技巧需求最近需要做这样一个默认地址的按钮,实现的方式有很多种。但是强迫症的我肯定会买弄一下,其实是想尽自己所学用尽可能好的方式来实现,所以选择使用不含图片的手撸layer-list和CheckBox来实现。然而,却出现了这样一种情况:在A...原创 2019-01-13 20:25:31 · 7569 阅读 · 0 评论 -
Android TextView实现镂空效果
文章目录效果图思路分析代码效果图接到一个需求,需要实现文字镂空(按钮字体颜色与按钮父布局的背景色一直),最终效果如下:思路通过设置图层合成是的图像过滤模式PorterDuff.Mode,来达到镂空效果,对于PorterDuff.Mode的理解可以从参考:各个击破搞明白PorterDuff.Mode。“以SCREEN的计算方式为例:[Sa + Da - Sa * Da, Sc + Dc...原创 2019-05-27 20:50:41 · 1241 阅读 · 0 评论 -
Android主题更换换肤
文章目录预备知识认识setFactory获取包外`Resource`参考文章预备知识android主题换肤,通常借助LayoutInflater#setFactory换肤认识setFactory获取包外Resource我们通常通过Context#getSource()获取res目录下的资源,Context#getAssets()获取asset目录下的资源。参考文章遇见LayoutI...原创 2019-06-12 00:04:50 · 4178 阅读 · 1 评论 -
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 · 3229 阅读 · 0 评论 -
在Android项目中自定义Gradle插件
## 编写groovy插件在使用`build.gradle`编译项目时,需要使用```gradleapply plugin: "xxxxx"```告诉`build.gradle`接下来要编译的是什么项目类型,不同的项目类型规定有不同的文件目录,所以在创建项目时,一旦项目类型确定,该项目的文件目录结构也是确定的。当指定的文件类型为**gradle插件**时,其文件目录树为:原创 2019-08-02 10:48:23 · 390 阅读 · 0 评论 -
Android中使用Zxing集成、分析与优化
文章目录参考参考Android zxingzxing/zxingzxing私人定制之一原创 2018-10-19 17:57:13 · 6098 阅读 · 0 评论 -
在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 · 569 阅读 · 0 评论 -
如何在原生Android项目里嵌入Cordova
背景:这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova。在接到项目后比较了一下项目架构和Cordova的结构,发现其中的差别还是不少,主要差别就在项目是通过原生的Activity去启动CordovaActivity的。经验告诉我:这个Cordova被嵌入了原生当中,这货是个混合App。原创 2018-01-12 10:52:57 · 2599 阅读 · 2 评论 -
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 · 8858 阅读 · 0 评论 -
Android开发使用mipmap文件夹的正确姿势: px 、dpi 、dp
背景对于mipmap的使用以前并没有太多的深入追究。开发中,图片的适配几乎没有,一张图片适配所有设备,能用就行,自学时的单独开发是如此,工作后的项目之中也是这样。直到阅读《阿里Android开发规范》后,在mipmap的规范上有所疑惑,于是在好奇心的驱使下进行了相关学习,相去已有半载,前两天又碰到相关问题,故而记录温故一下。像素(px)与像素密度(dpi)px即是像素点,dpi表示每一...原创 2018-07-23 14:46:21 · 10394 阅读 · 0 评论 -
Java注解理解
文章目录分类`RetentionPolicy.SOURCE`案例演示需求:说明:实现:编写注解编写注解处理器运行与调试`RetentionPolicy.CLASS``RetentionPolicy.RUNTIME`案例演示注解申明注解使用反射处理注解鸣谢分类根据注解的作用时间@Retention可将注解分为三类:RetentionPolicy.SOURCERetentionPolicy...原创 2018-09-28 00:20:41 · 857 阅读 · 0 评论 -
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 · 3125 阅读 · 1 评论 -
Android图片的加载与压缩
目录图片加载图片压缩Bitmap(位图)的压缩色位深度图片文件与Bitmap图片文件压缩对compress的使用反思图片加载在了解图片压缩前,先简单介绍常用的几种图片加载 方式,在BitmapFactory类中提供了decodeFile、decodeResource、decodeStream、decodeByteArray、decodeFileDescriptor几种静态方法,通过使用这些静态...原创 2018-09-25 20:56:58 · 913 阅读 · 0 评论 -
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 · 2188 阅读 · 0 评论 -
自定义View之自定属性
在自定义的View中,很多时候我们需要对View添加自定义属性步骤如下:编写xml文件,定义属性名称与属性数据类型<resources> <declare-styleable name="MyView"> <attr原创 2018-09-16 21:02:29 · 271 阅读 · 0 评论 -
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 · 6128 阅读 · 0 评论 -
Android中活动(Activity)与活动任务记录栈(TaskRecord)的区分
申明:文章并不介绍Activity的四种启动模式,而是帮助读者理解Activity与活动任务栈之间的关系开发过程中,为满足各种业务需求,开发者需要灵活运用Activity的四种启动模式,这里就不介绍启动模式的具体用法了,通常我们通过指定`launchMode`就能解决大部分的问题,而对活动任务记录栈的理解只是停留在抽象的概念当中。为了更好地理解活动任务栈,本文将通过实际的数据演示,来帮助理解T...原创 2018-07-27 10:31:41 · 3363 阅读 · 0 评论