首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
薛定谔的程序猫
掘友等级
xosp
知其然,知其所以然
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
112
文章 112
沸点 0
赞
112
返回
|
搜索文章
最新
热门
插件化之 Inlined method resolution crossed dex file boundary 问题试分析
首先,出现该问题的根本原因在于:本来应该加载插件中的类,由于某种原因却错误的加载了宿主中的类,类似于 pre-verify 问题。而之所以会出现这个问题,大部分场景下都是因为在插件加载完成之前,提前触发了相关类的加载,从而加载了宿主中的代码。 事实上,由于目前插件化的技术已经相…
Android ART 虚拟机 AOT 和 JIT 内联机制(inline-cache)浅析
通过代码内联就可以省去一次函数调用,提高代码的执行效率。 inline_caching 也是一种类似的优化方式,只不过 inline_caching 是专门针对动态类型语言做的优化。动态类型的语言在运行时存在一个方法查找的过程,如果每次调用方法都要进行方法查找,对于代码的运行效…
插件化之动态 PackageId 引起的插件资源异常问题分析
同时,也发现在出现异常的日志中,经常伴有 ResourceType 的异常日志信息,虽然这些信息不会直接导致 crash,但是也可以看出应该跟 Android 系统底层资源加载有关系。 我们知道,Android 的资源信息是 0xPPTTEEEE 的形式,其中 PP 是 Pac…
插件化之 Incompatible structural change detected 问题分析
在这种情况下,如果运行时触发了 com.test.example.Test 类的相关逻辑,则会加载宿主中的该类(即 base.odex),而该类的父类 com.test.example.TestSuper 则会加载插件中的类(即plugin.odex),因而在 CheckSup…
插件化之Application重复创建执行问题分析
PS:实际上,并不限于 performLaunchActivity() 方法,handleReceiver()、handleCreateService() 方法均有类似的逻辑。 实际上,当我们通过 AssetManager 将 .apk 文件的资源加载进来的时候,在系统底层都会…
Android 5.0 以下系统,由Enum类型的注解引发的 pre-verified 问题分析
在 dexopt 的过程中,Dalvik虚拟机会对 class 进行验证和优化,其中对于验证通过的类都会打上 CLASS_ISPREVERIFIED 标志。从上面的源码可以看出: 另一方面,在Dalvik虚拟机触发类加载的时候,都会调用到 dvmResolveClass() 方…
Gradle之Task依赖构建浅析
在整个 gradle 运行过程中,总共包含5个阶段:LoadSettings、Configure、TaskGraph、RunTasks、Finished。而在 Configure->TaskGraph 这个阶段,就是解析并建立 DAG 任务关系依赖图的过程。我们先来看一下这个 …
Gradle之ServiceRegistry浅析
相信很多人对 DefaultGradle 这个类并不陌生,因为当我们通过 project.gradle 调用的时候,实际上调用的就是这个类。 如果我们在运行时,通过 project.gradle.getClass() 输出其 Class 信息,我们会发现,这个类居然是 org.…
Gradle之Task创建过程浅析
当我们通过 project.tasks.registerTask() 注册任务的时候,实际上调用的是 TaskContainer 中的方法,其默认实现是 DefaultTaskContainer。 任务注册的时候,只是创建了一个 TaskProvider 实例,只有当实际需要使…
Android焦点搜索过程解析
上一篇文章Android焦点分发逻辑,我们简单的梳理了一下焦点分发的逻辑,这一次,我们再探讨一下焦点搜索的逻辑。 我们先来看看 ViewRootImpl 这个类的 focusSearch(...) 方法,如上代码所示: 对于 ViewRootImpl 这个类来说, mView …
下一页
个人成就
文章被点赞
69
文章被阅读
38,805
掘力值
785
关注了
18
关注者
35
收藏集
1
关注标签
67
加入于
2020-02-21