CM11 Temaları Nasıl Portlanır?

'Discovery Modding' forumunda SmiLeToLiFe tarafından 16 Şubat 2015 tarihinde açılan konu

  1. SmiLeToLiFe

    SmiLeToLiFe Administrator
    Site Yetkilisi Administrator

    1.421
    1.256
    113
    Cihaz:
    Redmi Note 4X
    ROM:
    Miui Global 8.2.10 Stable Sürüm
    Merhaba arkadaşlar

    Tema nasıl yapılır, roma nasıl gömülür sorularına elimden geldiğince cevap vermeye çalışayım.

    DİKKAT: BU KONU ARMUT PİŞ AĞZIMA DÜŞ DEMEYENLER İÇİN AÇILMIŞTIR. TEMA PORTLAMAKTAN ÇOK TEMANIN TEMEL MANTIĞI ANLATILMAKTADIR. GERİSİ SİZİN HAYAL GÜCÜNÜZE KALMIŞ :sigaraiciyor:

    ÖZGÜN ÇALIŞMALAR YAPMAK İSTİYORSANIZ KONUYU SONUNA KADAR OKUYUN :emoji_slight_smile:

    Temanın nasıl çalıştığını anlamak bu işin esasında ana zeminini oluşturur.  Kısacası bir tema şu bileşenlerden oluşur:


    1. Normal PNG ler ->  Örnek olarak: Systemui da bulunan hızlı kontrol butonlarının png leri. Bu png ler olmazsa systemui da o butonlarda olmaz. Romun tema yapısı %90 oranında png lerden oluşur. Apk decompile edilmeden 7ziple açılarak içindeki png ler değiştirilebilir.

    2. 9png ler -> Normal PNG lere göre farklıdır. 9png ler daha çok tema arka planlarını, aç kapa butonlarını vb yerleri düzenlerler. 9png lerde yapılan en küçük hatalarda apk kesinlikle kapanmaz. ( Orochi üstad anlattı forumda 9png düzenlemeyi )Hata verir ( örn: ic_qs_background.9.png malformed. Must have one-pixel frame that is either transparent or white. ). 9 pngler apk decompile edilmeden değiştirilemez.  7ziple apk yı açıp değiştirseniz bile temada büyük oranda bozulmalar yaşanır.

    3. xml ler - > Tema yapısının iskeletini oluştur diyebiliriz. Öyleki hangi png nin nerede kullanılacağına, neresinin hangi renkte olacağına, yazıların kalın mı ince mi, büyüklükleri vb şeyleri düzenlerler. ( Tema dışındaki başka işlevleri de activity dir. Yani sistemde neyin nasıl çalışacağını smalilerle beraber düzenlerler) 

    Bu temel bilgilerden sonra tema içeren bir apk yapısına bakalım ( temel anlamda bize gerekli olanlar):

    - drawble: Her apk dan her apk ya göre içeriği değişir. İçinde xmler ve png ler vardır. Bunların her birisinin farklı işlevleri vardır. 

    - drawable-nodpi: Burada bazen arka planlar, duvar kağıdı bulunur.

    - drawable-xhdpi: Bizim tam anlamıyla ilgilendiren bir klasördür. Tüm png ler ve 9png leri buradan alır. Romun çözünürlüğüne göre değişir. Bizim cihaz için xhdpi başka cihazlar için hdpi / mdpi vb. dir. Temanın ana dosyası olarak  kabul edebiliriz.

    - values: Bizi tam anlamıyla ilgilendiren bir başka klasördür. İçeriğini açmak gerekirse ( Systemui.apk ya göre anlatırsak):
            
                    - colors.xml --> renk kodlarının olduğu xml dir. Örn: systemui deki colors.xml hızlı kontrol butonlarının yazı rengini belirler. Statusbar daki saatin rengini vb. şeylerin rengini belirler.

                   - dimens.xml -->  neyin ne kadar büyük olacağını düzenleyen xml dir. Örn: systemui deki dimens.xml son uygulamalarda gösterilen uygulama pencerelerinin büyüklüklerini düzenler.
                  
                  - drawables.xml --> bu xml de aynı colors.xml gibi renk kodlarını içerir.


                   - styles.xml --> bizi ilgilendiren en önemli xml dir. Tema için en önemli xml dir.  Çünkü tüm gerekli kodları içerebilir. İllede bir şeyin rengini belirtmek için colors.xml kullanmak zorunda değiliz. Styles.xml de de bu kodu belirtebiliriz. Dikkat edilmesi gereken önemli bir xml dir. 

    Çeşitli değişkenlik arz eden noktalar: 

    Her temada renkler colors.xml den ya da her png nin kontrol edeceği nokta styles.xml den belirtilmez. Bunlar bazen 

              - drawble klasöründe bulunan xml ler aracılığı ile bazen de


              - layout klasöründe bulunan xml ler aracılığı ile düzenlenir. 

    Şu ana kadar şu soruyu '' Ben nereden bileceğim hangi xml nereyi , hangi png nereyi, hangi renk kodu nereyi ve hangi dimens kodu nereyi kontrol ediyor? '' sorduysanız cevabını hemen verelim :

    Bu soruya kesin ve net bir cevap veremeyiz. Bu tamamen developerın bilgisine, yeteğine kalmış bir durumdur. Yardımcı olacak bazı noktaları şu şekilde özetleyebiliriz :

             - Png lerde bulunan resimler büyük oranda o png nin neyi kontrol ettiğini söyler. Bu anlaşılamıyorsa deneme yanılma yöntemiyle bulmaya çalışılır.

             - Png isimlerinden yola çıkarak o isim xml dosyalarında aratılır. Eğer png nin nereyi kontrol ettiği biliniyorsa bulunduğu xml dosyası hakkında fikir sahibi olunabilir.

              - Renk kodları da yazı renklerinden vb renklerden yola çıkarak bulunmaya çalışılır. 

    Bu temel bilgilerden sonra CM 11 temalarının nasıl portlandığına gelelim: 

    İhtiyacımız olanlar :

    1. Resizer_1.3.3 ( 9png resizer )



    2. Pc de java yüklü olması lazım



    3. Advanced ApkTool ya da bir benzeri



    4. Kaynak tema dosyaları



    5. Temalamak istediğimiz apk



    6. Note++



    7. 7zip 



    8. FastStone Photo Resizer  


    Burada bir apk nasıl decompile edilir vs anlatılmamaktadır!


    CM11 Tema Nasıl portlanır?

    CM11 Tema içeriği:

    Öncelikle indirdiğimiz tema apk sını 7ziple açalım ve assets dosyasını dışarı çıkaralım.  Bu dosyanın içinde alarm sesleri, animasyonlar, duvar kağıtları, ikonlar, fontlar, tema dosyaları vb. klasörler bulunur. Bizi öncelikle ilgilendiren klasör overlays klasörüdür. Temayı oluşturan klasörler buradadır. 

    Örn. Systemui.apk düzenlemek 

    İndirmiş olduğunuz tema.apk sının içindeki overlays klasöründen ilk olarak com.android.systemui klasörünü açalım. 

    Systemui temalamak için stock systemui.apk yı decompile edelim. Tema klasörünü ve systemui klasörünü yan yana açalım İçinde bahsettiğim apk yapısında olan klasörler vardır. 

    1. tema klasöründeki drawble klasörü içindeki xml leri stock systemui daki drawble içindekilerle değişelim

    2. Tema klasörü içinde drawable-xxhdpi klasörü varsa içindekileri Resizer_1.3.3  programıyla drawable-xhdpi boyutunda yeniden boyutlandıralım. Sonra buradakileri tema klasöründe bulunan drawable-xhdpi klasörüne atalım ve aynı olanlar varsa değiştir diyelim. Şimdi tema klasöründeki drawable-xhdpi de bulunan png leri stock systemui daki drawable-xhdpi içine kopyalayım ve aynı olanlara değiştir diyelim. 

    Bazı png ler aynı işlevi görse bile isimleri farklı olabilir o yüzden değişmeyeceklerdir. Bunları tek tek kontrol etmeniz gerekiyor...


    Şimdi gelelim filmin koptuğu noktaya ... :emoji_grinning:

    3. tema klasöründeki values klasörüne girelim içinde bulunan colors.xml deki kodları  NOTE++ yardımıyla stock systemui values colors.xml de bulunan kodlarla aynı olanlarını tek tek dikkatli bir şekilde değiştirelim. Örn: 

    Tema klasörü colors.xml deki kod : 

    Kod:
      <color name="status_bar_recents_app_label_color">#ff000000</color>
    Stock systemui colors.xml deki kod:

    Kod:
        <color name="status_bar_recents_app_label_color">#ffffffff</color>
    Yapmanız gereken şey temada colors.xml de bulunan ff000000 kodunu stock systemui colors.xml deki ffffffff koduyla değiştirin. Stock systemui colors.xml deki kodun alacağı son durum :   

    Kod:
    <color name="status_bar_recents_app_label_color">#ff000000</color>
    4. tema colors.xml de olup da stock systemui colors.xml de olmayan kodları ekleyin ...

    5. aynı şeyleri drawbles.xml için de yapın. 

    6.şimdi gelelim styles.xml e ...

    Yine aynı şeyleri yapıcaz. Birebir aynı kodları değiştirmenize gerek yok. Temada styles.xml de bulunan olupta stock systemui styles.xml de olmayanları ekleyin.  Aynı olan kodların içeriğinde stock systemui styles.xml de olup tema styles.xml olmayan kodları silin. 

    Bu en son söylediğime örnek olarak :

    Tema styles.xml de bulunan kod: 


    Kod:
        <style name="TextAppearance.StatusBar.Expanded.Date" parent="@style/TextAppearance.StatusBar.Expanded">
            <item name="android:textColor">#ffffffff</item>
            <item name="android:textAllCaps">true</item>
        </style>
    Stock systemui styles.xml de bulunan kod: 

    Kod:
    <style name="TextAppearance.StatusBar.Expanded.Date" parent="@style/TextAppearance.StatusBar.Expanded">
            <item name="android:textSize">12.0dip</item>
            <item name="android:textStyle">normal</item>
            <item name="android:textColor">#ffcccccc</item>
            <item name="android:textAllCaps">true</item>
        </style>
    Bu durumda yapılması gereken şey stock systemui styles.xml de bulunan   

    Kod:
     <item name="android:textSize">12.0dip</item>
     <item name="android:textStyle">normal</item>
    bu iki kodun silinmesi ve aşağıdaki satırda bulunan

    Kod:
    <item name="android:textColor">#ffcccccc</item>
    bulunan renk kodunun ffcccccc den ffffffff ye değiştirilmesi gerekir. 



    Satırın düzenlenmiş hali

    Kod:
    <item name="android:textColor">#ffffffff</item>
    Tüm bunlar bittikten sonra apk sign edilmeden yani imzalanmadan compile yapılır. Stock systemui.apk nın değişiklik yapılmamış hali ve stock systemui.apk nın değişiklik yapılmış hali 7ziple açılır. Değişiklik yapılmayanın içinden META-INF ve AndroidManifest.xml alınarak değişiklik yapılmış olan apk dakilerle değiştirilir. 

    Son olarak düzenlediğiniz apk yı sisteme gömün. 


    Yararlı siteler ve ek bilgiler


    Yeni başlayanlar için gerçekten çok yararlı bir site : http://romannurik.github.io/AndroidAssetStudio/

    Hangi renk kodu hangi rengi belirtiyor ? Renk kodunun son 6 hanesini yazın : http://www.colorhexa.com/

    Material renk kodları : http://www.google.com/design/spec/style/color.html#color-color-palette

    Xml lerin daha ayrıntılı olarak editlenme şeklini mms.apk nasıl temalanır konusunda forumda anlatmıştım: http://forum.turkdevs.com/konu-ayrintili-anlatim-mms-apk-nasil-temalanir.html 



    Not: malum kişiler bu konudan yararlanıp ardından  212121 renk kodlarını biz bulduk falan demeyin darılırım :emoji_slight_smile:  



     
     
  2. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    Ellerinize sağlık hocam. Anlatımlara devam. :rool:
     
  3. Green

    Green Kayıtlı Üye
    Kayıtlı Üye

    75
    7
    8
    Elinize Saglik :emoji_slight_smile:
     
  4. MadloveR

    MadloveR Administrator
    Site Yetkilisi Administrator

    496
    335
    63
    Beklenen anlatım geldi nihayet. Eline Sağlık Seyfi.
     
  5. RidersOfAnatolia

    RidersOfAnatolia Aktif Üye
    Aktif Üye

    317
    252
    0
    Bekliyordum sağolasın abi :laugh:
     
  6. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    Bu niye böyle oldu ki şimdi? :slaphead:

    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.
     
  7. SmiLeToLiFe

    SmiLeToLiFe Administrator
    Site Yetkilisi Administrator

    1.421
    1.256
    113
    Cihaz:
    Redmi Note 4X
    ROM:
    Miui Global 8.2.10 Stable Sürüm
    tam olarak bundan bahsettim konuda ;)

    '' 2. Tema klasörü içinde drawable-xxhdpi klasörü varsa içindekileri Resizer_1.3.3 programıyla drawable-xhdpi boyutunda yeniden boyutlandıralım. Sonra buradakileri tema klasöründe bulunan drawable-xhdpi klasörüne atalım ve aynı olanlar varsa değiştir diyelim. Şimdi tema klasöründeki drawable-xhdpi de bulunan png leri stock systemui daki drawable-xhdpi içine kopyalayım ve aynı olanlara değiştir diyelim.

    Bazı png ler aynı işlevi görse bile isimleri farklı olabilir o yüzden değişmeyeceklerdir. Bunları tek tek kontrol etmeniz gerekiyor... ''
     
  8. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    Hocam paketin içinde simgeler yokki mesela oto döndürmede 3 tane png olması lazım xxhdpi klasörünü falan da yeniden boyutlandırdım hata veren iconda olmadı. Ama sadece 1 tane oto döndürme iconu var tema da. Tema mı sorunlu ben mi sorunluyum anlamadım ki. o_O
     
  9. Orochi™

    Orochi™ Administrator
    Site Yetkilisi Administrator

    4.185
    3.389
    122
    Cihaz:
    RN3 PRO & UMI TOUCH
    ROM:
    Amigo Os v3.2
    Onları kendin tasarlayacaksin bknz PhotoShop :emoji_slight_smile:
     
  10. SmiLeToLiFe

    SmiLeToLiFe Administrator
    Site Yetkilisi Administrator

    1.421
    1.256
    113
    Cihaz:
    Redmi Note 4X
    ROM:
    Miui Global 8.2.10 Stable Sürüm
    olmayan simgeler olabiliyor. ona göre kendin yapıcaksın ps falan kullanıp

    derken üstad gelmiş benden önce yazmış :emoji_grinning: :sigaraiciyor: :bazuka: :batak: 
     
  11. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    Ben de şimdi onla uğraşıyordum. Hatam yokmuş demek ki. Simgenin içini siyah doldurup off beyaz doldurup on yapacaktım. :bazuka:
    Edit: Bir de setting apk düzenleyeyim dedim aynılarını yaptım hata üstüne hata verdi. 2 kere sil baştan yaptım yine olmadı. Farklı bişey mi yapacağız onda?
    2.Edit: Hocam şimdi sizi daha iyi anlıyorum. Çok zormuş bu ya. Bir istekde bulunurken iki kere düşüncem artık.  :emoji_grinning:
     
  12. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    @SmiLeToLiFe @Orochi™ Hocam batarya ikonu değiştirmek için ne yapmam lazım. İkonları yok draweble klasörü içinde. XML den düzenlenecekse hangi XML ve ikon nasıl ekleyeceğim?
     
  13. Slience™

    Slience™ Yasaklı Üye
    Yasaklı Üye

    394
    122
    0
    Çok sağolun hocam system ui den başlayalım
    [hr]
    http://hizliresim.com/yPEz7y
    Hocam system ui yapıyodum drawable-xxhdpi varsa drawable-xhdpi boyutuna göre ayarlayın demişsiniz ama drawable-xhdpi yok :what: :what: :what: resimdeki gibi
     
  14. SmiLeToLiFe

    SmiLeToLiFe Administrator
    Site Yetkilisi Administrator

    1.421
    1.256
    113
    Cihaz:
    Redmi Note 4X
    ROM:
    Miui Global 8.2.10 Stable Sürüm
    bunun için mesut abinin bi konusu vardı açtı mı bilmiyorum

    o zaman temanın uyumlu olduğu cihaz xxhdpi çözünürlükte. olsun o farketmez ki. sen boyutlandır içindeki dosyaları xhdpi ye göre ;)
     
  15. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28
    Yaptım hocam konuyu görmemişim altlarda kalmış. :emoji_grinning:
     
  16. Slience™

    Slience™ Yasaklı Üye
    Yasaklı Üye

    394
    122
    0
    Boyutunu bilmiyorumki hocam :adyo::adyo::adyo:
     
  17. DmXeR

    DmXeR Aktif Üye
    Aktif Üye

    177
    25
    28



    Bilmene gerek yok ki. Sadece tik koyacakasın dosyaları sürükleyeceksin o kadar.
     
  18. Slience™

    Slience™ Yasaklı Üye
    Yasaklı Üye

    394
    122
    0
    Sonra drawable-xdpi klasörünü temaya koyup drawable-xxdpi klasörünü silecekmiyim
    [hr]
    http://hizliresim.com/1YLZ3A
    Ve bazı png lerde bu hatayı veriyo
    [hr]
    Çok oldum ama bi soru daha
    Hocam temadaki valuable/colors.xml demişsiniz valuable var ama colors.xml yok
    http://hizliresim.com/7oqWYv
     
  19. hakan.k

    hakan.k Yasaklı Üye
    Yasaklı Üye

    349
    49
    0
    Portlanacak temaları nereden bulabiliriz?
     
  20. Captain

    Captain Aktif Üye
    Aktif Üye

    651
    296
    63

    playde cm11 tema diye arat bulursun :emoji_slight_smile:
     
Yükleniyor...

Bu Sayfayı Paylaş