![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 92
chsmy2018
学无止境,任何技能都是慢慢积累出来的。
展开
-
dagger and Hilt 看完这篇就会啦
theme: smartblue马上入职新公司了,新公司使用了Hilt,所以这几天先熟悉一下。Hilt是对Dagger的封装,所以还得先把Dagger练习一下。这俩都是依赖注入框架,依赖注入是基于控制反转的原则,控制特定代码的执行也就是控制对象的创建,由外部容器创建对象,外部容器创建好之后,在注入到当前对象里面。依赖注入是一种广泛应用的编程原则,遵循这种规范可以让代码更加的灵活,比如下面几个方面解耦:对象的创建依赖于依赖注入的容器, 如果某个对象在很多地方使用,某天该对象改变了,或者实现类改变了.原创 2021-12-19 22:56:59 · 978 阅读 · 0 评论 -
Gradle之自定义插件
前面两篇了解了Gradle的基础知识,最终目的就是为了自己能写出Gradle插件来解决现实项目中的问题。现在Gradle自定义插件用的越来越广泛,插件化,热修复,性能优化,指标检测,多渠道打包等等都会用到Gradle插件。自定义Gradle插件的方式有三种,代码都差不多,都是必须实现Plugin<T>这个接口,然后实现接口中的apply方法。只不过写的地方不一样。第一种在build...原创 2019-11-27 12:04:58 · 359 阅读 · 0 评论 -
Gradle之Project,Task
gradle基本概念百度百科:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。gradle是一个构建工具,也是一个编程框架gradle组成:groovy核心语法build ...原创 2019-11-22 15:11:32 · 678 阅读 · 1 评论 -
Gradle之Groovy
作为一名Android开发者,每天使用AndroidStudio,对于项目中build.gradle文件肯定不陌生,里面有各种各样的配置。对于一些常用的配置我们肯定烂熟于心,不过有时候去看一些大厂的代码的时候,经常会发现他们的项目中有很多的gradle的代码,我们往往因为不了解这些而对了解优秀的项目而带来一些障碍。百度百科:Gradle是一个基于Apache Ant和Apache Maven概念...原创 2019-11-22 15:10:49 · 404 阅读 · 0 评论 -
使用ASM完成编译时插桩
ASM,是一个跟AspectJ功能类似比AspectJ更强大的编译时插桩框架。功能虽强大,不过用起来比AspectJ麻烦不少。其实这个框架在Java中用的很多,对于Android开发者来说如果之前没有开发过Java就有点陌生了官网 https://asm.ow2.io/ASM是一个通用的Java字节码操作和分析框架,可以用它来动态的生成类后者增强现有类的功能。ASM可以直接产生二进制的c...原创 2019-09-28 17:39:31 · 2638 阅读 · 1 评论 -
Andorid Hook进阶
上一篇文章学习了Hook的简单用,这次来做个稍微麻烦一点的,我们知道新建一个Activity之后我们需要在manifest中注册,否则启动的时候就会崩溃,现在使用Hook的方法绕过检查来启动一个没有注册的Activity如果我们不注册的话就会报下面的错误android.content.ActivityNotFoundException: Unable to find explicit acti...原创 2019-08-16 23:06:04 · 189 阅读 · 0 评论 -
占位式插件化之加载静态广播
接着前几篇文章来:由于插件中的广播是在manifest中配置的,所以就不能使用上一篇中的方法来注册广播了,首先我们需要了解一下APK的解析原理第一步我们要知道静态广播是什么时候注册的?在手机开机的时候,系统谁扫描所有的app,在重新安装一遍,这也是为啥手机开机会这么慢,这时候系统会去解析AndroidManifest文件,解析的过程中遇到静态广播后就会自动注册第二步我们来看一下应用的安装目录...原创 2019-08-16 23:04:45 · 168 阅读 · 0 评论 -
Hook式插件化
上一篇文章Andorid Hook进阶,通过Hook系统源码实现了不经过AndroidManifest注册也能跳转到对应Activity的功能。这一篇来分析一下怎么通过Hook的方式来实现插件化从Android类加载的源码开始分析 本文是按照Android9.0源码来,不同系统可能不一样我们平时跳转Activity的时候比如从MainActivity跳转到LoginActivity中,都是这么...原创 2019-08-21 20:45:31 · 681 阅读 · 0 评论 -
占位式插件化之加载Service和动态广播
接着上一篇加载Activity来,启动Service和启动Activity的套路是一样的,宿主端定义一个代理的Service,标准的module中定义一个Service的标准接口,然后开始干。先来到标准module中添加一个Service的标准接口public interface ServiceInterface { /** * 把宿主(app)的环境传给插件 *...原创 2019-08-13 21:41:56 · 175 阅读 · 0 评论 -
占位式插件化之加载Activity
在一些大型的项目中,经常会用到插件化,插件化的优点有不少,即插即用,把不同的功能打包成不同的APK文件,通过网络下发到APP端,直接就可以使用,不用通过应用市场即可随时增加新功能,非常适用于功能多又需要敏捷开发的应用可以实现插件化的方式有很多种,本系列先通过占位式的方法来实现。我们知道,一个apk文件需要通过安装才能运行使用,那我们的插件apk是直接通过网络下载到本地的,不通过用户的安装,也就...原创 2019-08-13 21:33:23 · 315 阅读 · 0 评论 -
LeakCanary原理
前言Leakcanary是由Square公司开源的一款轻量的第三方检测内存泄露的工具主要原理 watch一个即将要销毁的对象,比如监控一个activity处于什么状态。先来看一下java内存中几个比较重要的部分栈(stack) 存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆(heap) 主要存放用new产生的数据,是垃圾回收器主要回收的部分方法区 ...原创 2019-07-28 17:48:52 · 668 阅读 · 0 评论 -
Andorid组件化跳转路由
简单介绍路由在组件化工程中有非常重要的作用,两个没有相互引用的module之间怎么通信呢。可以使用EventBus,使用广播,使用类加载,使用反射,scheme,隐式意图等等,这些方法各自都有优缺点,现在开源用的比较多的路由框架中ARouter中使用的是类加载的方法下面我们也使用类加载的方式自己封装一个小路由。那怎么使用类加载的方法来进行不同组件之间通信呢。很简单只要我们能拿到一个类的全类名...原创 2019-07-23 22:33:27 · 179 阅读 · 0 评论