0%

学习本文的收益:

1.掌握如何使用V8引擎

2.对于小程序V8 Worker的理解更深刻

3.了解JsApi的注入和调用原理

阅读全文 »

1
2
3
4
:android_tools:generateDebugRFile > 
Resolve files of :android_tools:debugCompileClasspath >
activity-11.00.0.316.aar >
14.95 MB/15.52 MB downloaded

反推法

根据 “ 14.95 MB/15.52 MB downloaded “,我们在ResourceOperation 中找到了满足我们看到的这种格式。

阅读全文 »

在项目开发完毕后,publish Maven时,如果我们项目依赖了三方的包,那么我们需要在Pom中指定依赖的项目,那么我们有两种方式可以实现:
第一种:使用 MavenPublication 中的from components.java (java项目),components是一个集合,components.java类似一个Configuration
第二种:使用 MavenPublication pom.withXml

阅读全文 »

AnnotationProcessor(apt) 这个单词组合我们经常在build.gradle 中看到,或许大部分人都知道它是用来做什么的,也有部分人会使用apt通过注解生成代码,但是相信大部分人仅仅只是会用,而没有关注过apt的原理

今天我将从gradle编译流程的角度来给大家分享Apt的原理

阅读全文 »

另一种替换Task的方式,原理基于TaskManager中的构建Task方式,通过ConfigAction方式构建

源码

DefaultTaskContainer

1
2
3
4
5
public <T extends Task> T create(String name, Class<T> type, Action<? super T> configuration) throws InvalidUserDataException {
T task = this.create(name, type);
configuration.execute(task);
return task;
}
阅读全文 »

背景

Gradle替换Task本身对Gradle侵入性很大,可能因为替换Task导致Gradle版本升级带来兼容问题,但TaskContainer中又存在一个replace方法,其实也体现了Gradle是允许我们去替换Task的。 事实上替换Task有时也是很有必要的,当我们需要定制一些Task的输入输出时,原生的task满足不了我们的需求,我们就得去替换Task来实现我们的一些需求。

下面代码中实现了替换GenerateBuildConfig,需要我们重新去实现这个Task,示例中并没有实现task,而是进行了替换,所有BuildConfig.java并不会生成。

阅读全文 »

背景

项目中是模块化后, 各个模块和很多依赖库都是以aar的形式存在,有时我们想快速的去搜索整个项目中调用某个方法的调用,我们首先想到的是用jadx,但是jadx只能帮我们搜索到引用某个方法的代码,而没有导出功能,此文档为拓展jadx新增了一个导出功能

阅读全文 »

在发版之前,我们需要关注的一个指标是包体积,作为一个模块化的项目,如果各模块是以aar的方式依赖到主项目(壳儿)中,那么你可以使用如下的方式来分析两个版本之间的aar文件差异,并输出结果。

阅读全文 »

对于一些时序性的工作,你可以使用plantuml来构建简单时序关系,它势必会提升你的工作效率。

1
2
3
4
5
6
@startuml
client -> server : request
server --> proxy : request
server <- proxy : response
server -> client: response
@enduml

建立两个参与者,你可以使用简单的-> ,<- ,–> ,<–等符号来实现参与者之间的消息传递。

阅读全文 »

参考

  • AbstractDependencyReportTask dependencies任务
  • AppClasspathCheckTask checkDebugClassPath任务
  • ApplicationTaskManager
  • VariantScopeImpl computeArtifactCollection 收集Artifact
阅读全文 »

背景

从git push origin HEAD:refs/for/xxxxx说起,这条命令是在使用mk ak 提交review代码发现的,对HEAD和refs/for/xxxxx 所代表的含义充满了好奇,可能有些人能理解HEAD是.git/HEAD,那refs/for/xxxxx是什么东西呢?

阅读全文 »

问题

同一个包,部分手机加载的.9图会发生拉伸?是什么问题导致了NinePng的变形呢?

阅读全文 »

  • 背景
    • 研发过程中,有些场景需要来回切换,切换意味着配置云控或者本地修改代码重新打包
    • 本地修改代码,有可能造成测试代码提交到服务器,引发严重后果
    • 配置云控,对于不熟悉的研发或者云控配置数量多,可能会浪费更长时间
      阅读全文 »

电量

  • poer_profile.xml 电量基本信息
  • app电量存放文件?batterystats.bin
  • Battery Historian 检测工具 https://bathist.ef.lc/
  • WebView 调试 逆向
  • 白噪音