
Android
文章平均质量分 89
Jtag特工
代码和人工智能老兵
展开
-
细说dex2oat(3)
dex2oat是如何在makefile中落地的原创 2016-04-08 21:00:33 · 5769 阅读 · 1 评论 -
Android应用生死轮回的那些事儿(2) - PackageManager
PackageManager, ApplicationPackageManager和PackageManagerService的关系原创 2016-08-10 21:16:10 · 2408 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(3) - 武器库(1)-权限管理相关API
APIPackageManager中提供的武器,可以用“既多又杂,版本变化大”来形容。 不过,我们通过分类和排序的方法将它们组织起来,让开发者同学们可以学会使用这些强大的武器!这一节我们将学习: * 如何查询系统中都有哪些权限组 * 每个权限组都有些什么权限 * 如何查询是否被授予某一权限 * 如何查询都有哪些应用申请了某一项权限原创 2016-08-11 17:58:48 · 2535 阅读 · 0 评论 -
ART世界探险(13) - 初入dex2oat
对于大多数人来讲,dex2oat一直是个黑盒子。那么,这个盒子中到底是些什么东西呢,我们有了前面的java,指令集,还有一点点的编译原理的知识储备,终于可以打个开看个究竟了。原创 2016-09-05 13:33:35 · 5417 阅读 · 2 评论 -
ART世界探险(14) - 快速编译器和优化编译器
ART的编译器为两种,一种是QuickCompiler,快速编译器;另一种是OptimizingCompiler,优化编译器。原创 2016-09-06 13:41:38 · 7497 阅读 · 0 评论 -
ART世界探险(15) - CompilerDriver,ClassLinker,Runtime三大组件
CompilerDriver,ClassLinker,Runtime三大组件原创 2016-09-06 20:29:36 · 2411 阅读 · 0 评论 -
mac党如何解析bootchart
关于bootchart,网上已经有很丰富的文章介绍了。但是,这些文章都是讲在Linux下如何使用。 做为开发Android的mac用户,还要使用Linux机器做中转,实在是太麻烦了。尤其是Ubuntu 12.04上默认的bootchart工具还有问题,需要更新python脚本。事实可以更简单,我们直接在mac上build一个bootchart工具就好了么。原创 2016-09-20 16:39:47 · 1038 阅读 · 0 评论 -
ART世界探险(16) - 快速编译器下的方法编译
QuickCompiler下的Compile函数的主要流程原创 2016-09-07 21:02:32 · 1535 阅读 · 0 评论 -
ART世界探险(19) - 优化编译器的编译流程
前面,我们对于快速编译器的知识有了一点了解,对于CompilerDriver,MIRGraph等都有了初步的印象。 下面,我们回头看一下优化编译器的编译过程。原创 2016-09-21 11:12:46 · 2287 阅读 · 0 评论 -
Android M应用启动流程分析
Android M应用启动流程分析原创 2016-10-29 17:33:48 · 2900 阅读 · 1 评论 -
ART世界探险(20) - Android N上的编译流程
就在我们分析Android M版本的ART还只走出了一小段路的时候,Android N的新ART就问世了。 Android N上的ART还是有不小的改进的。不过做为一个关注细节的系列文章,我们还是从Compile的过程说起。原创 2017-01-04 22:08:29 · 2175 阅读 · 0 评论 -
Android API统计
Android 4.4 API数量统计原创 2017-01-12 20:24:13 · 1666 阅读 · 2 评论 -
Android native应用开发简明教程 (1) - 本地开发武器库概览
Android本地开发武器库概览原创 2017-02-28 11:38:48 · 1280 阅读 · 0 评论 -
ART世界探险(18) InlineMethod
下面我们正式开始分析InlineMethod将Dalvik字节码转成MIRGraph的过程原创 2016-09-12 21:08:18 · 1511 阅读 · 0 评论 -
ART世界探险(17) - 中层中间代码MIR
中层中间代码MIR原创 2016-09-12 18:17:40 · 1582 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(1) - installd初探
前面我们讨论过dex2oat的过程,下面我们开始探索系统中的重要工具进程,installd守护进程。我们有PackageManageService这么大的组件了,为什么还需要installd这个守护进程呢? 一句话,是因为权限的问题,PMS只有system权限。installd的作用就是处理需要root权限的操作。原创 2016-08-09 21:47:15 · 2305 阅读 · 0 评论 -
用Go语言写Android应用 (2) - 从Android的Java调用Go代码
激动人心的时刻到了,从这一刻开始,我们可以通过Android的Java来调用go写的代码了!原创 2016-07-12 15:50:56 · 10811 阅读 · 0 评论 -
ART世界探险(5) - 计算指令
我们分析一下ARM, ARM v7a, ARM64 v8a, x86, x86_64, mips, mips64和Java字节码的整数和浮点运算。原创 2016-07-24 22:19:18 · 2968 阅读 · 0 评论 -
ART世界探险(6) - 流程控制指令
java, arm, mips, x86处理分支和循环的指令原创 2016-07-25 02:36:27 · 3928 阅读 · 0 评论 -
ART世界探险(10) - 异常处理
对于编译Java的话,有一个问题不能不考虑,就是异常处理的问题。异常处理是基于Java的语句块的,翻译成本地代码的话,需要针对这些指令的地址进行一下重排。 我们来看下ART是如何实现异常处理的。原创 2016-07-28 18:20:33 · 1983 阅读 · 3 评论 -
ART世界探险(11) - OAT文件格式分析
既然是要探险,咱们就保持一定的深度,起码将来可以做个基于ART的黑客之类的。 所以我们针对细节多下一些工夫,先仔细分析一下OAT文件的格式。原创 2016-08-03 18:23:25 · 2676 阅读 · 0 评论 -
用Go写Android程序(3) - Go语言速成
下面我们将Go与C/C++/Java的一些比较不同的地方提炼一下,让大家可以快速上手。然后在实践中继续学习。原创 2016-07-30 18:40:25 · 3087 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(4) - 武器库(2)-应用组件查询相关API
这一节我们将学习:如何查询系统中安装了哪些应用如何获取一个包的信息如何获取一个Application的信息如何获取系统中安装的所有的ContentProvider的信息如何获取一个uid中运行的所有的包如何查询一个uid的进程名如何通过一个广播Intent查询接受这个广播所有的BroadcastRece原创 2016-08-15 15:04:31 · 3392 阅读 · 1 评论 -
ART世界探险(12) - OAT文件分析(2) - ELF文件头分析(中)
ELF中的section和segment原创 2016-08-04 20:17:30 · 1905 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具
Install相关的API,在Android 1.0时一个也没有。全是后续陆续增加进来的。 我们发现,除了4.2的是补充4.0的以外,基本上全是逢大版本才有更新:2.0,3.0,4.0,5.0都有更新。原创 2016-08-16 18:33:28 · 2397 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(6) - 武器库完结篇
PackageManager武器库的完结篇,让我们梳理一下从Android 1.0到Android 7.0的发展过程吧。原创 2016-08-17 12:13:29 · 2594 阅读 · 0 评论 -
Android应用生死轮回的那些事儿(7) - PackageManager的不公开API
前面,我们花了相当多的篇幅把PackageManager的公开API分门别类,并按版本顺序讲解了发展的过程。有的同学问了,既然installer相关的API在Android 5.0才引入,那么Android 4.4及之前的应用安装的程序是怎么写出来的呢? 答案是,还有未公开的内部API啊。原创 2016-08-17 19:59:16 · 2464 阅读 · 0 评论 -
说说Android的广播(2) - 并发队列和串行队列
并发队列和串行队列前面我们讲了,消息分为普通消息和有序消息两大类。普通消息是可以并发的,由于是并发的,这些广播的处理者之间互相是不依赖的。另外,并发队列和串行队列都各维护了一条后台广播队列和前台广播队列。如果这个消息足够重要,想走快速通道的话,可以选择使用前台广播队列。对于并发队列,如果是进程活着,动态注册到队列里的,系统会通过并发的方式迅速将消息广播出去,就跟大家所想象的一样。原创 2016-06-06 19:14:17 · 4909 阅读 · 0 评论 -
Android native应用开发简明教程 (2) - 本地应用的原理
本地App,本质上是一个Java App调用了一个JNI的库,而应用的逻辑通过native代码来实现。原创 2017-03-01 11:57:47 · 1226 阅读 · 0 评论