Android學習之往系統應用中添加framework層的jar包

來源:互聯網
上載者:User

標籤:android   framework   包   

Framework中的app為什麼在編譯的時候需要到源碼中編譯:

因為缺少必要的包(源碼)----在串連的時候是以class檔案來串連編譯的

 

以Systemeui為例:

 

缺少這個包

尋找android源碼的時候可以找到這個包:


知道framework在編譯的時候會打包自己的java源檔案,於是在打包的out檔案中尋找打包的這個 :其實也是能夠找到的:


還有很多Permission denied(當然這是在別人許可權下的尋找……)

 

當然最後找到了


裡面的jar包:


開啟jar包裡面是classes的dex檔案:


但是dex檔案暫時不知道怎麼開啟,因此搜尋到此結束。但是大致理解為:

在framework中有一些不需要作為對外介面調用的源碼包,都以dex這種直接在android系統上跑的檔案格式被已經編譯過了,所以在eclipse中直接編譯的時候就缺少必要的包,這些包因為不需要對外開放,已經被打包成了更徹底的dex檔案,只是保證運行,而不對外開放 

/****************************/

反駁以上觀點


已經證實了,並不是被編譯成為了所謂的更徹底的dex檔案,而是在sdk中標註了@hide所以在源碼編譯中是有該api而sdk中沒有。因此可以通過更換sdk 中的api來達到效果。

 

看組圖吧!

同樣是在尋找 這個類。當然這次完成的項目中就是:

 

這種情況是為何呢?

程式當然是可以跑起來的,運行也沒有問題。

具體操作步驟:(替換sdk中的android.jar包)

源碼中編譯的framework層的jar包檔案

 

Sdk中的android.jar中的android檔案(應該也基本上就是framework層的jar包)

 

兩個檔案中源碼中的android檔案夾要較於sdk中的大很多。這應該是很多源碼中的類檔案,及一些jar包被屏蔽或者hide掉了。打上了hide的標籤。這樣應該基本上是可以開發lancher或者setting之類的了。

Android學習之往系統應用中添加framework層的jar包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.