安卓高手之路之 ClassLoader - 修補C++ - ITeye技術網站java
我不喜歡那些泛泛而談的去講那些形而上學的道理,更不喜歡記那些既定的東西。靠記憶去彌補思考的人,容易陷入人云亦云的境地,最後一定被記憶所圍困,而最終消亡的是創造力。但願這個高手之路系列可以記錄我學習安卓的點點滴滴。從而匯成流,聚爲江,成爲海。安全
下面就結合代碼分析一下ClassLoader這個東西。學習
安卓應用程序是一個Dalvik虛擬機,加載的是Dex格式的文件。加載Dex格式的文件從直觀上理解就是ClassLoader作的事情。那麼,咱們就從應用程序的啓動提及,由於應用程序的啓動必定是與ClassLoader密不可分的。網站
咱們講應用程序的啓動在《安卓高手之路之 應用程序》裏面從應用層面分析到了Process.start方法,啓動一個activity調用的是Process的start方法,Process的start方法又是調用的Zygote的一些方法。到這裏,過程還算清晰。下面的過程就顯得有些繞圈,由於安卓上面的java與其餘java不一樣,安卓每個應用程序都是一個進程。爲了實現一個應用一個虛擬機的理想【這個理想知足了能夠很好地保護應用程序不受其餘應用程序干擾的可能性,僅僅是爲了保護應用的數據不被其餘應用侵犯而浪費了如此大的力氣,可見google在爲了應用程序的安全費了多大的心血啊。。。由於google砸在這個上面的心血比較多,因此後續必定要把google設置的安全機制吃透】。JVM的安全模型不適合在手機上使用。權限管理是一個大的話題,其實無非就是兩種:google
1.執行期保護:保護正在執行的java代碼是正確的,不被侵犯的。spa
2.數據保護:保護數據不被惡意侵犯。blog
1.第一種,執行期保護。類加載體系結構、class文件檢驗器、Java虛擬機(及語言)的安全特性一塊兒達到一個共同的目的:保持Java虛擬 機的實例和它正在運行的應用程序的內部完整性,使得它們不被下載的惡意代碼或有漏洞的代碼侵犯進程
2.第二種,數據保護。這個安卓有本身的數據保護方法。就是數字簽名,相似於qq登錄。ssl
很明顯,第一種保護與這個ClassLoader關係很大。而第二種保護也與ClassLoader或多或少有關係,由於apk文件裏面的dex文件也是私有數據的一種。get
並且安卓的classloader和普通java的classloader有所不一樣。那麼就得從代碼進行分析,到底classloader又是什麼東西,這個神祕之神又是如何影響到權限問題的?
累了,打字真辛辛苦。休息。明天繼續。從zygote的啓動開始看。