Soru & Cevap

Rom Hazırlama

23.11.2013 - 07:45

Bu eğitimleri alır , bilgileri öğrenirsem Rom hazılayabilir miyim kullandığım cihaza kaynak kodları ile ? yoksa sadece uygulama geliştirme üzerine mi bu eğitim ?

129 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user sarperkaya
sarperkaya
24.11.2013 - 12:20

Eğitim uygulama odaklı fakat uygulama yazmayı öğrendikten sonra yaptığınız romlara özel uygulamalar geliştirerek fark yaratabilirsiniz. Bir zamanlar hazırladığım yazı aşağıdadır. Başlangıç seviyesi için incelenebilir.

 

Gerekli Olan Araçlar
Winrar
Not Defteri ( txt editor )
Sign Tool ( İmzalama Aracı )

Gelişmiş Araçlar
Adb ve Tar ( Odin Romu yapmak için)
De-odexer

*romdosyası*.zip İçinde bulunan klasörler (basit açıklama)
META-INF - .zip dosyasının nasıl yüklenmesi gerektiğini hangi dosyanın nereye atılması gerektiğini telefona gösteren "updater-script" dosyasının içinde bulunduğu klasör.
data/app - Telefona kullanıcı tarafından yüklenmiş programların içinde bulunduğu klasör. (rom yüklendikten sonra bu klasör içindeki uygulamalarda telefona yüklenir isteğe göre telefon açıldıktan sonra root erişimi olmadan silinebilir.
updates - Kernel ve modem dosyalarını içinde bulunduran klasör.
system/app - Sistem uygulamalarını barındıran klasör. Telefon açıldıktan sonra root erişimi olmadan bu klasör içindeki uygulamalar silinemez.
system/framework - Tema kilit ekranı batarya simgesi animasyonlar hangi butonun nerede bulunacağı gibi bilgileri barındıran klasör.
system/media - Bootanimation ve telefon seslerini barındıran klasör.


updater-script
zip dosyasının nasıl ne şekilde nereye yüklenmesini gösteren dosyadır.


Belli başlı komutlar

ui_print - Rom yüklenirken ekrana yazı yazar.
mount - belirlediğimiz klasörü yazılabilir hale getirir.
set_perm - izinleri ayarlar.
show_progress - yükleme barı.
delete_recursive - belirlediğimiz klasörü temizler/içindekileri siler.
package_extract_dir - zip içindeki belirlediğimiz klasörden telefonda belirlediğimiz bir klasöre dosyaları aktarır

Bir Örnek:

ui_print(" "); ui_print(" "); ui_print(" "); ui_print(" ");ui_print(" "); ui_print(" *************************");ui_print(" **** Sarper Kaya ****"); ui_print(" *************************");ui_print(" "); ui_print(" "); ui_print(" "); ui_print(" "); ui_print("Sarper S"); ui_print(" "); ui_print(" "); ui_print(" "); ui_print(" "); mount("vfat", "/dev/block/mmcblk0p1", "/mnt/sdcard"); assert(is_mounted("/mnt/sdcard")); mount("rfs", "/dev/block/stl3", "/efs"); assert(is_mounted("/efs")); package_extract_file("script/efsbackup.sh", "/tmp/efsbackup.sh"); set_perm(0, 0, 0777, "/tmp/efsbackup.sh"); run_program("/tmp/efsbackup.sh", "backup"); run_program("/sbin/mount", "/dev/block/stl9", "/system"); run_program("/sbin/mount", "/dev/block/stl10", "/dbdata"); run_program("/sbin/mount", "/cache"); run_program("/sbin/mount", "/dev/block/mmcblk0p2", "/data"); show_progress(0.100000, 60); ui_print(" "); ui_print("Sistem Temizleniyor"); ui_print("Bellek Temizleniyor"); ui_print("Gecici Ogeler Temizleniyor"); ui_print(" "); delete_recursive("/system"); delete_recursive("/cache"); delete_recursive("/data/dalvik-cache"); ui_print(" "); ui_print("Dosyalar Kopyalaniyor"); ui_print(" "); package_extract_dir("system", "/system"); package_extract_dir("data", "/data"); package_extract_dir("sdcard", "/sdcard"); package_extract_dir("updates", "/tmp"); show_progress(0.100000, 10); ui_print(" "); ui_print("Yapilandiriliyor"); ui_print(" "); symlink("toolbox", "/system/bin/cat", "/system/bin/chmod", "/system/bin/chown", "/system/bin/cmp", "/system/bin/date", "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg", "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd", "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice", "/system/bin/kill", "/system/bin/ln", "/system/bin/log", "/system/bin/ls", "/system/bin/lsmod", "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat", "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv", "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent", "/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd", "/system/bin/start", "/system/bin/stop", "/system/bin/sync", "/system/bin/top", "/system/bin/umount", "/system/bin/vmstat", "/system/bin/watchprops", "/system/bin/wipe"); symlink("/system/xbin/su", "/system/bin/su"); ui_print(" "); ui_print("Izinler Aliniyor"); ui_print(" "); set_perm_recursive(1000, 1000, 0771, 0644, "/data/app"); set_perm_recursive(0, 0, 0755, 0644, "/system"); set_perm_recursive(0, 2000, 0755, 0755, "/system/bin"); set_perm_recursive(0, 0, 0755, 0755, "/system/etc"); set_perm(0, 3003, 02755, "/system/bin/netcfg"); set_perm(0, 3004, 02755, "/system/bin/ping"); set_perm(0, 2000, 06750, "/system/bin/run-as"); set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth"); set_perm(0, 0, 0755, "/system/etc/bluetooth"); set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf"); set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf"); set_perm(1002, 1002, 0440, "/system/etc/dbus.conf"); set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks"); set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh"); set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d"); set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp"); set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin"); set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin"); set_perm(0, 0, 04755, "/system/xbin/su"); set_perm(0, 0, 04755, "/system/xbin/busybox"); set_perm(0, 0, 0777, "/system/etc/init.d/S98jupaengine"); set_perm(0, 0, 0777, "/system/jupa/JP_darkyramhack"); set_perm(0, 0, 0777, "/system/jupa/JP_deadline"); set_perm(0, 0, 0777, "/system/jupa/JP_juwes_ramscript"); set_perm(0, 0, 0777, "/system/jupa/JP_kernelscheduler"); set_perm(0, 0, 0777, "/system/jupa/JP_sdreadtweak"); set_perm(0, 0, 0755, "/tmp/bmlwrite"); ui_print(" "); ui_print("Busybox Yukleniyor"); ui_print(" "); run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin"); run_program("script/wipe"); show_progress(1.000000, 0); show_progress(0.100000, 60); show_progress(0.100000, 10); ui_print(" "); ui_print("Modem Yukleniyor"); ui_print(" "); run_program("/tmp/bmlwrite", "/tmp/modem.bin", "/dev/block/bml12"); ui_print(" "); ui_print("Kernel Yukleniyor"); ui_print(" "); run_program("/tmp/bmlwrite", "/tmp/zImage", "/dev/block/bml7"); show_progress(1.000000, 0); run_program("/sbin/umount", "/system"); run_program("/sbin/umount", "/dbdata"); run_program("/sbin/umount", "/cache"); run_program("/sbin/umount", "/data");ui_print(" "); ui_print(" *************************");ui_print(" **** Sarper Kaya ****"); ui_print(" *************************");ui_print(" "); ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" ");ui_print(" "); ui_print("Yukleme Tamamlandi"); ui_print(" "); run_program("/sbin/reboot");



