怎麼編譯卡刷包刷機腳本
① 如何修改製作卡刷包 安卓卡刷包製作教程
在此先要明確聲明一下:
依照此做法出現您的手機出現任何問題,概不負責的喔!!
英文好的朋友,可以直接看英文官方的參考網站即可:
只用android源代碼做一些簡單實驗的朋友可以參考下面這幾個網站:
說起android刷機包,聽起來非常神秘,實際上它僅僅是一個經過數字簽名的zip壓縮包而已。如果要自己製作刷機包,則必須了解刷機包的基本工作原理,偶首先從android系統的啟動說起:
android系統啟動的時候,首先會進行一些諸如硬體自檢之類的操作,這些操作完成以後(至少它應該知道當前的機器有沒有電),會檢查一下當前手機按鍵的狀態(接下來就是所謂刷機模式切換了,不同的android手機有不同的按鍵組合用來進入刷機模式),如果此時按鍵狀態處於刷機組合,那麼系統會調用ROM裡面的一個叫做recovery的程序(這時就是進入了所謂的刷機程序了,它只是一個工具性質程序,用於檢查刷機包的完整性和數字簽名的合法性。對於目前大多數root過的機器而言,數字簽名的合法性都不會成問題,然後由recovery程序將刷機包進行解壓,然後把刷機包裡面的文件寫入到ROM中去,以此完成刷機過程);如果此時按鍵沒有標明是刷機模式,那麼系統會創建內存檔,開始從ROM裡面載入相應的文件系統,並把相關的文件拷貝到內存檔中,進而引導linux啟動,然後是啟動虛擬機dalvik,然後就是創建工作進程載入和運行framework,然後就會看到待機的畫面。當然在這個過程中還發生了許多事情,啟動了許多服務,為了簡化起見,對於啟動過程偶只講解到此,感興趣的朋友可以自己結合著linux的啟動過程加以對比來學習。
現在來總結一下,實際上刷機包就是一個ROM文件的壓縮包,進入刷機模式後,recovery程序會把刷機包裡面的文件寫入ROM存儲區替換ROM存儲區的原有文件;當下次啟動手機的時候,會從ROM中載入剛剛替換過的文件,並利用這些文件來啟動和運行系統。這就是刷機包的全部功能和作用,看不懂的朋友可以反復看幾次,刷機的本質就是文件的覆蓋和替換操作,偶相信各位一定能看懂!
OK,現在大家已經知道ROM文件的zip壓縮包就是所謂的刷機包。製作刷機包的過程就是准備這些文件,然後重新把這些文件壓縮成一個zip包的過程,在製作的最後,使用簽名工具簽個名,就可以測試和發布刷機包了。雖然說起來就是一句話的事情,但是實際上准備這些文件的過程是非常痛苦和漫長的。
那麼update.zip壓縮包裡面的都包含哪些文件?這些文件又都是如何做出來的呢?hoho,現在開始漸漸接觸到問題的本質了,解壓縮這個update.zip壓縮包以後我們可以看到兩個目錄和一個文件:
boot.img <---文件,這是編譯內核源代碼生成的內核映像,然後與android源碼編譯出來的ramdisk.img一起通過mkbootimg工具創建出來的,圖省事的朋友也可以從網上其他的刷機包裡面拷貝一個能用的出來即可,基本上都差不多。
META-INF <---目錄,這個目錄是手工創建的,主要用來存放一個升級腳本update-script(這個腳本的內容與system目錄中包含的文件有很大關聯)以及保存若干刷機包內的apk文件的簽名。
system <---目錄,這個目錄就是編譯android的平台源代碼生成的,
其實最好的學習方式就是把現在互聯網上的那些update.zip包給解包,然後自己一個一個文件地看和分析,然後修改,嘗試做自己的刷機包。
對於這個boot.img,基本思路是編譯android kernel代碼,生成內核image然後利用mkbootimg感興趣的朋友可以參考下面這兩個wiki網站:
下面的做法偶都是在linux下面完成的(slackware 13.1):
(1)下載和編譯android的源代碼,具體過程不再贅述
如果各位還不知道repo sync之類的命令的話,可以參考網上的關於下載android源代碼以及編譯的文章,據偶所知這些文章非常豐富。編譯之前一定要注意平台的選擇,不同平台的驅動程序是不一樣的!這些參數可以通過:
$ cd android-src <---進入android的源代碼目錄
$ . build/envsetup.sh <---設置環境變數,運行完畢後,你可以輸入一下help命令,看看google的團隊提供了多少有用的便利命令,這對於我們以後修改代碼重新編譯非常有幫助。
$ lunch generic-eng <---開始配置android的源代碼的編譯選項
運行上述命令後會看到如下輸出:
wayne@wayne:~/android-src$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ECLAIR
============================================
$ make -j2 <---只有單核的CPU的朋友可以嘗試此參數,雙核的朋友可以試試-j3,否則就老老實實運行make即可。
然後就是一個漫長的等待,這個時間大概有1-2小時左右(偶的機器比較慢),完全編譯完畢以後硬碟的佔用大概需要8個G左右。
(2)編譯完成以後,進入wayne@wayne:~/android-src/out/target/proct/generic目錄,應該會看到如下的文件:
android-info.txt
data
obj
ramdisk.img
sdk
system
userdata.img
clean_steps.mk
installed-files.txt
previous_build_config.mk
root
symbols
system.img
這里的system.img是不是很眼熟?!對拉,這個就是刷機包裡面好像也有一個叫做什麼system的目錄,那麼這個system.img裡面都有什麼呢?這裡面的東西其實就是當前目錄下的一個叫做system的目錄裡面的內容了,只是保存成了yaffs文件系統的格式。我們可以通過unyaffs工具來把system.img給解開來看看,就明白偶說話了。
unyaffs的代碼下載地址為:
在linux下編譯方法非常地簡單,只需要下載源代碼,然後運行:$ gcc -c unyaffs.c
$ gcc -o unyaffs unyaffs.o
即可生成這個unyaffs的解包工具,利用這個工具就可以把自己生成的system.img進行解包,然後修改裡面的內容了。
unyaffs使用方法非常簡單:
$ unyaffs system.img [回車]
即可將system.img解包成一個叫做system的目錄,裡麵包含了整個android的文件系統
(3)剛剛開始,不適合一切從頭來,還是老實一些,先從修改別的大牛們做得刷機包開始吧
首先拷貝一個從網上下載下來的刷機包,然後找一個目錄解壓縮(當然,這是最保險的做法,自己做這些目錄也沒有任何問題,只是比較費時間而已)
$ unzip xxxxxx.zip <--- 這個xxxxx.zip就是從網上下載的某刷機包(一定要跟你的代碼版本基本一致喔,偶在這里用的是2.1的刷機包)
(4)替換原有的system目錄
解壓縮刷機包以後,會看到在開篇的時候提到的兩個目錄,一個文件:
boot.img
META-INF
system
好了,可以把system目錄拷貝到別的路徑下備份一給,防止這些修改發生別的問題。然後把wayne@wayne:~/android-src/out/target/proct/generic這個目錄下面的system拷貝到當前的工作目錄下。注意,這個system目錄裡面有很多「符號鏈接」指向了toolbox。這些鏈接其實沒啥用,可以通過後面的update-script自動進行創建的,因此,需要用一個腳本把這些鏈接都刪掉。
可以參考:
這個網頁附件給出來的DeleteExtras.txt改寫成一個DeleteExtras.sh腳本來清除這些符號鏈接。
(5)修改update-script腳本
修改META-INF/com/google/android目錄下的那個叫做update-script的腳本,只要修改一下即可,主要是刪除一些不存在的文件以及增加一些文件的許可權之類的定義(語法十分清晰,一目瞭然)。把需要「預裝」到刷機包裡面的apk安裝程序都准備好,將這些apk拷貝到system/app目錄下即可。那個boot.img能不改就不改,因為這東西涉及到驅動和內核的問題,出了問題刷機包就啟動不了了。
② ROM製作工具如何製作手機刷機包
具體步驟如下:
③ 如何提取手機的rom做成卡刷包
你試試以下方法:操作方法:
1、 下載bootimg.exe 放到D盤。
2、 把要提取的ROM包里的boot.img提取出來 放到bootimg文件夾目錄。
3、 運行cmd系統命令,進入D: bootimg目錄(D盤的話 先d: 然後再cd bootimg),接著輸入bootimg --unpack-bootimg。 解開bootimg文件,得到kernel和ramdisk.gz兩個文件,ramdisk.gz文件可以刪除。
4、把kernel文件改名為zImage。
5、找一個老版本的內核文件包,然後用zImage、bcm4329.ko分別替換老版本內核文件包中的同名文件, 路徑是: kernel/zImage 和system/lib/moles。
6、老內核隨便改什麼名字。刷機包裡面的META-INF裡面是簽名和刷機用的腳本什麼的。com/google/android/ updater-script文件是刷機時顯示的文字,用notepad打開,ui_print(" ")括弧裡面可以改成隨意文字,然後關閉保存,再就是可以刷進去了。希望幫助你
④ 請教,刷機包裡面的腳本updater-script文件怎麼編輯
廚房轉換出來的語法是錯誤的,自己可以對照著修改一下,不過相關的教程比較少,我也還在研究,如果你是修改別人做好的卡刷包,那比較簡單,自己添加幾句和自己添加的文件對應的就可以了,如果是從官方線刷包生成的,那要一個個的去看增加什麼文...
⑤ 卡刷法刷機的通用步驟。
卡刷教程
准備工作:
1.確認你的手機可以進入cwm刷機模式。(不能的話去網路搜索XX機 cwmRecovery教程)
2.將你的固件包復制入內存卡(註:是內置的內存卡)
(刷機前請先備份,確保手機電量充足。)
===================================================================
開始刷機:
1、關機。進入cwm刷機模式(方法:各不同:電源鍵+音量加+home(三星))
如圖:(顏色不一定)
刷完後重啟~ok完成
===================================================================
最後,附上部分cwmRecovery翻譯
一:CWMRecovery主界面
*rebootsystemnow:重啟手機(刷機完畢選擇此項就能重新啟動系統)
*applySDcard:update.zip:安裝存儲卡中的update.zip升級包(你可以把刷機包命名為update.zip然後用這個選項直接升級)
*wipedata/factoryreset:清除用戶數據並恢復出廠設置(刷機前必須執行的選項不過類似O大的rom自動wipe那就不用了)
*wipecachepartition:清除系統緩存(刷機前執行)(系統出問題也可嘗試此選項,一般能夠解決)
*installzipfromSDcard:從SDcard上安裝zip升級包(可以執行任意名稱的zip升級包,不限制升級包名稱)
*backupandrestore:備份和還原系統(作用和原理如同電腦上的Ghost一鍵備份和還原)
*mountsandstorage:掛載和存儲選項(詳細功能見下面的解釋)
*advanced:高級設置
二:backupandrestore功能詳解
*Backup:備份當前系統
*Restore:還原上一個系統
*AdvancedRestore:高級還原選項(用戶可以自選之前備份的系統,然後進行恢復)
三:mountsandstorage功能詳解
*mount/system:掛載system文件夾(基本用不到)
*mount/data:掛載data文件夾(基本用不到)
*unmount/cache:取消cache文件夾掛載(基本用不到)
*unmount/sdcard:取消內存卡掛載(基本用不到)
*mount/sd-ext:掛載內存卡Ext分區(基本用不到)
*formatboot:格式化boot(刷機前最好執行一下)(rom中沒有含boot.img的,不能格式化)
*formatsystem:格式化system(刷機前最好執行一下)
*formatdata:格式化data(刷機前最好執行一下)(要想保住原來的軟體,這個就不要格式化,不過可能會有一些軟體在格式化後無法使用)
*formatcache:格式化cache(刷機前最好執行一下)
*formatsdcard:格式化內儲卡(執行此項你會後悔的)
*formatsd-ext:格式化內存卡Ext分區(執行此項你會後悔的)
*mountUSBstorage:開啟Recovery模式下的USB大容量存儲功能(也就是說可以在Recovery下對內存卡進行讀寫操作)
四:Advance功能詳解
*RebootRecovery:重啟Recovery(重啟手機並再次進入Recovery)
*WipeDalvikCache:清空虛擬機緩存(可以解決一些程序FC的問題)
*WipeBatteryStats:清空電池調試記錄數據(刷機前做下這個,會比較好,感覺自己電量有問題的機油也可以試試)
*ReportError:錯誤報告(配合固件管家用的,不是開發者請無視)
*KeyTest:按鍵測試(基本沒撒用的功能!)
*PartitionSDCard:對內存卡分區
*FixPermissions:修復Root許可權(如果你的手機Root許可權出問題了,可以用這個功能)
⑥ 誰會用apktool製作卡刷包,進來教下
卡刷包製作方法很簡單: 首先我們需要准備這些東西: ①一個空的卡刷包,我們可以往裡面放東西 ②一個刷機腳本,這個腳本告訴recovery應該怎麼用這個包 ③卡刷包簽名工具。不簽名的刷機包刷入後是不穩定的。 這些東西都在教程里給你准備好了。 呵呵,大冷天手有些抖,見諒啊。 首先,我們要配置java環境。這一步可能有些繁瑣,但是這是以後更高級製作的基礎。 ①打開教程里附帶的JDK1.7下載地址並下載JDK1.7 ②下載完畢後,打開教程里附帶的配置java環境教程,按照教程配置java環境 p.s.本人已經配置完成了,這里就不再配置一遍了,請大家按照教程做。 第二,美化卡刷包的製作。這里僅僅教給大家的是一個最簡單的美化包的製作,更難的請自行學習:) ①解壓縮那個空包,我們可以看到有兩個文件夾:META-INF和system。 meta-inf是簽名信息和刷機腳本的地址。什麼是簽名信息呢?如果你對卡刷包進行簽名,那麼你簽名的信息都會存放在這里。 system就對應手機上RE管理器直接打開拖到最下面的system,也就是美化主要修改的位置。 ②打開system文件夾,可以看到兩個文件夾:app和framework。相信做過美化的機油都很熟悉,app放SystemUI.apk,framework放framework-res.apk。 ③把手機上的SystemUI.apk和framework-res.apk提取出來,進行美化。具體的方法請網路一下。這里我准備了兩個已經美化完成的文件,一並打包在教程里。 ④把SystemUI.apk放入app文件夾,把framework-res.apk放入framework文件夾。到這里就完成了美化部分的製作。 p.s.剛剛把SystemUI.apk放入app的時候我用了一個粘貼的快捷鍵(Ctrl+v) 第三,刷機腳本修改與刷機包簽名。 注意:完成刷機包簽名必須配置好java環境!! ①下載Notepad++並安裝,教程里有下載地址。我已經下載安裝完畢了,這里就不再下載安裝 ②用Notepad++打開updater-script。 ③我們主要修改第一行的「ui_print("This is an update KSB.");」 我來解釋一下,這行代碼分三個部分。 1-命令。命令是ui_print。這個的意思是讓recovery在屏幕上打出一行字。 2-命令參數。參數是"This is an update KSB."(註:包括那兩個引號!)這是告訴上面那個參數應該打什麼字出來。我們可以隨意更改引號內的內容,但不能有中文。比如,我改成我的馬甲,y=ax2+bx+c,再來個製作(made by) 3-結束符。就是分號(;)。這告訴recovery這一行執行完畢了。 ④修改完成,我們保存這個文件,關閉Notepad++。 ⑤把這個文件復制到META-INF\com\google\android文件夾,替換裡面的文件。 ⑥將META-INF和system用winrar打包。壓縮格式一定要選zip!!!壓縮方式一定要選標准!!! ⑦解壓並安裝刷機包簽名軟體。這里為了方便我已經裝好了。 ⑧右擊打包好的文件簽名。你看他自己在簽名,一會兒就好了。 至此製作完成!
⑦ 怎樣用卡刷包刷機
【刷機教程】
介紹兩種方法(卡刷包一般數量多,可選擇性也較多,並且比線刷包更容易操作)
(1)一鍵刷機。
使用刷機軟體一鍵刷機,例如奇兔刷機,很簡單,雙清備份不需要自己動手。
(2)卡刷
按常規卡刷流程刷入即可,注意刷第三方rec,刷入包之前要雙清,電池電量保持在50%以上,可用內存!
卡刷步驟如下:
第一步:導入第三方Recovery(想刷第三方rom,第三方 Recovery不可或缺;如果前面已經刷過三方recovery,就不需要再刷了)。
第二步:刷第三方ROM包(卡刷)
1. 下載本ROM包,無需解壓,復制到SD卡根目錄或者內置卡;
2. 進入Recovery模式
2.1 關機狀態下,按住 音量上+開機鍵開機,並按住兩鍵不放,直到進入Recovery;
2.2 開機狀態下,選擇「重新啟動」後,按住音量鍵上不放,即可進入 recovery模式;
3. wipe data/factory reset(清空所有數據) (音量鍵控制上下,電源鍵確定,以下同)
4. Yes
5. wipe cache partition(清空緩存數據)
6. Yes
7. install zip from sdcard(從SD卡選擇刷機包)
8. choose zip from sdcard(從SD卡選擇ZIP文件)
9. 找到安裝包,開刷
10 最後選擇重啟手機,恭喜刷機成功! (刷機完成第一次開機時間較長,請耐心等待)
⑧ 怎麼在手機上製作刷機包
.
目前有好幾種方法來安裝軟體或是庫文件到你的Android手機上。你可以使用市場程序來查找並安裝軟體,也可以使用adb命令行工具來安裝或是發送文件到你的Android文件系統中。這些方法對於操作單個文件來說都挺方便的,但是如果你需要一次性安裝多個軟體或是庫文件時,那麼最為方便的方法大概就是使用update.zip(也就是刷機包)文件了。Android系統使用恢復工具(recovery)來安裝這個update.zip文件中的軟體或庫文件到Android文件系統中。而一個ROM或是主題開發者通常都是使用這個方式來發布他們的作品(刷機包)。
創建一個update.zip文件是很簡單的事情,你所需要做的就是將文件放置到與Android文件系統中相對應的文件夾中,然後編寫一個用來復制這些文件到手機對應位置的update-script文件。作為舉例,本文會安裝Calculator.apk到system/app文件夾,復制libsec-ril.so文件到system/lib文件夾:
新建一個空文件夾(本文例:C:\mumayi)
新建用來放置Calculator.apk的文件夾C:\mumayi\system\app以及用來放置libsec-ril.so的文件夾C:\mumayi\system\lib。
創建用來放置update-script文件的文件夾C:\mumayi\META-INF\com\google\android。
創建一個名為update-script的文件,其內容如下(高亮部分):
行1和行5:顯示進度條
行3:復制刷機包中的system文件夾到Android的/system
注意:你應該在文件的最末尾多添加一個空行(也就是行6)
將C:\mumayi壓縮中的所有內容壓縮為zip包(千萬記住:是壓縮mumayi這個文件夾中的內容,不是mumayi文件夾本身)
為mumayi.zip簽名
簽名命令:java -jar signapk.jar certificate.pem key.pk8 mumayi.zip update.zip
將update.zip文件復制到SD卡中,然後手機進入recovery界面來刷入這個刷機包
進階學習:(以下僅作參考,因實際情況不同,可能會有一定的出入。但是極度推薦學習本部分)
update-script 語法參考(在Android源碼的recovery.c文件中定義):
_dir
語法:_dir <源目錄> <目標目錄> [<時間戳>]
描述:復制<源目錄>中的內容到<目標目錄>中。如果<源目錄>中沒有同名文件進行覆蓋,那麼<目標目錄>中的原始內容會仍然存在不變。
示例:_dir PACKAGE:system SYSTEM:,這個命令會把刷機包中的system文件夾復制到手機的/system文件夾中
format
語法:format <根目錄>
描述:格式化一個分區。
示例:format SYSTEM:,這個命令會格式化整個/system。注意:格式化時所進行的數據刪除操作是不可逆轉的。
delete
語法:delete <文件1> [... <文件N>]
描述:刪除文件。
示例:delete SYSTEM:app/Calculator.apk,這個命令會刪除手機system/app文件夾中的Calculator.apk文件。
delete_recursive
語法:delete_recursive <文件或目錄1> [... <文件或目錄N>]
描述:刪除一個文件或遞歸刪除某個文件夾(也就是包括該文件夾中的所有內容)
示例:delete_recursive DATA:dalvik-cache,這個命令會刪除/data/dalvik-cache文件夾以及該文件夾中的所有內容。
run_program
語法:run_program <執行程序> [<參數> ...]
描述:運行一個刷機包中的外部程序。
示例:run_program PACKAGE:install_busybox.sh,這個命令會執行刷機包中的install_busybox.sh腳本(命令行)。
set_perm(本命令中涉及的數值,如有疑惑,請自行Google。uid=user id,gid=group id)
語法:set_perm <uid> <gid> <屬性> <路徑> [... <路徑N>]
描述:設置某個文件或是指定的整個目錄樹的所有者和許可權,就像是一個『chmod』、『chown』、以及『chgrp』命令的集合體。
示例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh,這個命令會設置手機上system分區中etc/init.goldfish.sh文件的用戶組為:shell;用戶為:root;許可權為:所有者以及所屬用戶組成員可以進行讀取和執行操作,其他用戶無操作許可權。
set_perm_recursive(本命令中涉及的數值,如有疑惑,請自行Google。uid=user id,gid=group id)
語法:set_perm_recursive <uid> <gid> <文件夾屬性> <文件屬性> <路徑> [... <路徑N>]
描述:遞歸設置某個文件夾中所有內容的所有者和許可權
示例:set_perm_recursive 0 0 0755 0644 SYSTEM:app,這個命令會遞歸設置手機上system/app文件夾以及其所有內容的用戶組為:root;用戶為:root;app文件夾的許可權為:所有者可以進行讀、寫、執行操作,其他用戶可以進行讀取和執行操作;app文件夾下的所有文件的許可權為:所有者可以進行讀寫操作,其他用戶可以進行讀取操作。
show_progress
語法:show_progress <小數> <持續時間>
描述:為下一個操作在屏幕上顯示一個進度條,自動的根據<持續時間>指定的秒數來遞增進度條狀態(如果實際上進度條的推進是可以確定的,那就會更加迅速)。
示例:show_progress 0.1 0,這個命令是指,操作完成後,進度條前進0.1(10%)
symlink
語法:symlink <鏈接目標> <鏈接所在路徑>
描述:創建一個符合鏈接(就像是 『ln-s』)。<鏈接所在路徑>的格式類似於這樣:根目錄:路徑, 但是<鏈接目標>則是指目標文件(而且位置可能是相對與鏈接所在路徑的)
示例:symlink /system/bin/su SYSTEM:xbin/su,這個命令會為/system/bin/su在手機system分區的xbin文件夾下創建一個符號鏈接,名為su
⑨ 如何製作華為手機的刷機包
不建議手機刷機的。
1:刷機後,手機有可能無法達到最佳工作狀態的,部分功能可能無法正常運行的。同時由於第三方固件未經充分測試可能會存在兼容性不好、系統易受病毒入侵等問題的。
2:刷機會帶來無法預料的負面影響,一定要謹慎操作的。如果設備不能正常使用,並且無法恢復的話,是需要自行承擔風險的。
⑩ 手機刷機包如何製作自己如何製作刷機包
一、准備ROM包
說明:
本工具支持ROM卡刷包和線刷包,支持常規,dat和img格式的刷機包
如果找不到ROM,也可以 選擇線上ROM 直接下載ROM進行修改。