![个人头像照片](https://ucc.alicdn.com/avatar/img_45f81e008f6202b63d4618468ba6c05b.png)
Hi,我是Gavin,曾供职与完美世界、百度,担任研发的职位。 专注于Android开发和应用安全、前端、及机器学习等方向, 热衷寻找高效和自动化的方式来解决问题。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
本文不是讲解传统源码的阅读, 而是『别人的APK源码』该怎么阅读。 项目背景 此前,由于工作的原因,反编译竞品SDK,通过逆向的手段修复其源码并编译运行。
最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三。于是,我在应用宝上下载了贝壳release apk。 点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存在的漏洞 下面进入正题,一文让你知道反编译贝壳APP到底有多简单! 首先下载上方链接的贝壳Apk,接下来进入简单的反编译工作!反编译技术请参考此处简书或个人博客。
1.背景 为了实现apk字节码加密技术,我在CI上通过插入了脚本重新打包任务。然而,这改动导致apktool回编译apk包变大,文件经调研和分析发现:在apktool 2.0.3之后为了快速解压和打包,加入了反编译文件回编译不压缩机制。
1 工具篇 反编译和回编用到的一些工具: apktool是解包APK 文件最常用的工具 keytool是一个Java数据证书的管理工具 jarsigner是JDK提供的针对jar包签名的通用工具 apksigner是Google官方提供的针对Andro...
由于UI的奇葩作图稿,要求文字要贴边,否则会导致上下的View的margin会变大(因为TextView的文字绘制时有上下间距)。 Paint.FontMetrics /** * Class that describes the various metrics for a font at a given text size.
实现一个需求很容易,难的是代码的框架,我们应该让它后期的维护变得简单 titlebar base初始化 private void initBar(TitleBar titleBar) { StatusBarManager.
retrofit作为http请求的接口框架而被众人熟知道,它独特且优雅的接口使用习惯被无数的程序员所认可。http://square.github.io/retrofit/ 介绍 A type-safe HTTP client for Android and Java Retrofit是一个基于AOP思想,对RestfulApi注解进行动态代理的网络框架。
titlebar 支持沉浸式 支持action list 继承ViewGroup无性能损失 支持渐变色背景 支持背景色感应(自动适配stauts dark模式) 沉浸式 一行代码来适配 甚至不需要代码,自动适配机型、版本和dark模式 为什么这...
//响应事件源,多tag @Subscribe(thread = EventThread.MAIN_THREAD, tags = {@Tag(RxBusAction.
架构图 image.png 通用组件层设计 image.png 该层的设计核心在于抽象可抽象的公共部分(无论继承或者组合),让开发者在开发的时候更关注业务和逻辑的理解。
项目源码请参考https://github.com/CarryGanLove/LoadingHelper 背景和问题 在app后sdk开发过程中,如果有遇到延时任务的时候,往往需要添加一个通用的loading控件用来展示给用户,一来为了提示用户当前有耗时的操作,二来降低用户的等待感提升用户体验。
框架开发前 在没有这套框架之前,我们在activity、fragment、自定义view、listview的viewholder甚至你能想的更多。 大概是这样: //activity protected void onCreate(Bundle savedInstanceState) { super.
前言 如何高效并简洁的使用listview,首先自然是关心如何对BaseAdapter定制。站在代码抽象的角度,子类对接口进行实现,父类应该做好一切需要的工作。
BaseListAdapter实现 public abstract class BaseListAdapter extends BaseAdapter BaseListAdapter是一个模板类继承Android SDK中的BaseAdapter,里面...
前言 如何高效并简洁的使用listview,首先自然是关心如何对BaseAdapter定制。站在代码抽象的角度,子类对接口进行实现,父类应该做好一切需要的工作。