System/app
Bu klasör içinde system dosyaları bulunuz istediğiniz değişiklikleri yapın silin uygulama ekleyin fakat bilmediğiniz uygulamalara dokunmayın yoksa telefon açılmaz. Kullanıcının silmesini istemediğiniz uygulamalarıda bu klasöre atabilirsiniz.


data/app
Bu klasöre telefona yüklenecek uygulamaları atabilirsiniz. Kullanıcı dilerse bu uygulamaları romu yükledikten sonra silebilir.


System/media
Bootanimation bu klasöre atabilirsiniz.(Kernelin ve romun bootanimation desteklemesi lazım). Audio klasöründende seslere ulaşabilirsiniz dilediğiniz gibi değişiklik yapabilirsiniz.


Framework-res.apk Düzenleme
system/Framework klasörü içinde bulunur. Winrar ile açın. res/drawable-hdpi klasörünü dışarı çıkartın tema resimlerinin içinde olduğunu göreceksiniz. Sadece uzantısı .png olanları değiştirin diğerlerine dokunmayın.
res/anim içindede animasyon verileri bulunur. güzel bir animasyon gördüğünüzde sizin telefonunuza uyumluysa bu klasöre atabilirsiniz.


SystemUI.apk
System/app içinde bulunur. Bildirim barındaki resimleri içerir. Winrar ile açın res/drawable-hdpi klasörü içindekileri değiştirebilirsiniz.

Updates
zImage yani kernel dosyası içinde bulunur romunuzun sürümüne uygun bir kernel bulun ve bu klasör içine atın. İndirdiğiniz kernel dosyası .tar uzantılıysa winrar ile açıp içindeki zImage dosyasını kopyalayabilirsiniz.

build.prop
system içinde bulunur. Firmware versiyonu Rom ismi gibi bilgileri barındırır. Not defteriyle açın. "ro.build.display.id" bölümüne romunuzun ismini girebilirsiniz.