Android Genel Bölüm > Android Eğitim

[ANLATIM - UPDATE-SCRİPT] Custom Recoveryden Flashlanabilir Dosya Nasıl Yapılır

(1/2) > >>

bysalihidriscan:
SELAMLAR
BİLGİLENDİRMEBu konumuzda Custom Recoveryden nasıl flashlanabilir dosya yaparız onu işleyeceğiz.

Öncelikle elimizde bir adet Meta-Inf base klasörüne sahip olmamız gerekir Meta-Inf Nedir diye soracak olursanız Custom recoveriye bir zip gösterdiğiniz zaman o zip ile bağlantı kurduğu noktadır Meta-Inf klasörünü okuyarak zip içerisindeki dosyaları nereye yazması gerekiyorsa Meta-Inf klasörünü okuyarak işlemini tamamlar.

Link: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın

ANLATIM
Linkte verilen zip dosyasını indirin Winrar ile çıkartın.
Bir tane klasör oluşturun Zipin içerisinden çıkan Meta-Inf dosyasını alıp Yeni açtığınız klasörün içine koyun ve yanına "system" adında birtane daha klasör oluşturun bu system klasörü systeme hangi dosyayı yazdıracaksak o dosyayı koymamız gereken yerdir.

Meta-Inf DÜZENLEMESİ
Meta-Inf klasörünün içerisindeki Muhatap olacağımız yer "Update-Script" Dosyasıdır gerekli kodları onun içerisine gireceğiz.


Örnek olarak bir tane flashlayabileceğimiz dosya yaparak konumuza devam edelim.

1.Kod

--- Alıntı ---ui_print("Örnek Yazı");
--- Alıntı sonu ---

Şimdi Sırası ile Ana kodları öğreneceğiz 1. Kodumuz Bu kod Custom recoveryden dosyayı flashlarken karşımıza çıkacak olan yazılardır.

1.Kod bu kodu istediginiz her satıra girebilirsiniz nereye yazi yazmak istiyorsanız.

--- Alıntı ---ui_print("Örnek Yazı");
--- Alıntı sonu ---

2.kod yüklemeden önce systemi mount etme yani önyüklemeye okuma yazdırmaya açma.


--- Alıntı ---run_program("/sbin/busybox", "mount", "/system");
--- Alıntı sonu ---

3.kod flashlanacak dosyayı yazdıracağımız yol haritasını gösterme.


--- Alıntı ---package_extract_dir("system", "/system");
--- Alıntı sonu ---

Eğer systemden bir şey silmek istiyor isek şu kodları girmemiz gerekir ve silinecek dosyanın yol haritasını göstermemiz gereklidir.


--- Alıntı ---delete_recursive("/system/priv-app/SystemUI/SystemUI.apk");
--- Alıntı sonu ---

Kodlar örnektir Ben systemUI olarak gösterdim siz neyi silmek istiyor iseniz o yol haritasını girmeniz gereklidir.

Ve son kod tüm dosyalarımızı ve kodlarımızı ayarladıktan sonra systemi yüklemeye kapatmamız gereklidir kısaca Unmount yapmamız gerekir.


--- Alıntı ---unmount("/system");
--- Alıntı sonu ---

Ek Kod bu kod yükleyeceğiniz zip dosyasını kendi cihazınıza has kılar genelde bu kodu geliştiriciler yaptıkları kernelleri modları başka cihazlara yüklenip o cihazları kullanılamaz hale getirmemeleri için yaptıkları bir önlemdir sizde kendi romunuzun update-script'in baş kodu olarak ekleyip romu kendi cihazınıza has kılabilirsiniz.


--- Alıntı ---assert(getprop("ro.product.device") == "ja3g");
getprop("ro.product.model") == "GT-I9500");
--- Alıntı sonu ---

Kod örnektir kendi cihazınızın build.prop'una göre ayarlamanız gereklidir.. Örnek olarak Bir de Note4 de göre verelim.


--- Alıntı ---assert(getprop("ro.product.device") == "trltexx");
getprop("ro.product.model") == "SM-N910C");
--- Alıntı sonu ---

Bu anlatım sadece tek dosya ve grub Apk,Lib,V.s izinleri [R-W-R-R] Olan dosyalara aittir Zipi Custom Recoveryden flashlarken system izinlerini kendisi otomatik ayarlar.

Örnek Update-Script düzenlemesi.


--- Alıntı ---ui_print("");
ui_print("");
ui_print("============================");
ui_print("           Galaxy Note4 ");
ui_print("                   SystemUI    Note 7     ");
ui_print("============================");
ui_print("");
run_program("/sbin/busybox", "mount", "/system");
package_extract_dir("system", "/system");
unmount("/system");
ui_print("•");
ui_print("Tesekkur etmeyi UNUTMA");
ui_print("•");
--- Alıntı sonu ---

