Android 台灣中文網

標題: updater-script 如何增加字到build.prop? [打印本頁]

作者: rsps1008    時間: 2013-8-7 16:52
標題: updater-script 如何增加字到build.prop?
本帖最後由 rsps1008 於 2013-8-9 16:58 編輯

如題,updater-script 增加字到build.prop的指令是...?我記得我看過這個指令,但我一直找不到-.-
先謝謝各位><
作者: monitorstudio    時間: 2013-8-7 18:29
我只知道這種方法, 不過還是獻醜一下

1.先在updater-script裡加入以下指令:
  1. package_extract_file("檔案名稱.sh", "/tmp/檔案名稱.sh");
  2. run_program("/tmp/檔案名稱.sh");
複製代碼
2.在刷機包裡面加入
~/檔案名稱.sh

3.在加入的"檔案名稱sh"裡輸入以下指令:
  1. #!/sbin/sh
  2. echo "欲加入的第一行字" | tee -a /system/build.prop
  3. echo "欲加入的第二行字" | tee -a /system/build.prop
  4. ......依此類推
複製代碼
4.記得檔案格式要存成UNIX/Linux格式喔!


作者: rsps1008    時間: 2013-8-7 18:35
本帖最後由 rsps1008 於 2013-8-7 18:37 編輯
monitorstudio 發表於 2013-8-7 18:29
我只知道這種方法, 不過還是獻醜一下

1.先在updater-script裡加入以下指令:2.在刷機包裡面加入


請問檔案名稱.sh要放在刷機包的哪裡呢?
SYSTEM裡面嗎?
還是和META-INF放同一個目錄?
作者: monitorstudio    時間: 2013-8-7 18:39
要注意空格...

對了, 這裡要澄清一下, 這是給updater-script的, 不是update-script...
不過版主大大應該有能力自己把它轉換一下吧!
(其實是小弟不會update-script)

還有, 那個sh檔(shell script)如果要在filesystem(正常開機狀態, 不是在recovert裡)運行的話, 第一行要換成:
  1. #!/system/bin/sh
複製代碼

作者: monitorstudio    時間: 2013-8-7 18:43
rsps1008 發表於 2013-8-7 18:35
請問檔案名稱.sh要放在刷機包的哪裡呢?
SYSTEM裡面嗎?
還是和META-INF放同一個目錄? ...

和META-INF,system......的資料夾一起壓縮即可
如果要放在刷機包的~/system裡面要這樣寫:
  1. package_extract_file("system/檔案名稱.sh", "/tmp/檔案名稱.sh");
複製代碼
要注意的是, "system/檔案名稱.sh"的system前面沒有"/"


作者: rsps1008    時間: 2013-8-7 18:51
本帖最後由 rsps1008 於 2013-8-7 18:53 編輯
monitorstudio 發表於 2013-8-7 18:39
要注意空格...

對了, 這裡要澄清一下, 這是給updater-script的, 不是update-script...


是updater-script沒錯...(手殘= =..)
是說update-script我聽都沒聽過=A=+
請問一下,要怎麼讓他在rececovery運行呢?
開頭#!/sbin/sh就可以了嗎?
抱歉我很菜-.-
作者: monitorstudio    時間: 2013-8-7 19:01
rsps1008 發表於 2013-8-7 18:51
是updater-script沒錯...(手殘= =..)
是說update-script我聽都沒聽過=A=+
請問一下,要怎麼讓他在rececov ...

呃…是真的有update-script...
是的,只要以那個開頭就可以在recovery運行無誤了~
作者: monitorstudio    時間: 2013-8-7 22:34
本帖最後由 monitorstudio 於 2013-8-8 15:25 編輯

其實shell腳本是非常好用的,因為看到版大在做刷機包(終於有同類了!!!!!這一天終於來了!!!!!),因為太感動了,所以就把一些基本的語法說一說,這樣以後在做刷機包/ROM的時候會方便許多~

("~/" 代表任意路徑)

