Android:製作Update.zip升級包 【轉】

來源:互聯網
上載者:User

標籤:命令列   樣本   nap   signed   ice   roi   x509   介紹   gre   

本文轉載自:http://zwkufo.blog.163.com/blog/static/2588251201382293049118/

很多時候廠商或者三方提供的ROM並不能滿足需求,比如系統內建軟體陳舊、缺少GMS軟體包(Google Mobile Service,包含了Gmail、GooglePlay等Google自家的常用軟體,很多使用者習慣用Gmail、用ContactsSync,所以通常會對這個服務包有比較強烈的需求),等等。

 在這種情況下,一種方法是使用者可以通過破解裝置、加Root許可權的方式去安裝/替換ROM中已有的應用;而另一種方法則是製作一個升級包(Update.zip),在Recovery模式下刷機升級——這種方式被Sony等很多廠商採用,因為它可以在不破解裝置或者加Root許可權的情況下順利升級系統內軟體或者其它資料。當然,這種方式要求用和被升級ROM一致的簽名檔案(Key)給升級包做簽名。 下面以製作GMS升級包為例(我想很多人的目的就是這個吧),介紹製作一個簡單Update.zip的過程:  1)建立一個目錄(例如,名為“update”的檔案夾)裡麵包含需要打包到Update.zip用來升級或者替換原有ROM的內容:

 

    update/    update/system    update/system/app    update/system/app/xxxx.apk    update/META-INF    update/META-INF/com    update/META-INF/com/google    update/META-INF/com/google/android    update/META-INF/com/google/android/update-binary    update/META-INF/com/google/android/updater-script在GMS包中,我包含了源碼Google提供的很多apk及Maps相關libs: 其中,updater-script是update.zip在釋放安裝時所需要的指令檔;updatebinary是指令檔所需要調用的函數庫,這個檔案可以從ROM中提取,或者從 >>>> 這裡 <<<< 下載使用。  2)編寫updater-script目前廣泛使用的是Edify指令碼(updater-script和update-binary);很久以前還有Amend指令碼(update-script),現在已經不再支援:所以如果有看到名為update-script的指令碼樣本,一般已經沒有用了可以無視。仍然以GMS為例,遞迴地Copy升級包中的檔案到裝置相應的目錄中:

 

ui_print("***********************************************");ui_print("               GMS for Beta User               ");ui_print("***********************************************"); show_progress(1, 3); mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system");package_extract_dir("system", "/system");set_perm_recursive(0, 0, 0755, 0644, "/system/app");set_perm_recursive(0, 0, 0755, 0644, "/system/etc/permissions");set_perm_recursive(0, 0, 0755, 0644, "/system/framework");set_perm_recursive(0, 0, 0755, 0644, "/system/lib");set_perm_recursive(0, 0, 0755, 0644, "/system/media");set_perm_recursive(0, 0, 0755, 0644, "/system/usr");unmount("/system"); ui_print("GMS update complated.");上面“/system”的掛載點因裝置而異。關於Edify指令碼文法和函數的介紹,網上有很多資料,有興趣可以再搜尋看看是否能符合你客制化的需求。  3)打壓縮包壓縮包可以用壓縮公用程式,也可以用下面的命令列來做。但是要保證壓縮包內的根目錄下就有META-INF: 如果是Ubuntu一類的Linux環境下用“zip”命令做壓縮包,則需要在步驟(1)的根目錄中使用命令:

$ zip -qry ../update_unsigned.zip ./

  4)給壓縮包簽名使用下面的命令為上一步驟中產生的update_unsigned.zip做簽名:

$ java -Xmx512m -jar signapk.jar -w releasekey.x509.pem releasekey.pk8 update.unsigned.zip update.zip

其中:-Xmx512m:指定了java最大記憶體堆棧,我的包比較大512不夠用,設定成4096就成功;signapk.jar:簽名工具,在源碼中可以找到(/prebuilts/sdk/tools/lib/signapk.jar),或者從 >>>> 這裡 <<<< 下載。下載連結中的檔案基於Android4.3提取,不一定是通用的。releasekey.x509.pem releasekey.pk8:這兩個就是現有ROM發布時對應的簽名Key,因裝置/ROM而異。  5)應用update.zip升級包至此,升級包已經製作完畢。將簽過名的update.zip包放入SD卡或者其它能被訪問到的目錄(有些裝置可能要求SD卡根目錄),重啟裝置並進入Recovery模式,找到update.zip並升級(有些裝置可能直接有“apply update.zip”的選項),成功後重啟手機。

Android:製作Update.zip升級包 【轉】

相關文章

聯繫我們

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