首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
薛定谔的程序猫
掘友等级
xosp
知其然,知其所以然
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
157
文章 157
沸点 0
赞
157
返回
|
搜索文章
最新
热门
“Maybe bug 77342775” 异常问题分析
分析解读 Android 9.0 上由于 dex2oat 编译优化引起的插件代码 IncompatibleClassChangeError 异常问题(Maybe bug 77342775)
插件化之 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 实例,只有当实际需要使…
下一页
个人成就
文章被点赞
82
文章被阅读
46,891
掘力值
870
关注了
19
关注者
40
收藏集
1
关注标签
67
加入于
2020-02-21