1.確認檔案/資料夾/名稱是否存在:
確認檔案是否存在:

  1. if [ -f ~/檔案名稱 ]; then   //如果存在,則
  2. 敘述1;
  3. 敘述2;
  4. 敘述......;
  5. elif [ 判斷式 ]; then  //如果不存在,則(可以沒有 elif )
  6. 敘述1;
  7. 敘述2;
  8. 敘述......;
  9. else;   //其它狀況,則(可以沒有else)
  10. 敘述1;
  11. 敘述2;
  12. 敘述......;

複製代碼
確認資料夾是否存在:

  1. if [ -d ~/資料夾名稱 ]; then   //如果存在,則
  2. 敘述1;
  3. 敘述2;
  4. 敘述......;
  5. elif [ 判斷式 ]; then  //如果不存在,則(可以沒有 elif )
  6. 敘述1;
  7. 敘述2;
  8. 敘述......;
  9. else;   //其它狀況,則(可以沒有else)
  10. 敘述1;
  11. 敘述2;
  12. 敘述......;
  13. endif;

複製代碼
確認名稱是否存在(不論資料夾,檔案,分區......):

  1. if [ -e ~/名稱 ]; then   //如果存在,則
  2. 敘述1;
  3. 敘述2;
  4. 敘述......;
  5. elif [ 判斷式 ]; then  //如果不存在,則(可以沒有 elif )
  6. 敘述1;
  7. 敘述2;
  8. 敘述......;
  9. else;   //其它狀況,則(可以沒有else)
  10. 敘述1;
  11. 敘述2;
  12. 敘述......;

複製代碼
2.新增資料夾:

  1. mkdir ~/資料夾名稱
複製代碼
3.刪除檔案/資料夾:

刪除檔案:

  1. rm ~/檔案名稱
複製代碼
刪除資料夾:

  1. rm -r ~/資料夾名稱
複製代碼
4.複製檔案/資料夾:

複製檔案:

  1. cp 原檔案路徑 欲複製到的路徑
複製代碼
複製資料夾:

  1. cp -r 原資料夾路徑 欲複製到的路徑
複製代碼
5.移動檔案/資料夾(把檔案移動到原本的位置可以用來重新命名,至少我都這樣用XD):
移動檔案:

  1. mv ~/原檔案路徑&名稱 ~/欲複製到的路徑&名稱(可不必與原檔案名稱相同)
複製代碼
移動資料夾:

  1. mv -r ~/原始路徑 ~/欲移動到的路徑
複製代碼
6.增加一行字(我發現只要增加的無內容的一行就可以用來新增檔案),有兩種寫法:

  1. echo "..." | tee -a ~/...
  2. echo "..." >> ~/...
複製代碼
兩種是一樣的

7.修改權限:

  1. chmod 權限 ~/檔案or資料夾名稱
複製代碼
這裡有幾點很重要:
1.系統辨別權限是用數字來辨別的
2.權限總共有三種(讀,寫,執行)
3.我們在管理的是:擁有者,群組,其它三種使用者所擁有的權限

像三讀一寫就是:
擁有者:讀寫
群組:讀
其它:讀

數值:
讀:4
寫:2
執行:1

按照上面的方法,三讀一寫就是:
擁有者:讀寫 4+2+0=6
群組:讀 4+0+0=4
其它:讀 4+0+0=4

所以是我們熟悉的0644

以此類推,0755就是三讀一寫三執行

su的檔案權限比較特別,它是
  1. 6755
複製代碼
8.修改擁有者:

  1. chown 擁有者 群組擁有者
複製代碼
例:chown root system
上面的等於chown 0 1000

9.如果要執行其他的sh檔案(shell script)只要直接把它的路徑寫出來就好,例如我想要執行/system/etc/init.d/90zipalign這個腳本檔案,我只要這樣寫

  1. /system/etc/init.d/90zipalign
複製代碼

  1. ./system/etc/init.d/90zipalign
複製代碼
有很多種寫法,但這兩種就很夠了~


所以綜合以上所學,如果/data有test資料夾存在,則刪除該資料夾,並建立新檔案"test",如果檔案原本就存在,則將其重新命名為test.log,並增加一段文字"This is just a test",如果沒有資料夾且沒有檔案,則新建一個檔案"test"可以這麼寫:

