Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 如何穿越到android底層,穿越android底層

如何穿越到android底層,穿越android底層

編輯:關於android開發

如何穿越到android底層,穿越android底層


對於android開發,實際上大部分工作都是在應用層,但為了體現"技術含量",以及"知其所以然",以便在遇到問題是不至於束手無策。因此有必要了解底層的工作機制。

由於android是開源的系統,因此學習其內部的工作機制是非常容易的,目前也有一些關於android源碼分析的書籍。

我一直認為,應用層的開發和底層沒什麼太大的關系,不過有一次因為應用權限的問題,也算是對android framework層有一些了解了,借助一本源代碼分析的書籍了解android的工作原理並沒有想象中那麼困難。

與其他地方不同是本人使用了鮮為人知的代碼注入技術(並非依賴注入),對於具有root權限的android設備,只需要往系統進程中注入一個.so文件,再用這個.so文件去獲取jvm執行環境,就可以加載java代碼,這樣就將自己的java代碼注入到系統進程中。

注入java代碼以後就可以在framework層執行操作了,因此我們成功的從應用層穿越到android底層。

當然如果要在framework層執行自己編寫的代碼,直接替換系統文件也是可以的。一種方式是下載安卓源代碼,構建編譯環境,還有一種方式是對系統中的jar文件進行反編譯在編譯回去這也是可行的。參考(未測試):http://dss16694.iteye.com/blog/1436466

代碼注入參考:http://blog.csdn.net/jiangwei0910410003/article/details/40949475

當然替換系統文件和代碼注入都需要有root權限,最新的android默認啟用了SELinux,獲取root權限可能會遇到麻煩,因此最好是使用4.3以下的系統來研究。

android底層是基於linux的,系統開機後,首先運行的是linux,android的運行環境從app_process的可執行文件開始運行,由init.rc指定文件路徑以及啟動參數。app_process中啟動了jvm,隨後就進入了java的世界,java的程序都大部分都放在/system/framework文件夾下,與普通的jar包不同,這裡的java是基於dalvik。反編譯可以得到普通的jar文件,放在項目中可以作為lib使用,通過jar的函數調用系統的功能。

如果你想彈窗體出來玩玩可以參考這裡。
http://blog.csdn.net/innost/article/details/47660193
(這可不是一般的窗體)

dalvik虛擬機的內容,以及最新的art的內容請自行百度或谷歌進行了解。

關於android的系統的加載過程,以及各種系統服務相關的內容的分析,請參考安卓源碼分析的書籍。

從android系統的結構可以看出,android的很多代碼是用java實現的,而java是可以跨平台的,理論上只要讓啟動程序app_process以及相關的可執行文件能在windows等系統上運行,android就可以直接運行於windows等其他的操作系統上。

實際上這樣的移植已經有人實現了,Chrome ARC上就可以,雖然很多軟件還運行不起來,目前看到的有WindowsAndroid也是通過移植的方式來運行android而不是通過虛擬機,可能還有其他的。

不過我還沒有看到開源的項目,或者已經有這樣的開源項目我還沒有發現,如果有誰知道告訴我一下哈。

另外一個有意思的事件就是可以將android的UI,單獨拿出來,這樣就可以用開發安卓應用的方式開發桌面應用了,android的UI有現成的開發工具和眾多的開發人員。java中的swt以及swing都已經快要被遺忘了。

好了,先就說這麼多了,更多內容請關注我的微信公眾號:zhaojieTec

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved