綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[教程] 讓你的 ROM 支援 init.d 開機腳本自動運行!!!

[複製連結] 查看: 24274|回覆: 12|好評: 6
跳轉到指定樓層
樓主
monitorstudio | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-7-26 14:51

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 monitorstudio 於 2014-1-11 17:57 編輯

init.d 是一個資料夾,位在 /system/etc/init.d,init.d 是用來存放 Unix/Linux shell scripts 的資料夾,支援 init.d 的內核會在開機時自動執行存放在此資料夾裡的腳本(Unix/Linux shell script),而這些腳本可以達到強大的效果,通常用來優化系統或達到系統的自動化處理,然而原廠的內核幾乎都是不支援 init.d 的,現在我們要手動開啟支援!
方法很簡單,在你的 ROM 的 /system/etc 裡創建一個新檔案"install-recovery.sh"並用文字編輯器開啟 install-recovery.sh,輸入以下指令:
  1. #!/system/bin/sh
  2. until [ -e /system/etc/init.d ]; do mkdir /system/etc/init.d;
  3. done;
  4. chmod 755 /system/etc/init.d
  5. chown root.root /system/etc/init.d
  6. chmod 755 /system/etc/init.d/*
  7. chown root.root /system/etc/init.d/*
  8. busybox run-parts /system/etc/init.d
複製代碼
然後在你的 ROM 的 updater-script 裡加入以下指令
  1. set_perm(0,0,0755,"/system/etc/install-recovery.sh");
複製代碼
記得任何你所創建/修改的檔案都要改為 Unix/Linux 格式,否則無法使用
可用 Notepad++ 來修改檔案格式


好啦,現在你的 ROM 已經支援 init.d 了,我們可以撰寫一些腳本來讓手機開機時自動運行,只要將腳本儲存成任意名稱,並存放在 /system/etc/init.d 開機時就會自動運行

1.zipalign 腳本
zipalign 透過重新編排 apks 的資源檔案來達到更快捷的運作效能
我們通常把腳本儲存為 /system/etc/init.d/90zipalign
記得格式也要是 Unix/Linux 格式喔!
  1. #!/system/bin/sh

  2. LOG_FILE=/data/zipalign.log
  3.     if [ -e $LOG_FILE ]; then
  4.             rm $LOG_FILE;
  5.     fi;
  6.            
  7. echo "Starting Automatic ZipAlign $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $LOG_FILE;
  8.     for apk in /data/app/*.apk ; do
  9.         zipalign -c 4 $apk;
  10.         ZIPCHECK=$?;
  11.         if [ $ZIPCHECK -eq 1 ]; then
  12.                 echo ZipAligning $(basename $apk)  | tee -a $LOG_FILE;
  13.                 zipalign -f 4 $apk /cache/$(basename $apk);
  14.                         if [ -e /cache/$(basename $apk) ]; then
  15.                                 cp -f -p /cache/$(basename $apk) $apk  | tee -a $LOG_FILE;
  16.                                 rm /cache/$(basename $apk);
  17.                         else
  18.                                 echo ZipAligning $(basename $apk) Failed  | tee -a $LOG_FILE;
  19.                         fi;
  20.         else
  21.                 echo ZipAlign already completed on $apk  | tee -a $LOG_FILE;
  22.         fi;
  23.        done;
  24. echo "Automatic ZipAlign finished at $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $LOG_FILE;
複製代碼
接著把 zipalign 需要用到的 binary 複製到 /system/bin下載 zipalign binary,並修改全限為三讀一寫三執行
即 755
或刷機腳本語法
  1. set_perm(0,0,0755,"/system/bin/zipalign");
複製代碼
也可以用終端機指令
  1. chmod 755 /system/bin/zipalign
複製代碼
或是直接用檔案瀏覽器修改
V V V
V     V
V     V
你的手機已經會在開機時自動 zipalign 優化嘍!


「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 10碎鑽 +15 經驗 +3 幫助 +26 技術 +5 收起 理由
紅至黃 + 1 + 1 感謝樓主~我有一些疑問還請樓主解答~.
iamernie8199 + 3 + 1 + 5 + 1 太神啦!!!
apkcat + 1 偶像,看完你的內容,讓我找到了活著的意義.
bland + 1 + 1 非常讚
tonking0331 + 1
RainOpera + 3 + 5 + 1 很給力!
louis860421 + 3 + 2 + 5 + 2 很給力!
rsps1008 + 3 + 1 神馬都是浮雲
daniel199904 + 3 + 3 讚一個!
k0981465867 + 1 非常讚

查看全部評分

收藏收藏27 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
daniel199904 | 收聽TA | 只看該作者
發表於 2013-8-4 04:55
本帖最後由 daniel199904 於 2013-8-4 04:59 編輯

在這邊請教兩個問題
1.如果說核心有支援(已刷機
再照上面的方法
手機會不會葛闢
2.一定要用刷機才有辦法,還是說創建檔案(install-recovery.sh)改權限就可以
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| monitorstudio | 收聽TA | 只看該作者
發表於 2013-8-4 06:38

1.不會的,只是你的腳本會被跑兩次...
2.只要權限對就好了,只是因為這裡是 ROM 的版,所以想說給刷機腳本比較好,沒有表達清楚
抱歉...
install-recovery.sh 的權限:
V V V
V     V
V     V

  
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
daniel199904 | 收聽TA | 只看該作者
發表於 2013-8-4 07:03
monitorstudio 發表於 2013-8-4 06:38
1.不會的,只是你的腳本會被跑兩次...
2.只要權限對就好了,只是因為這裡是 ROM 的版,所以想說給刷機腳 ...

感謝,我懂了
不過我是要做刷機包(那問屁啊)
跑兩次......這樣不是會很"慢"

點評

呃... 應該是開機速度會有一點差別吧  發表於 2013-8-4 07:32
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
dd259 | 收聽TA | 只看該作者
發表於 2013-11-12 23:25
版主不好意思,小弟想請教一下 updater-script 是在 ROM 的哪裡呢?

小弟用 root explore 找尋手機中的各個資料夾皆無發現這個檔案。

請問是開去哪邊開啟這個檔案編輯?

還有,小弟想順便請教,如何在電腦上面新增、修改、刪除 手機中 SDCARD 以外的資料夾?

(手機插上電腦只會顯示SDCARD, 其他層的檔案資料夾皆不會顯示。)


不好意思問題有點多,

感謝您的閱讀,還請您解惑,謝謝。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
 樓主| monitorstudio | 收聽TA | 只看該作者
發表於 2013-11-13 00:28
由 手機網頁 發佈
本帖最後由 monitorstudio 於 2013-11-13 00:30 編輯
dd259 發表於 2013-11-12 23:25
版主不好意思,小弟想請教一下 updater-script 是在 ROM 的哪裡呢?

小弟用 root explore 找尋手機中的各 ...


updater-script在卡刷包的META-INF/com/google/android資料夾裡喔!手機裡是找不到的

要讓電腦瀏覽除了sdcard以外的目錄有幾種方法:
1.在手機上架ftp server
2.把/system,/data等等掛載到sdcard上
3.用adb工具
我知道的方式就只有這幾種了
希望有幫到你


評分

參與人數 1幫助 +1 收起 理由
dd259 + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
利碧波 | 收聽TA | 只看該作者
發表於 2014-2-4 00:25
請問一定要刷第三方ROM 才可以用嗎

還是只要有檔案跟腳本就好

我現在是用 ASUS N7 2013 還沒刷過ROM
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

8
strongway | 收聽TA | 只看該作者
發表於 2014-3-14 17:27
然後在你的 ROM 的 updater-script 裡加入以下指令.........
找不到.....路徑? 還是要去下載?還是要自行創立?
(updater-script在卡刷包的META-INF/com/google/android資料夾裡喔!手機裡是找不到的)
卡刷包在哪?也許小弟問的問題讓人覺得是來亂的 但事實上真的看不懂
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

9
 樓主| monitorstudio | 收聽TA | 只看該作者
發表於 2014-3-14 18:18
strongway 發表於 2014-3-14 17:27
然後在你的 ROM 的 updater-script 裡加入以下指令.........
找不到.....路徑? 還是要去下載?還是要自行創 ...

卡刷包是刷機包的一種,用來在recovery模式下更改系統
你可以去找找看適合你手機的卡刷包喔(或是自己做一個)
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

10
kenhong | 收聽TA | 只看該作者
發表於 2014-6-18 12:22
我參照您的方法發現只要加入busybox run-parts /system/etc/init.d這一行,然後建個init.d目錄,權限設定好一樣可用,會有什麼後遺症嗎?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則