#!/system/bin/sh
if [ -d /data/test ]; then
rm -r /data/test;
echo "" >> /data/test;
elif [ -f /data/test ]; then
mv /data/test /data/test.log;
echo "This is just a test" >> /data/test.log;
else;
echo "" >> /data/test;
endif;

作者: rsps1008    時間: 2013-8-7 23:18
monitorstudio 發表於 2013-8-7 22:34
其實shell腳本是非常好用的,因為看到版大在做刷機包(終於有同類了!!!!!這一天終於來了!!!!!),因為太感動 ...

請容許菜鳥小弟我在此一拜(跪
感謝大師的指點,有這些我想我又可以更上一層了^_^
研究中...~
作者: rsps1008    時間: 2013-8-9 16:58
monitorstudio 發表於 2013-8-7 22:34
其實shell腳本是非常好用的,因為看到版大在做刷機包(終於有同類了!!!!!這一天終於來了!!!!!),因為太感動 ...

請問一下大大知道,updater-script清除某一應用程式資料的指令嗎?
作者: monitorstudio    時間: 2013-8-9 17:48
rsps1008 發表於 2013-8-9 16:58
請問一下大大知道,updater-script清除某一應用程式資料的指令嗎?

到 /data/app 裡面看應用程式的標籤名稱,這裡假設要清除 Line 的資料,它在 /data/app 裡的名稱是 : jp.naver.line.android-數字.apk,那麼 updater-script 要這樣寫 :
  1. run_program("rm", "-rf", "/data/data/jp.naver.line.android");
複製代碼

作者: rsps1008    時間: 2013-8-9 18:34
monitorstudio 發表於 2013-8-9 17:48
到 /data/app 裡面看應用程式的標籤名稱,這裡假設要清除 Line 的資料,它在 /data/app 裡的名稱是 : jp. ...

之前因為都刪掉所以一直失敗=(
感謝大大=)
作者: rsps1008    時間: 2013-8-9 19:33
monitorstudio 發表於 2013-8-9 17:48
到 /data/app 裡面看應用程式的標籤名稱,這裡假設要清除 Line 的資料,它在 /data/app 裡的名稱是 : jp. ...

他會跳出一些錯誤(已停止有的沒的= =)
然後我失敗嘞QAQ
可以幫我看一下嗎?

build.sh
#!/sbin/sh
echo "" | tee -a /system/build.prop  ->想空一行
echo "dalvik.vm.verify-bytecode=false" | tee -a /system/build.prop
echo "dalvik.vm.dexopt-flags=v=n,o=v,m=y" | tee -a /system/build.prop

META-INF\com\google\android\updater-script
ui_print("White app and setting from ZU App");
ui_print("Tweak by rsps1008 apk.tw");
ui_print("====================================");
ui_print("| Disclaimer:                      |");
ui_print("|  This operation will modify your |");
ui_print("|  Xperia P With New JB Settings   |");
ui_print("|   I didnt take any responsible   |");
ui_print("|      if this procedure brick     |");
ui_print("|           your device.           |");
ui_print("====================================");
ui_print(" ");
run_program("/sbin/sleep", "6");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(">>> Mount system...");
run_program("/sbin/mount", "/system");
run_program("/sbin/sleep", "5");
ui_print(" ");
ui_print(">>> Extracting files...");
package_extract_dir("system", "/system");
run_program("/sbin/sleep", "5");
ui_print(" ");
ui_print(">>> Writing build.prop...");
package_extract_file("build.sh", "/tmp/build.sh");
run_program("/tmp/build.sh");

run_program("/sbin/sleep", "5");
ui_print(" ");
ui_print(">>> Unmount system...");
run_program("/sbin/umount", "/system");
run_program("/sbin/sleep", "5");
ui_print(" ");
ui_print("TWEAKS ENABLED!");
ui_print("Please reboot your phone!");
ui_print(" ");
作者: monitorstudio    時間: 2013-8-9 21:44
rsps1008 發表於 2013-8-9 19:33
他會跳出一些錯誤(已停止有的沒的= =)
然後我失敗嘞QAQ
可以幫我看一下嗎?

呃…
把你要加入/取代的,並且會FC(Force Close)的應用程式解壓縮,看看裡面有沒有lib資料夾,如果有,把裡面的so檔複製到/data/data/應用程式標籤名稱/lib裡面應該就可以了~
作者: rsps1008    時間: 2013-8-9 23:11
本帖最後由 rsps1008 於 2013-8-9 23:13 編輯
monitorstudio 發表於 2013-8-9 21:44
呃…
把你要加入/取代的,並且會FC(Force Close)的應用程式解壓縮,看看裡面有沒有lib資料夾,如果有,把 ...


我之前有請教關於"updater-script 如何增加字到build.prop"
然後我在最外面添加build.sh
然後META-INF\com\google\android\updater-script
寫出指令
package_extract_file("build.sh", "/tmp/build.sh");
run_program("/tmp/build.sh");
這樣之後刷出來build.prop裡面還是沒有我想加的字QAQ(也就是build.sh裡的字)

作者: monitorstudio    時間: 2013-8-9 23:33
本帖最後由 monitorstudio 於 2013-8-9 23:39 編輯
rsps1008 發表於 2013-8-9 23:11
我之前有請教關於"updater-script 如何增加字到build.prop"
然後我在最外面添加build.sh
然後META-INF\co ...


因為這樣我也不知道問題在哪,不過可以試試
echo "" >> /
或是你可以試試看在updater-script裡這樣寫:
run_program("echo", "......", ", ">>", "/system/build.prop");
作者: monitorstudio    時間: 2013-8-10 14:22
本帖最後由 monitorstudio 於 2013-8-10 14:24 編輯

我幫你做好了(沒有簽名喔)
shell.zip
以後要加什麼到 build.prop 只要改 addition 裡面的內容就好了
作者: rsps1008    時間: 2013-8-10 15:55
本帖最後由 rsps1008 於 2013-8-10 15:57 編輯
monitorstudio 發表於 2013-8-10 14:22
我幫你做好了(沒有簽名喔)
shell.zip
以後要加什麼到 build.prop 只要改 addition 裡面的內容就好了 ...


論壇中有大大您這樣的高手真的太高興了((啜淚
非常謝謝您的教導,有問題到時再向大大請教,非常感謝=)
那您的腳本就借去用了哦,非常感謝~
另外有辦法刪除字嗎...?((超過份的要求=({我研究看看好了@@【逆向看看】}
不過還原包真的蠻需要的...手動也可以啦~
非常謝謝!
作者: rsps1008    時間: 2013-8-10 21:33
monitorstudio 發表於 2013-8-10 14:22
我幫你做好了(沒有簽名喔)
shell.zip
以後要加什麼到 build.prop 只要改 addition 裡面的內容就好了 ...

將檔案複製到system某處,然後還原再複製回去也是種方法耶!!
那這種我應該會,感謝大大指點迷津=)!
作者: monitorstudio    時間: 2013-8-11 20:37
本帖最後由 monitorstudio 於 2013-8-11 22:28 編輯
rsps1008 發表於 2013-8-10 21:33
將檔案複製到system某處,然後還原再複製回去也是種方法耶!!
那這種我應該會,感謝大大指點迷津=)! ...


這東東是真的可以刪掉 build.prop 裡面的字,因為我覺得用備份的渾身不對勁,所以弄出了這個 XD
http://db.tt/OXuPtFfr

試試看吧!我自己沒有測試喔!
因為我沒有那個 build.prop (藉口其實是懶惰...)
作者: slsamg7112    時間: 2013-8-22 20:30
monitorstudio 發表於 2013-8-9 17:48
到 /data/app 裡面看應用程式的標籤名稱,這裡假設要清除 Line 的資料,它在 /data/app 裡的名稱是 : jp. ...

那麼請問要清掉系統app資料要怎麼寫呢?




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1