Eğer kendi romunu zu flashlanabilir dosya haline getirmek istiyorsanız durum birazdaha farklıdır çünkü Symlinkleri flashlamak için kendiniz ayarlamanız gereklidir Symlink nedir derseniz "System" klasörünün içerisindeki app,priv-app  dışında olan bin,xbin,lib,etc gibi dosyalardır.

Örnek Rom Update-Scripti

Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapınunmount("/system");
unmount("/data");
show_progress(1.000000, 0);
ui_print("");
ui_print("Formatting system...");
ui_print("---------------------------");
format("ext4", "EMMC", "/dev/block/mmcblk0p20", "0", "/system");
set_progress(0.100000);
mount("ext4", "EMMC", "/dev/block/mmcblk0p20", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p21", "/data");
delete_recursive("/data/system/batterystats.bin");
set_progress(0.200000);
ui_print("---------------------------");
ui_print("Extracting system...");
ui_print("---------------------------");
package_extract_dir("system", "/system");
set_progress(0.500000);
ui_print("---------------------------");
ui_print("Creating symlinks...");
ui_print("---------------------------");
#SYM
symlink("app_process32", "/system/bin/app_process");
symlink("dalvikvm32", "/system/bin/dalvikvm");
symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("/system/lib/libbluetooth_jni.so", "/system/app/Bluetooth/lib/arm/libbluetooth_jni.so");
symlink("/system/lib/libcommonpawrapper.so", "/system/app/RootPA/lib/arm/libcommonpawrapper.so");
symlink("/system/lib/libdefcontainer_jni.so", "/system/priv-app/DefaultContainerService/lib/arm/libdefcontainer_jni.so");
symlink("/system/lib/libjni_emailencryption.so", "/system/app/SecEmail_K/lib/arm/libjni_emailencryption.so");
symlink("/system/lib/libjni_pacprocessor.so", "/system/app/PacProcessor/lib/arm/libjni_pacprocessor.so");
symlink("/system/lib/libnfc_nci_jni.so", "/system/app/NfcNci/lib/arm/libnfc_nci_jni.so");
symlink("/system/lib/libprintspooler_jni.so", "/system/app/SPrintSpooler/lib/arm/libprintspooler_jni.so");
symlink("/system/lib/libsbrowser.so", "/system/app/SBrowser/lib/arm/libsbrowser.so");
symlink("/system/lib/libSecFileClientUnit.so", "/system/priv-app/SamsungLinkPlatform/lib/arm/libSecFileClientUnit.so");
symlink("/system/lib/libsecipx.so", "/system/priv-app/OutOfFocusViewer_WQHD_K/lib/arm/libsecipx.so");
symlink("/system/lib/libsecv8.so", "/system/app/SBrowser/lib/arm/libsecv8.so");
symlink("/system/lib/libSisoJpegCodec.so", "/system/priv-app/OutOfFocusViewer_WQHD_K/lib/arm/libSisoJpegCodec.so");
symlink("/system/lib/libSLPF_scone_stub.so", "/system/priv-app/SamsungLinkPlatform/lib/arm/libSLPF_scone_stub.so");
symlink("/system/lib/libSLPF_security.so", "/system/priv-app/SamsungLinkPlatform/lib/arm/libSLPF_security.so");
symlink("/system/lib/libSLPF_transcoder_jni_kk.so", "/system/priv-app/SamsungLinkPlatform/lib/arm/libSLPF_transcoder_jni_kk.so");
symlink("/system/lib/libSLPF_transcoder_jni_ll.so", "/system/priv-app/SamsungLinkPlatform/lib/arm/libSLPF_transcoder_jni_ll.so");
symlink("/system/lib/libSRIB_FocusShot.so", "/system/priv-app/OutOfFocusViewer_WQHD_K/lib/arm/libSRIB_FocusShot.so");
symlink("/system/lib/libswiftkeysdk-java.so", "/system/app/SamsungIME/lib/arm/libswiftkeysdk-java.so");
symlink("/system/lib/libwbs.so", "/system/app/SBrowser/lib/arm/libwbs.so");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chcon");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/clear");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/cp");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/du");
symlink("toolbox", "/system/bin/getenforce");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/getsebool");
symlink("toolbox", "/system/bin/grep");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/load_policy");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/md5");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/mknod");
symlink("toolbox", "/system/bin/mkswap");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/nohup");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/readlink");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/restorecon");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/runcon");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setenforce");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/setsebool");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/swapoff");
symlink("toolbox", "/system/bin/swapon");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");
set_progress(0.600000);
ui_print("---------------------------");
ui_print("Extracting boot image...");
ui_print("---------------------------");
package_extract_file("boot.img", "/dev/block/mmcblk0p9");
ui_print("---------------------------");
ui_print("Extracting modem file...");
ui_print("---------------------------");
assert(package_extract_file("modem/modem.bin", "/tmp/modem.bin"),
write_raw_image("/tmp/modem.bin", "/dev/block/mmcblk0p13"),
delete("/tmp/modem.bin"));
set_progress(0.800000);
#ROOT
package_extract_dir("supersu", "/tmp/supersu");
run_program("/sbin/busybox", "unzip", "/tmp/supersu/SuperSU-v2.79-201612051815.zip", "META-INF/com/google/android/*", "-d", "/tmp/supersu");
run_program("/sbin/busybox", "sh", "/tmp/supersu/META-INF/com/google/android/update-binary", "dummy", "1", "/tmp/supersu/SuperSU-v2.79-201612051815.zip");
ui_print(" ");
#BUSYBOX
package_extract_dir("busybox", "/tmp/busybox");
run_program("/sbin/busybox", "unzip", "/tmp/busybox/UPDATE-Busybox.Installer.v1.24.2-ALL-signed.zip", "META-INF/com/google/android/*", "-d", "/tmp/busybox");
run_program("/sbin/busybox", "sh", "/tmp/busybox/META-INF/com/google/android/update-binary", "dummy", "1", "/tmp/busybox/UPDATE-Busybox.Installer.v1.24.2-ALL-signed.zip");
set_progress(0.900000);
ui_print("---------------------------");
ui_print("Done ...");
ui_print("---------------------------");
unmount("/system");
unmount("/data");
set_progress(1.000000);
ui_print("---------------------------");
ui_print("Installed");
ui_print("---------------------------");
--- Kod sonu ---

