[Anlatım] System.New.Dat ve Eski Yöntemle Lolipop Romları Kurmak

'P7000 Modding' forumunda SmiLeToLiFe tarafından 13 Ekim 2015 tarihinde açılan konu

  1. SmiLeToLiFe

    SmiLeToLiFe Administrator
    Site Yetkilisi Administrator

    1.433
    1.284
    113
    Cihaz:
    Redmi Note 4 4/64
    ROM:
    Miui Global 9.5 | Stable 9.5.4.0 (NCFMIFA)
    Arkadaşlar merhaba,

    Bildiğiniz gibi lolipop romlar yeni bir dosya formatında '' dat '' olarak iyice sıkıştırılmış ve boyutu düşürülmüş şekilde oluşturuluyor. Eskiden kitkat ve jellybean romlarda system klasörleri açık bir şekilde ve düzenlenebiliyordu. Fakat bu yeni dosyalama formatında ise bu mümkün değil :emoji_slight_smile: Dat dosyasındaki klasörleri görmeniz için birkaç işlem yapmanız gerekiyor. Konu şu anda bu olmadığı için anlatmayacağım. Buradaki konuda android 5.0 ve üzeri romların yapısı ve nasıl eski yöntemle kurulabileceğini anlatacağım.  

    andorid lolipop romların zip içerğinde aşağıda yazılanlar bulunmaktadır:

    META-INF = update-binary ve updater-script --- > Romun nasıl yükleneceğine ilişkin komutları recoverye ileten dosyalar
    Boot.img ---> kernel
    system.new.dat ---> press edilmiş system klasörü
    system.transfer.list ---> system klasöründeki liblerin, apk ların vb .... dosyaların hangi izinlerle nereye yazılacağını belirtmektedir.

    Bu yeni sistemde eskiden olduğu gibi updater-script te setdata ve symlink kodları yok. Aksine aşağıdaki kod bulunmaktadır: 

    PHP:
    block_image_update("system"package_extract_file("system.transfer.list"), "system.new.dat""system.patch.dat");
    Bu kod recoverye verdiği komutla kapalı image dosyası yazdırıyor ve dosyaları transfer edeceği noktaya gerekli izinleri system.transfer.list dosyasından olarak yazıyor.  Bu şekilde yapılan yazdırma işleminde eskisi gibi kafa karıştıran birçok kodlardan arındırılmış ve boyutu küçültülmüş bir rom yapısı oluşturuluyor.

    Peki biz lolipop romları eskisi gibi nasıl kurarız ya da neden buna ihtiyaç duyuyoruz? '' Dat '' formatındaki romları açmak kapamak bir hayli zor iş. Çünkü bazı şeyler için linux a ihtiyacınız olacak. Tüm işlemleri windows üzerinde yapmak mümkün fakat pek sağlıklı sonuçlar verdiği söylenemez. Aksine linux da da doğru sonuçları %100 elde edeceğinizin garantisini veremem. Bu sebeple ben eski yöntemle romları kuruyorum ;)

    Lolipop romlar için çalışan ve size gerçekten zaman tasarrufu ettireceğine inandığım yöntemi anlatayım: 

    1. Eski yöntemle kurabilmek için gerekli dosyalar ---> Cihazınız için hazırlanmış bir meta-inf klasörü ( en önemlisi  cihazınızın için updater-script içinde setdata ve symlink kodlarının olması )

    Neyden bahsediyorsun arkadaşım diyenler varsa: 

    Linkleri Görebilmek için Giriş Yapmanız yada Kayıt Olmanız Gerekmektedir.
    Linkleri Görebilmek için Giriş Yapmanız yada Kayıt Olmanız Gerekmektedir.

    2. Eski yöntemle kurabilmek için gerekli kodlamalar ---- > Her romun yapısına uygun symlink oluşturmak

    Birincisinin elinizde olduğu varsayıyorum ve ikinci aşamaya geçiyorum. Hani anlatımın ilk başında demiştim ya recovery kapalı image yazılımı yapıyor ve gerekli klasör ve lib izinlerini system.transfer.list dosyasından alıyor. İşte bu noktada mecburen bu kodlamaları biz yaparak updater-script e eklememiz gerekiyor.

    Peki bu kodlamayı nasıl yapacağız? ---> Burası tamamıyla sizin bilginize ve öğrenme kabiliyetinize kalmış. 

    Ben cihazım için çalışan meta-inf klasörü buldum. Anlattığınız kodlamaları yapmadan META-INF klasörü , boot.img ve system klasörünü zipleyip romu kursam çalışmaz mı, kurulmaz mı? ---> Büyük ihtimalle kurulur. Romunuz açılır fakat bazı hatalarla karşılaşırsınız ve kullanamazsınız.

    Kodlamaları yapmazsam ne gibi hatalar çıkar ? --- > VoiceCommand durdu, Bluetooth durdu, FmRadio durdu vb ... hatalar alırsınız ve romu kullanamazsınız.

    Bu hataların sebebi romda bulunan apk içindeki liblerden kaynaklanmaktadır. Apk ların doğru çalışması için varsa liblerine gerekli izinlerin verilmesi gerekiyor. Benim cihazım 64 bit olduğu için burada 3 farklı durum oluşuyor.
     
      1 . romun app klasöründe bulunan bazı apk ların libleri olması ve aynı liblerin system/lib ya da system/lib64 klasöründe de bulunması
      2 . romun priv-app klasöründe bulunan bazı apk ların libleri olması ve aynı liblerin system/lib ya da  system/lib64 klasöründe de bulunması
      3.  romun app ya da priv-app klasöründe bulunan bazı apk ların liblerinin olması

    Şimdi bu durumlara örnek vereyim: 

    1. durum için 

    Elephone P7000 Stock romunda system/app klasöründe Bluetooth isminde klasör var. Bu klasöründe içinde Bluetooth.apk ve lib dosyası var. Lib dosyasının içinde ise arm klasörü ve onun içinde ise libbluetooth_jni.so libi var.

    symlink("/system/lib/libbluetooth_jni.so", "/system/app/Bluetooth /lib/arm/libbluetooth_jni.so");

    Yukarıdaki kod için kısa açıklama yapayım:

    lib --- > yazdığım bu libin aynı zamanda system/lib klasöründe de olduğunu belirtiyor

    libvie_jni.so ---> libin ismi

    app --- > apk nın app klasöründe olduğunu belirtiyor

    Bluetooth---> apk nın bulunduğu klasörün ismi

    lib --- > Bluetooth klasöründeki libin bulunduğu klasörün ismi

    arm ---> Bluetooth klasöründenin içindeki lib klasörünün içinde bulunan klasörün ismi

    libbluetooth_jni.so ---> libin ismi


    2. durum için

    Elephone P7000 stock romunun system/priv-app klasöründe LatinIME isimi bir klasör var. İçinde lib klasörü ve LatinIME.apk var. Lib klasörünün içinde ise arm64 isimli klasör ve onun içinde libjni_latinime.so libi var.

    symlink("/system/lib64/libjni_latinime.so", "/system/priv-app/LatinIME/lib/arm64/libjni_latinime.so");

    lib64 ---> yazdığımız bu libin aynı zamanda lib64 klasöründe de olduğunu belirtiyor

    libjni_latinime.so ---> libin ismi

    priv-app ---> apk nın priv-app klasörde olduğunu belirtiyor

    LatinIME ---> apk nın bulunduğu klasörün bulunduğu ismi

    lib ---> LatinIME klasöründeki libin bulunduğu klasörün ismi

    arm64 ---> LatinIME klasöründeki lib klasörünün içindeki klasörün ismi

    libjni_latinime.so ---> libin ismi


    3. durum için

    Elephone P7000 Stock romunun app klasöründe elephone nin kendi geliştirmiş olduğu launcher var. Bu klasörün adı XLauncher ve içinde XLauncher.apk ve lib klasörü var. Lib klasörünün içinde ise arm ve onun içinde 2 farklı lib var ( liblocSDK3.so ve libmasonsdkjni.so) Fakat bu libler  system/lib klasöründe ve system/lib64 klasöründe yok. Sadece apk nın bulunduğu klasördeki lib klasörünin içinde var.

    symlink("/system/app/XLauncher/lib/arm/liblocSDK3.so");

    symlink("/system/app/XLauncher/lib/arm/libmasonsdkjni.so");

    app ---> apk nın app klasöründe olduğunu belirtiyor

    XLauncher ---> apk nın bulunduğu klasörün bulunduğu ismi

    lib ---> Xlauncher klasöründeki ve apk ya ait liblerin içinde bulunduğu klasörün ismi

    arm ---> lib klasörünün içinde bulunan ve apk ya ait liblerin içinde olduğu klasörün ismi

    liblocSDK3.so ve libmasonsdkjni.so ---> liblerin isimleri

    Siz de yukarıda verdiğim örneklere bakarak hangi apk larda lib varsa ve hangilerine symlink verilmesi gerekiyorsa örneğin yapısına uyan apk lar için symlink verin. 

    Bazen apk nın kendisi app de fakat libi lib64 te olabiyor buna benzer durumlara dikkat etmeniz gerekiyor.


    İçinde lib bulunan tüm apk lara symlink kodu oluşturmalı mıyım?  ---> Klasöründe libi bulunan tüm apk lara lib vermek zorunda değilsiniz. Fakat  Romu kurarsınız. Bakarsınız nelerin hata verdiğine ki zaten klasörlerinde libi olan apk ların birçoğu hata verecektir. Onların isimlerini bir yere not alın ve yukarıdaki örneklere bakarak symlink oluşturup updater-script in içine yapıştırın ;)

    İçinde lib bulunan bir apk içinde 10 (örnek) tane lib varsa 10 (örnek) tanesine de lib varsa hepsine symlink kodu oluşturmam gerekiyor mu? ---> Evet gerekiyor.


    Örnek updater -script:

    Linkleri Görebilmek için Giriş Yapmanız yada Kayıt Olmanız Gerekmektedir.

    Umarım bu uzun anlatımla gözünüzü korkutmamışımdır. Her şeyi açıklamaya çalıştığım için biraz uzun oldu. Herkese iyi forumlar dilerim ... ;) Bu arada bebeler bu konulara bakıp öğrenip romlarınızda uygulayıp sonra biz yaptık diye peydahlanmayın ortalıkta ;)
     
  2. MadloveR

    MadloveR Administrator
    Site Yetkilisi Administrator

    Ellerin dert görmeye :emoji_slight_smile:
     
  3. Rygebin

    Rygebin Guest

    Teşekkürler. Bir el atayım :emoji_grinning:
     
Yükleniyor...

Bu Sayfayı Paylaş