Yuriy Blog

努力的人,运气不会差。

2020年度复盘

无复盘,不成长

2020年度复盘 前言 无复盘,不成长。本文聊一下2020年这一年Android的发展,以及自己这一年做了什么,技术的成长,浅谈一下移动端的未来的趋势。 移动端技术 kotlin 1.4.0 版本发布 新的编译器 新的前端加速 统一后端和可扩展性 支持SAM转换 混用命名参数和位置参数 尾后逗号 属性代理优化 等等 kotlin:http://www.k...

Mac 上反编译 apk

目前最方便的反编译方案

mac 上反编译 apk brew install apktool brew install dex2jar brew cask install jd-gui 使用命令行指定到你要反编译apk的目录(本人是放在桌面上): 命令行使用d2j-dex2jar直接转换: d2j-dex2jar aaab.apk 使用JD-GUI打开得到的dex2jar.jar文件就可以了. ...

Android 代理实现全埋点

使用代理的方案对app进行全埋点

Android 代理实现全埋点 背景 也叫做无埋点,预先收集用户的所有行为数据,然后根据实际需求,从中提取行为数据。 采集数据的点: $AppStart 冷启动➕热启动 $AppEnd 正常退出➕进入后台➕崩溃➕强杀等 $AppViewScreen 切换Activity $AppClick (重点➕难点)控件的点击事件 本质原理 自动拦截 =>Android对View的点击处...

Flutter - 绘制疫情信息地图

用跨平台方案 Flutter 实现疫情地图

Flutter - 绘制疫情信息地图 背景 开发中有时候需要绘制地图,但是Android无法像Html那样使用SVG图片并且实现可点击,可重绘色彩等功能。因此我们需要自己手动去实现这些效果和功能,由于这段时间时间相对充裕,因此下手去研究了一番。 地图组件均已提供了Kotlin和Dart的实现。 示例图中,我们实现了省份可点击效果,上色,描边等。 具体实现 1、解析SVG图片,这里我...

Android App 如何快速实现灰白化效果?

Android 实现灰白化皮肤焕肤

Android 如何快速实现灰白化换皮肤效果? 原因 清明期间不少客户端都上了灰白皮肤的效果,那我们客户端究竟如何实现黑白皮肤效果呢?本篇文章分享一种方式,让大家在客户端快速的进行黑白化换肤。 效果 彩色效果 灰白化后效果 需要基础知识 有些知识不在文章当中阐述,不知道的同学可以自行Google,百度后再看。 如下:kotlin,Activity 的生命周期,viewBinding。 ...

如何优雅进行的Android的屏幕适配?

5行代码进行Android屏幕适配

如何优雅进行的Android的屏幕适配? 原因 无论你要出去面试,还是身为一个移动开发工程师。屏幕适配是客户端最经常碰到的问题,因此掌握客户端的屏幕适配是一个基本能力,优雅的屏幕适配,可以保证你还原设计稿的同时,还可以节约你的开发成本,该方案最终 5 行代码就可以实现屏幕适配。 前置工作 来自备不同分辨率的机型2种: 机型A:720*1280 320dpi 5.5英寸(pixel 2...

如何用react框架Taro开发外卖系统?

Taro 是一套遵循 React 语法规范的 多端开发解决方案。

如何react多端统一框架Taro开发外卖系统? Taro框架基础知识 简介 Taro 是一套遵循 React 语法规范的多端开发解决方案。 现今市面上端的形态多种多样,Web、React-Native、微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。 使用 T...

深入理解Android编译原理—自定义Gradle的插件

Gradle插件打包用于可重用的构建逻辑片段,可用于许多不同的项目和构建

深入理解Android编译原理—自定义Gradle的插件 Andodid的编译过程 首先需要了解一下Android的打包过程,他是如何从一个代码(kotlin/java),变成一个可以运行的apk的呢?如下图所示: 简述上图: 打包资源文件,生成R.java文件。 处理aidl文件,生成相应的Java文件。 编译工程源代码,生成相应的class文件。 转换所有的cl...

JVM 的内存模型

了解jvm的内存模型,便于我们更好的管理客户端的内存

JVM 的内存模型 为什么要了解? 很多做Android开发的同学会问,我们为什么要了解这个呢?首先移动端资源有限,我们了解jvm的内存模型,便于我们更好的管理客户端的内存。 什么是JVM? java代码的执行过程如下图: 运行时数据区可分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器五个部分。 概述 方法区:线程共享数据,存储已被虚拟机加载的类信息、常量、静态变...

kotlin的@JvmOverloads

kotlin的@JvmOverloads会不会生成多余的方法

kotlin的@JvmOverloads会不会生成多余的方法 进行代码review的时,新同事在kotlin方法上用了@JvmOverloads注解,说是为了兼容java代码,听了下表示了解。但他说该注解不会生成多余的java方法,我当时对这点心存疑虑,所以最近有时间正好验证下。 没加@JvmOverloads的Demo 该Kotlin 生成Java代码 加@JvmOverload...