Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習之往系統應用中添加framework層的jar包

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

編輯:關於Android編程

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

因為缺少必要的包(源碼)----在連接的時候是以class文件來連接編譯的

以Systemeui為例:

\

缺少這個包\ <喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+0bDV0mFuZHJvaWTUtMLrtcTKsbryv8nS1NXStb3V4rj2sPyjujwvcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20150310/2015031008443375.png" alt="\">

知道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之類的了。

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