我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西。靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力。希望这个高手之路系列能够记录我学习安卓的点点滴滴。从而汇成流,聚为江,成为海。

下面就结合代码分析一下ClassLoader这个东西。

安卓应用程序是一个Dalvik虚拟机,加载的是Dex格式的文件。加载Dex格式的文件从直观上理解就是ClassLoader做的事情。那么,我们就从应用程序的启动说起,因为应用程序的启动一定是与ClassLoader密不可分的。

我们讲应用程序的启动在《安卓高手之路之 应用程序》里面从应用层面分析到了Process.start方法,启动一个activity调用的是Process的start方法,Process的start方法又是调用的Zygote的一些方法。到这里,过程还算清晰。下面的过程就显得有些绕圈,因为安卓上面的java与其他java不同,安卓每一个应用程序都是一个进程。为了实现一个应用一个虚拟机的理想【这个理想满足了可以很好地保护应用程序不受其他应用程序干扰的可能性,仅仅是为了保护应用的数据不被其他应用侵犯而浪费了如此大的力气,可见google在为了应用程序的安全费了多大的心血啊。。。因为google砸在这个上面的心血比较多,所以后续一定要把google设置的安全机制吃透】。JVM的安全模型不适合在手机上使用。权限管理是一个大的话题,其实无非就是两种:

1.执行期保护:保护正在执行的java代码是正确的,不被侵犯的。

2.数据保护:保护数据不被恶意侵犯。

1.第一种,执行期保护。类加载体系结构、class文件检验器、Java虚拟机(及语言)的安全特性一起达到一个共同的目的:保持Java虚拟 机的实例和它正在运行的应用程序的内部完整性,使得它们不被下载的恶意代码或有漏洞的代码侵犯

2.第二种,数据保护。这个安卓有自己的数据保护方法。就是数字签名,类似于qq登陆。

很明显,第一种保护与这个ClassLoader关系很大。而第二种保护也与ClassLoader或多或少有关系,因为apk文件里面的dex文件也是私有数据的一种。

而且安卓的classloader和普通java的classloader有所不同。那么就得从代码进行分析,到底classloader又是什么东西,这个神秘之神又是如何影响到权限问题的?

累了,打字真辛辛苦。休息。明天继续。从zygote的启动开始看。

最新文章

  1. Sql Server系列:DBCC命令
  2. BT协议分析(1)—1.0协议
  3. Unity Svn(转)
  4. JS 数组去重!!!
  5. js运动 模仿淘宝幻灯
  6. javascript 关于语义化作用的理解
  7. QT 自定义assert
  8. power shell upload file to azure storage
  9. 图论(差分约束系统):POJ 1275 Cashier Employment
  10. PE结构之重定位表
  11. 201521123031 《Java程序设计》第6周学习总结
  12. SaltStack 的远程执行机制
  13. 基于keil平台下STM32L系列移植FreeRTOS操作系统
  14. vue路由请求 router
  15. Jenkins系列之六——拉取指定branch或tag
  16. 【python】confluent_kafka将offset置为最大
  17. xml解析与生成的学习资料
  18. Java 内存监控命令简介(零)
  19. Java快速开发平台——JEECG 3.7.8 版本发布!我们的目标是有鱼丸也有粗面
  20. freemarker取数

热门文章

  1. POJ 2352 Stars(HDU 1541 Stars)
  2. Hadoop集群中Hbase的介绍、安装、使用
  3. tools/adb: No such file or directory
  4. java web 学习十四(JSP原理)
  5. WebForm+Web.config: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
  6. HDU5697 刷题计划 dp+最小乘积生成树
  7. Oracle11g导入*.dmp数据文件
  8. C#获取汉字拼音
  9. flex 图片旋转(解决公转和自转问题)
  10. flashback database 基本介绍一