odex與deodex

來源:互聯網
上載者:User

odex合并的方法:

1. smali-1.2.2.jar 和 baksmali-1.2.2.jar

http://code.google.com/p/smali/downloads/list

2 . 需要這個 apk 所在的 rom 裡面的一些 jar 檔案,都在 /system/framework 裡面: core.jar, ext.jar, framework.jar, android.policy.jar, services. Jar

當然,這五個是最基本的,有可能還不夠,這種情況下面會講到。(所以建議將/system/framework下的內容全部pull出來)

3. 總共分四步:

(1) 把下載好的 smali-1.2.2.jar 和 baksmali-1.2.2.jar ,還有 rom 裡面摳出來的 5 個 jar ,放到工作目錄,然後 apk 和 odex 也放到一起

(2) 分解 odex 檔案為 class 檔案。 命令: java -jar baksmali-1.2.2.jar -x xxx.odex,命令完成之後,會產生一個 out 檔案夾,裡面就是所有的 class 檔案

如果出現問題,比如什麼異常,缺少包什麼的,就更到 rom 裡面把出錯資訊裡面要求的包拿出來,放到目前的目錄下。

(4) 將 class 產生為 classes.dex 檔案。 命令: java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex 這一步應該不會有什麼問題,然後會產生 classes.dex 檔案。

(5) 把 classes.dex 放入apk 裡面,把蓋子蓋上。 最後這一步最簡單了,用解壓縮軟體開啟 apk ,然後把千辛萬苦產生的 classes.dex 塞進去,就 ok 了。

這個 apk 就能用了。如果想給他重新簽個名的話,去找個 Auto Sign 簽名工具簽署一下就行。 

Odex與deodex的區別:

開啟一個apk,裡面有很多個檔案夾和檔案,一般在layout負責介面,value負責字型顏色和文字顯示等。

odex是整個apk的核心部分,負責功能實現,deodex就是把odex檔案以classes.dex的形式和apk整合成一個檔案。

一般來說官方rom都是odex的rom,而定製rom大部分都是deodex化的。

兩者應該各有優點吧,貌似現在也沒有統一的說法。官方rom大部分每個apk對應一個.odex檔案,而deodex化的rom裡面只有一個apk,把.odex轉換成classes.dex放到apk包裡面了。

所以 odex  rom的.apk+.odex=deodex化rom的1個.apk  (簡單地來說,其實就上一個合并的過程)

== ODEX的優點 ==

1.刷完機首次進入系統的時間會縮短一些。檔案的運行速度應該也有所提升。

2.APK檔案不能單獨安裝,並且如果反編譯APK檔案,一般也只能得到資源檔。

可以說是起到一定的保護作用,避免被肆意修改和使用。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex檔案的apk是無法正常安裝的。

3.會增加一些可安裝應用的空間,雖然不是很多。(這個我沒發現)

== ODEX的缺點 ==

1.不方便修改ROM以及檔案本身。

2.增加ROM包的體積,雖然不是很多

3.當你升級某個被ODEX的應用後,這個應用將會出現故障,最常見的就是FC。

而現在的定製rom之所以基本上都是deodex化的是因為:

1. 可以適當減小檔案的體積,起到節省rom空間的作用;

2.主要方便rom定製者對rom的個人化定製和移植;apk相對容易反編譯和修改,而odex先要解包成smali然後才能產生classes.dex,如果要再產生odex,還要用dexopt-wrapper,比較麻煩。

我個人感覺,如果只是簡單的使用,不美化,不經常修改system/app下的檔案的人,對系統檔案進行ODEX化,應該是能起到一定的最佳化作用的,而現在大部分的安裝應用程式都是單個apk檔案,升級也不會有FC的問題。

== zipalign ==

在你的應用程式上運行zipalign,使得在運行時Android與應用程式間的互動更加有效率。因此,這種方式能夠讓應用程式和整個系統運行得更快。

在Android中,當資源檔通過記憶體映射對齊到4位元組邊界時,訪問資源檔的代碼才是有效率的。zipalign 可以簡單最佳化APP.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.