Android进阶学习
文章平均质量分 87
Android相关记录
许进进
这个作者很懒,什么都没留下…
展开
-
OkHttp源码剖析(五) 代理路由
OkHttp源码剖析(一) 初识okhttpOkHttp源码剖析(二) 设计模式下的okhttpOkHttp源码剖析(三) 任务调度器DispatcherOkHttp源码剖析(四) 报文读写工具ExchangeCodecOkHttp源码剖析(五) 代理路由缘起:需要一个connection由前面几章知识可知,拦截器ConnectInterceptor会经过ExchangeFinder.findConnection(), private fun findConnection(...): Rea原创 2021-10-24 15:28:10 · 3744 阅读 · 0 评论 -
Android热更新详解
一 前言介绍正好最近又看到热更新,对以前Android 热修复核心原理:ClassLoader类加载机制做了点补充。从16年开始开始,热修复技术开始在安卓界流行,它以classloader类加载机制为核心,可以不发布新版本就修复线上 bug ,让线上版本有能力去进行全量或者增量更新。常见的思路有两种:类加载方案,即 dex 插桩。该方案以腾讯系为主,包括微信的 Tinker、饿了么的 Amigo;底层替换,即修改替换 ArtMethod。方案以阿里系的 AndFix 等为主;本文主原创 2021-09-21 14:51:05 · 9381 阅读 · 13 评论 -
Android JNI:lame库的编译及使用
1.下载lame库lame库下载地址(以下使用的是lamev3.100)2.源码导入解压下载的lame库,把libmp3lame文件夹下后缀为.c .h的文件(不包括子文件夹i386和vector下的)复制到cpp/lame文件夹内,同时把include目录下的lame.h也复制到cpp/lame文件夹内,此时 lame文件夹内包含42个文件。3.修改库文件打开刚刚拷贝的lame库文件,修改:util.h 文件,把 570 行的两处 ieee754_float32_t 改为 flo.转载 2021-02-18 14:44:32 · 5123 阅读 · 0 评论 -
Android:JNI开发介绍与小结
目录一 概念介绍1.1 JNI1.2NDK1.3 交叉编译1.4 指令集1.5微架构1.6 ABI二 工程实践2.1新建工程2.2 已有工程三 生成So库四动态加载 so 库4.1何为动态加载4.2 动态加载优点4.3 实现步骤4.4 总结参考文章:一 概念介绍某些计算密集型的运算,我们大多不会在 java 层来实现,一般使用 native 层处理,比如一些视频的解码等,最终会通过 C/C++ 来实现,然后编译成 so(共享...原创 2021-02-18 14:24:18 · 4555 阅读 · 2 评论 -
Android 热修复核心原理:ClassLoader类加载机制
一 前言介绍从16年开始开始,热修复技术在 Android 技术社区热了一阵,这种不用发布新版本就可以修复线上 bug 的技术看起来非常黑科技。它可以让已经发行的线上版本有能力去进行全量或者增量更新,而不用为了某一些小bug大费周章地迭代一个新版本。学习热修复技术是安卓开发者进阶必不可少的一条道路之一,而热修复的核心就是:java类加载机制。1.1 ART 和 DalvikDVM是...原创 2020-04-24 22:34:49 · 6568 阅读 · 0 评论 -
Dagger2利器系列三:原理、用途
目录一:dagger2的好处or用途1.1一切都是为了解耦1.2 增加开发效率1.3更好的管理类实例二 原理分析参考文章:一:dagger2的好处or用途1.1一切都是为了解耦一切都是为了解耦。一个类的new代码是非常可能充斥在app的多个类中的,假如该类的构造函数发生变化,那这些涉及到的类都得进行修改。设计模式中提倡把容易变化的部分封装起来。我们...原创 2020-04-22 09:02:02 · 5293 阅读 · 0 评论 -
Rxjava3文档级教程三: 实战演练
一 结合RxBinding RxBinding 的 GitHub 地址RxBinding 能够把 Android 平台的兼容包内的 UI 控件变为 Observaber 对象. 可以把 UI 控件的事件当作 RxJava 中的数据流来使用。依赖如下:Platform bindings:implementation 'com.jakewharton.rxbinding...原创 2020-04-05 18:44:30 · 8230 阅读 · 1 评论 -
Dagger2利器系列二:懒/重加载+Component 的组织关系
目录一:懒/重加载1.1 Dagger2 中的懒加载1.2Provider 强制重新加载二:Component 的组织依赖关系2.1 前言2.2 Component 的组织关系2.2.1 依赖关系2.2.3 继承关系2.3 依赖关系 vs 继承关系2.4 SubComponent 的其他问题2.4.1 抽象工厂方法定义继承关系2.4.2 重复的 M...原创 2020-04-21 18:25:46 · 5454 阅读 · 0 评论 -
Dagger2利器系列一:入门到使用
一Dagger21.1 简介:1:Dagger2起源于Dagger,是一款基于Java注解来实现的完全在编译阶段完成依赖注入的开源库。2:Dagger2主要用于模块间解耦、提高代码的健壮性和可维护性。3:Dagger2在编译阶段通过apt利用Java注解自动生成Java代码,然后结合手写的代码来自动帮我们完成依赖注入的工作。1.2 起源起初Square公司受到Guice的...原创 2020-04-20 19:13:32 · 5635 阅读 · 0 评论 -
Android:View体系之UI 的绘制流程及原理 (源码分析+掌握,看这一篇就足够!)
转载请标明出处!目录一 概述1.1 Android的View继承关系图1.2 Android的视图坐标1.2.1安卓坐标系1.2.2 视图坐标系1.2.3 常用方法二 View的事件分发三 View的工作流程3.1 概述3.2测量3.2.1 预备知识MeasureSpec(重要)3.2.2 MeasureSpec的SpecMode分类(模式)...原创 2020-03-10 20:51:01 · 5846 阅读 · 1 评论 -
App 防止 Fiddler 抓包小技巧
具体应用到以下步鄹就可以1.判断当前系统是否挂代理获取当前系统是否设置代理,可以根据不同的 Api Level,分别通过 System.getProperty() 和 android.net.proxy.getXxx() 方法获取到。 private fun checkWifiProxy(): Boolean { val IS_ICS_OR_LATER = Bui...转载 2019-05-17 13:46:38 · 7990 阅读 · 0 评论 -
java.lang.IllegalArgumentException: Illegal pattern character 'Y' 解决办法
检查系统属性setting.DISPLAYDATE,若为YYYY-MM-DD,则改为yyyy-MM-dd ,其中yyyy和dd只能用小写原创 2019-01-30 14:15:03 · 9896 阅读 · 0 评论 -
Charles获取安卓app接口和数据
一:wifi设置在电脑端安装Charles,确保手机和电脑处于同一个网络环境,即同WiFi,然后如图进入设置页。在弹出页面,显示了配置方法。需要在手机上进行IP代理。 小米手机打开“设置->WLAN”,如图,点击正在连接的WiFi的最右边的小箭头。打开“网络详情”,点击下边的“代理”,选择“手动”。然后将第2步中的IP填入主机名,端口填入端口。点击“确定”后退出设置。 ...原创 2018-12-10 12:52:56 · 7077 阅读 · 0 评论 -
Android友盟统计多渠道打包配置
一:前言app上线后,一般公司都希望跟踪app在市场上的使用情况。包括新增用户、活跃用户、渠道信息、错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品。这些都可以通过集成友盟统计来轻松实现。(小提示:由于截的都是大图,在简书显示比较模糊,需要查看清晰图片则鼠标点击图片放大即可)集成一、获取Appkey集成友盟SDK之前,首先需要到友盟官网注册并且...转载 2018-08-01 15:04:00 · 5872 阅读 · 0 评论 -
Android framework学习
一:概述 众所周知,Android是一个基于Linux实现的操作系统。但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别。所以Android也需要运行环境,需要Linux内核在启动完成后加载Android Framework运行所需要的资源。当Framework完成初始化后才能继续启动相应的APK应用程序。...原创 2018-08-01 14:07:54 · 7411 阅读 · 0 评论 -
Android framework之application framework
Android的四层架构:Linux2.6内核层,核心库层,应用框架层,应用层。今天重点介绍一下应用框架层Framework,作为自己的学习心得。一:Framework概述 Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求。写APP的人都知道,学习Android开发的第一步就是去学习各种各样的AP...转载 2018-08-01 12:59:38 · 6063 阅读 · 0 评论