Eğer Stock Romunuzu Flashlanabilir Dosya Haline Getirmek İstiyorsanız Zaten Assayed Kitchen Kullanın Uğraşmadan Direk Flashlanabilir Dosya Haline Getiricektir.
Örnek Olarak Verilen Roma Ait Update-Script @Bozkrut-_-05 Kardeşimizin Yaptığı Stock Tabanlı Romdan Alınmıştır Teşekkür Ederim.

Zaman Zaman Eğitim Anlatımlarına Devam Edeceğim.

Konularımı Faydalı Bulur Ve Beğenirseniz
Bir Teşekkürünüzü Esirgemeyiniz

eymenygt:
Eline sağlık. Bu işlerle bol bol uğraşacak boş vakti olan arkadaşlara yol gösterip önlerini açmak en azından Türk mod/rom geliştiricileri için çok iyi. Mahsuru yoksa bir iki düzeltme yapayım.
Bir dosyayı silmek için delete komutunu, bir klasörü silmek için ise delete_recursive komutunu kullanırız.
Örnek olarak:
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapındelete("/system/priv-app/SystemUI/SystemUI.apk");
--- Kod sonu ---
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapındelete_recursive("/system/priv-app/SystemUI");
--- Kod sonu ---
Bir de örnek updater-script düzenlemesinde 5. satırda parantezi kapatmamışsın.
Başarılar.

Sent from my MI 5 using Tapatalk

bysalihidriscan:
Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş YapınEline sağlık. Bu işlerle bol bol uğraşacak boş vakti olan arkadaşlara yol gösterip önlerini açmak en azından Türk mod/rom geliştiricileri için çok iyi. Mahsuru yoksa bir iki düzeltme yapayım.
Bir dosyayı silmek için delete komutunu, bir klasörü silmek için ise delete_recursive komutunu kullanırız.
Örnek olarak:
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapındelete("/system/priv-app/SystemUI/SystemUI.apk");
--- Kod sonu ---
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapındelete_recursive("/system/priv-app/SystemUI");
--- Kod sonu ---
Bir de örnek updater-script düzenlemesinde 5. satırda parantezi kapatmamışsın.
Başarılar.

Sent from my MI 5 using Tapatalk



--- Alıntı sonu ---
Saolun hocam teşekkürler.

Hangi parentezi kapatmamışım tam olarak farkedemediģimden soruyorum?

Sade delete komutunu kullanıyorum bazen silme işlemini gerćekleştirmiyor Delete_recursive her şeyi silme yetkisine daha çok sahip gibi yanlışmıyım acaba?

Edit: Yeni farkettim hocam örnek vermek açısından update-script'te bir kaç silme yapmıştım parentez sonuda arada kaynamış :D

SHADOW:
beklenen konu  :hoba:
tesekkurler

azizcinar04:
Eline sağlık salih kardeşim.

Navigasyon

[0] Mesajlar

[#] Sonraki Sayfa

Tam sürüme git
Seo4Smf 2.0 © SmfMod.Com | Smf Destek