b) 在android上,對apk包的載入邏輯
i. 載入邏輯
zygote(孵化器)在成功啟動一android程序後,會根據packages.list的內容(啟動時會載入到system_process中的pakcagemanager中),把odex檔案,載入到dalvik中,完成邏輯的載入;
ii. 資源讀取
資源讀取,主要有兩三個類,分別是resource、assertmanager和layoutinflater。
當在顯示介面時,就通過這三個類讀取資源。
c) 結論和猜想
i. apk相對於整個android系統而言,其本身就是一種外掛程式形式體現。根據上面關於邏輯和資源的讀取概述,完全是可以靜默實現的。其次,class.dex並沒有包含android sdk的**,只是保留對android sdk介面的呼叫。 可以這樣想象,android sdk即外掛程式框架,而android os即為整個外掛程式的宿主環境。因此這就可以解釋了,為什麼在1.x編譯的**,在2.x甚至3.x都可以執行,因為只要外掛程式宿主的介面(即android sdk)不變,外掛程式執行時所呼叫的介面都可以被找到。
ii. 為了減少記憶體占用,resource、assertmanager和layoutinflater必然不會把apk中的所有資源都載入進來,而是用時才載入並快取,而且還有一些的處理機制(如最不常用清除等)。因此這些類當中,必然存在乙個指明資源路徑的字段或者結構。
iii. 要保證相容性,外掛程式框架公開給外掛程式的介面,必須遵守open-close(開發-封閉)原則。另外,一些已經廢棄掉介面,同樣需要保留。比如service中的setforeground和jdk的中關於thread的一些介面等。
iv. 可以嘗試通過反射,修改resource、assertmanager和layoutinflater中指明資源路徑的字段;另外,還可以檢視原始碼,查詢設定資源路徑的方法。
記錄如何找到alinx新增的驅動檔案
比如最近在找需要新增的alinx 7511 encorder driver 那麼從kconfig裡入手,找device driver,之後在driver資料夾裡的kconfig中發現了device driver這個menu 然後找graphics support,從menuconfig裡面可以看到g...
如何在學習中找到樂趣?怎樣才能找到學習的樂趣
我們可以把學習比作談戀愛。把她當成你的戀人,這樣你就對她產生了興趣,然後你就會千方百計的想去了解她,在這追求之中會有很多的樂趣。學習也是一樣,只有不斷深入的學習,你就會發現很多有趣的東西。無論做什麼事情,上乘的境界是樂在其中。只有樂在其中,做事才能又快又好。很多作家,伏案耕耘,通宵不眠,渾然不知疲倦...
深度學習 如何找到優化模型的方向
高偏差 bias 的優化 高方差 variance 的優化 當訓練的模型的 準確率 accuracy 不高,如何尋找模型的下一步調優方向?通過對比訓練集與開發 測試 集的準確率,可以確定模型的偏差 bias 與方差 variance 問題,給下一步模型的優化提供方向指導。模型訓練前通常將資料集劃分為...