从Android Studio Dophin开始,Android Studio中的默认展示了新版的logcat。新版的logcat色彩上是更加的好看了,不同的tag会有不同的...
从Android Studio Dophin开始,Android Studio中的默认展示了新版的logcat。新版的logcat色彩上是更加的好看了,不同的tag会有不同的...
泛型的协变和逆变是什么?对应于Java当中,协变对应的就是<? extends XXX>,而逆变对应的就是<? super XXX>。 1. 泛型的协变 1.1 泛型协变的使...
一、什么是作用域 作用域就是变量的可用性的代码范围,就叫做这个变量的作用域。简单理解,就是在这个范围内,变量是可以使用的,超过这个范围,变量就无法使用,这个范围就是作用域 作...
前言 在 Android 开发中,如果我们不确定图片的宽高,又想让 ImageView 以固定的宽度或高度显示,且图片宽高比保持不变,我们很容易想到 adjustViewBo...
背景 由于网络需求需要通过发心跳来维持连接的建立,所以客户端需要通过计时器,每间隔一定事件发一次心跳请求到服务器,以此达到连接保活。我用了Timer来进行定时任务后,服务端童...
工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。 Gradle构建流程 Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initi...
如果你是刚准备入行的新手,那么这个内容会很适合你,因为安卓的基本配置都和Gradle有关。当然,如果你已经入行,但对Gradle的了解还很浅,希望这篇文章会对你有所帮助。 本...
有时候我们为了防止自己的应用被反编译后重新打包,不得不采取运行时进行签名校验的方式。因为会经常用到,所以在这里整理了一下校验方式。 使用方法:首先使用 keytool 获取签...
你是否还在为依赖冲突而费时费力?你是否看到gradle报了重复jar包或重复类而不知所措?那么,这篇文章,教你彻底解决依赖冲突问题 ~ 冲突类型无非是类、jar包重复,比如:...
1、背景 最近查看应用的崩溃记录的时候遇到了一个跟 Java 序列化相关的崩溃, 从崩溃的堆栈来看,整个调用堆栈里没有我们自己的代码信息。崩溃的起点是 Android 系统自...
一、动态代理 + Hook 的实现 在之前的文章我们讲过插件化的实现有点类似,插件化一般是替换系统的 mInstrumentation 为自己的 Instrumentatio...
【1】依赖 【2】新建初始化类 SdkInitializer 需要我们自己新建,目的是初始化指定SDK。Initializer 是start up 依赖中的类,不需要自己定义...
Python是非常实用的编程语言,学习简单,有丰富的三方库,如果想在Android手机中使用Python,实现Android和Python的混编,可以使用Chaquopy。C...
前言 在Android的实际开发中,我们会经常使用到多Module开发,而当我们修改一些版本信息或者SDK升级时,可能涉及多个Module都需要修改。 显然逐个修改Modul...
adb常用命令[https://www.jianshu.com/p/3fee1c9d51ae] 与应用交互 主要是使用am 命令,常用的 如下 command用途start ...
一、StartUp简介 应用程序启动库提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用StartUp来简化启动序列并显式设置初始...