HD2厲害的前提是,這款手機是個劃時代的產品,大家都對其十分熟知和了解。從而使得很多人對其拆解和解密,讓他的硬體原理圖和各種規範都很容易獲取。有了這些東西,加上這款手機充足的貨源支援,讓很多駭客有了人手一個的實驗平臺。有了這些優勢和鶴立雞群的關注程度,我並不覺得HD2做到系統眾多駭客,並讓其做到可以刷各種andrid定製rom 是件很困難的事情。(由Windows系統改到能刷Android系統會比從Android系統改到能刷Windows簡單的多的多的多,而HD2當年預設就是安裝的Windows Mobile 6.5,所以能刷Android並不那麼困難)。
Android:從非常籠統的角度區分,可以認為是由 Linux kernel + Framework + Ui activity 組成三個部分組成(沒必要和網上一樣分的那麼詳細,這樣分會更容易讓大家理解吸收)
1、Linux kernel:提供了所有硬體的驅動,這些驅動的作用是負責各個硬體(sensors 、 panel 、 vibrator、 touch panel 、 以及系統的核心硬體如CPU GPU RAM 和EMMC 等)的初始化工作,初始化成功後,會為Framwork層提供出各種介面,Framework層只能透過這些介面來呼叫硬體資源(例如控制sensor 返回資料,調節背光量度,設定cpu工作頻率等)。
2、Framework可以簡單的理解為一個Android的執行庫環境,既提供了java 虛擬機器的執行環境供所有apk執行,也提供各類庫函式和環境,供apk或者系統去排程和響應底層的硬體和上層的請求。
3、Ui 部分用比較籠統的說法,可以簡單認為user在手機上所能看到的所有介面(activity),例如你的設定或者開機後的程式選擇介面,其實都是一個個的apk,大家常說的launcher 和setting,其實就是兩個apk而已。老羅錘子手機,主介面變化那麼大,本質上也只是重寫了系統原生的apk而已(當然,也有改到一些Framework層的東西,但畢竟主要的改動還是在apk中)
【為什麼安卓手機不能安裝蘋果IOS或者微軟的WP系統】
我們可以把這個問題分成如下幾個小問題來解析,這樣會顯得更加有條理
1:安卓系統是否可以刷到任何硬體裝置上?
2:iOS系統可以安裝到任何裝置上嗎?
1:安卓系統是否可以刷到任何硬體裝置上?
如果我們有Android系統的原始碼,然後又有 硬體裝置的原理圖。我們就可以做到將Android系統安裝到所有硬體上。不過用程式設計師嚴謹的話講,這句話成立還有個前提,那就是Android 原始碼中所包含的Linux 原始碼中,支援你硬體中CPU執行的指令集。如果CPU都不認識你編譯出來的程式指令,你有如何期望他能夠正確跑的寫的Driver呢?
2:iOS系統可以安裝到任何裝置上嗎?
原則上只要有iOS的原始碼,而且透過其編譯器所編譯出的系統程式可以被你手機的cpu硬體架構正確解讀並執行,那麼我們完全可以透過修改iOS系統的Driver,來完美支援你的硬體。 可現實是殘酷的,iOS是沒有原始碼的~ 所以我們也很難了解到他的組成原理究竟是類似於Windows的分離思想,還是Android的硬體定製思想。
我有特意查了下目前其他種類手機執行蘋果iOS系統的情況,結果發現,目前絕大多數執行起來iOS系統的機器,原理幾乎都是運用虛擬機器的技術完成的。
這個虛擬機器技術,究竟是怎麼做到的呢?呵呵,想想你曾經用過的vmware,想必你已經有了大概的概念。下面我進一步解釋下其執行原理:
虛擬機器其實就是利用目前已經安裝的系統的api,來獲取所有硬體的管理介面,有了這些介面,我們就可以做出一個大的應用程式,這個程式既可以控制你機器的所有硬體,也可以將所有硬體的獲取的資料獲取到你的程式資料庫中。設想一下,我們只要在這個程式的基礎上,再實現解析程式碼(這段程式碼可以將其他平臺的cpu執行指令,翻譯成當前硬體cpu所認識的程式碼,然後提供給當前硬體實際的cpu去執行),然後我們再提供一些介面,這些介面會模擬出目標系統(虛擬機器中想執行或安裝的系統)需要的底層執行環境,讓目標系統以為自己就是執行在實際的硬體上。那麼該虛擬機器中其實就可以實現安裝並執行iOS 、Palm 、webOS 、WM、WP等等系統的功能。所以iOS系統原則上很難安裝到任何裝置上,但能安裝到任何安裝過符合其執行環境的虛擬機器環境上。
相信透過上面三個問題的解答,我已經給出了我對你這個問題的解讀。
最後我想補充下另一個問題的解答:【為什麼當年HD2那麼厲害,什麼系統都能刷】
HD2厲害的前提是,這款手機是個劃時代的產品,大家都對其十分熟知和了解。從而使得很多人對其拆解和解密,讓他的硬體原理圖和各種規範都很容易獲取。有了這些東西,加上這款手機充足的貨源支援,讓很多駭客有了人手一個的實驗平臺。有了這些優勢和鶴立雞群的關注程度,我並不覺得HD2做到系統眾多駭客,並讓其做到可以刷各種andrid定製rom 是件很困難的事情。(由Windows系統改到能刷Android系統會比從Android系統改到能刷Windows簡單的多的多的多,而HD2當年預設就是安裝的Windows Mobile 6.5,所以能刷Android並不那麼困難)。
不過對於開發出HD2上的iOS虛擬機器的同學,我只能感嘆他的技術確實厲害。
你可能也發現了,HD2執行iOS系統時候,很卡頓的原因是由於他們寫的虛擬機器程式的解析和排程效率不高所導致的。另外,HD2再刷完iOS後其很多硬體不能正常使用的原因,一方面是由於HD2的硬體裝置iOS系統原生不支援,其次是由於他們寫的虛擬機器還沒能很好的完成將HD2實際硬體轉化為iOS 硬體介面的程式碼部分。
至此,我應該對這個問題解做了一個比較全面的解讀!