合并apk和odex的方法

來源:互聯網
上載者:User

Android的ROM中有很多odex檔案,相對於APK中的dex檔案而言這個odex有什麼作用呢? 如果你仔細觀察會發現檔案名稱時一一對應的,同時那些對應的apk檔案中沒有dex檔案。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex檔案的apk是無法正常安裝的,而廠商直接將odex和不完整的apk檔案放到手機rom固化到/system/bin中可以讓一般使用者無法正常匯出使用

可能想到的是合并odex和apk變成apk中包含dex檔案的,這樣合并後最終apk檔案安裝在/data/中,而rom存放在 /system/app中,所以最終導致了使用者可裝在Android手機中的軟體會變少,佔用系統空間。

  一、APK產生odex檔案方法:

  編譯開源GIT上的build/tools/dexpreopt/dexopt-wrapper這個,使用dexopt-wrapper即可,操作步驟

  將dexopt-wrapper放到/data/local目錄中,使用adb shell執行linux命令列,使用cd命令進入/data/local目錄,

  cd /data/local

  ./dexopt-wrapper android123.apk android123.odex

二、合并odex和 少dex的apk 為完整的apk檔案

  1. 下載 http://smali.googlecode.com/files/smali-1.2.2.jar 和 http://smali.googlecode.com/files/baksmali-1.2.2.jar,既然是需要盜版,還需要odex所在rom中的一些引用類,一般在 /system/framework 目錄中

  2 .  通過odex產生class檔案

          java -jar baksmali-1.2.2.jar -x android123.odex

        執行完上面這行命令後,會產生一個out 檔案夾裡面是android123.odex的class檔案。出現問題,根據提示可以從rom的 /system/framework 中的**.jar放到pc上的java環境變數中一起產生。

  3. 通過class產生classes.dex 檔案。

        java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex

  4. 將classes.dex放到apk檔案

        因為apk是zip的mime編碼類別型,使用winzip或winrar直接拖入到apk改名為zip的壓縮包中即可。

  5. 不要忘記了簽名,使用jdk中的arsigner和keytool打包重新簽名即可。

 

有時候發現別人手機裡有一款 apk 挺好,想弄出來裝自己手機上,可是卻發現那個 apk 是殘缺的,裡面沒有 classes.dex 檔案,卻有個跟 apk 同名的 odex 檔案。殘缺的 apk 是裝不了的,只能把這個 apk 跟 odex 合并成一個完整的 apk 才能安裝。

需要的工具:

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

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

當然,這五個是最基本的,有可能還不夠,這種情況下面會講到。

總共分四步:

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
處是你要分解的 odex 檔案的名字,命令完成之後,會產生一個 out 檔案夾,裡面就是所有的 class 檔案。如果出現問題,比如什麼異常,缺少包什麼的,就更到 rom 裡面把出錯資訊裡面要求的包拿出來,放到目前的目錄下。

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

4. 把 classes.dex 放入 apk 裡面,把蓋子蓋上。
最後這一步最簡單了,用解壓縮軟體開啟 apk ,然後把千辛萬苦產生的 classes.dex 塞進去,就 ok 了。這個 apk 就能用了。如果想給他重新簽個名的話,去找個 Auto Sign 簽名工具簽署一下就行。

聯繫我們

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