我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西。靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后一定被记忆所围困,而最终消亡的是创造力。但愿这个高手之路系列可以记录我学习安卓的点点滴滴。从而汇成流,聚为江,成为海。java
下面就结合代码分析一下ClassLoader这个东西。安全
安卓应用程序是一个Dalvik虚拟机,加载的是Dex格式的文件。加载Dex格式的文件从直观上理解就是ClassLoader作的事情。那么,咱们就从应用程序的启动提及,由于应用程序的启动必定是与ClassLoader密不可分的。学习
咱们讲应用程序的启动在《安卓高手之路之 应用程序》里面从应用层面分析到了Process.start方法,启动一个activity调用的是Process的start方法,Process的start方法又是调用的Zygote的一些方法。到这里,过程还算清晰。下面的过程就显得有些绕圈,由于安卓上面的java与其余java不一样,安卓每个应用程序都是一个进程。为了实现一个应用一个虚拟机的理想【这个理想知足了能够很好地保护应用程序不受其余应用程序干扰的可能性,仅仅是为了保护应用的数据不被其余应用侵犯而浪费了如此大的力气,可见google在为了应用程序的安全费了多大的心血啊。。。由于google砸在这个上面的心血比较多,因此后续必定要把google设置的安全机制吃透】。JVM的安全模型不适合在手机上使用。权限管理是一个大的话题,其实无非就是两种:google
1.执行期保护:保护正在执行的java代码是正确的,不被侵犯的。进程
2.数据保护:保护数据不被恶意侵犯。ssl
1.第一种,执行期保护。类加载体系结构、class文件检验器、Java虚拟机(及语言)的安全特性一块儿达到一个共同的目的:保持Java虚拟 机的实例和它正在运行的应用程序的内部完整性,使得它们不被下载的恶意代码或有漏洞的代码侵犯虚拟机
2.第二种,数据保护。这个安卓有本身的数据保护方法。就是数字签名,相似于qq登录。it
很明显,第一种保护与这个ClassLoader关系很大。而第二种保护也与ClassLoader或多或少有关系,由于apk文件里面的dex文件也是私有数据的一种。class
并且安卓的classloader和普通java的classloader有所不一样。那么就得从代码进行分析,到底classloader又是什么东西,这个神秘之神又是如何影响到权限问题的?权限
累了,打字真辛辛苦。休息。明天继续。从zygote的启动开始看。