CM11 Temaları Nasıl Portlanır?

  • Konbuyu başlatan SmiLeToLiFe
  • Başlangıç tarihi
S

SmiLeToLiFe

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 :)

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 ... :D

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 :)  



 
 
S

SmiLeToLiFe

DmXeR' Alıntı:
Bu niye böyle oldu ki şimdi? :slaphead:

   

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

DmXeR

Aktif Üye
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
 
S

SmiLeToLiFe

olmayan simgeler olabiliyor. ona göre kendin yapıcaksın ps falan kullanıp

derken üstad gelmiş benden önce yazmış :D :sigaraiciyor: :bazuka: :batak: 
 

DmXeR

Aktif Üye
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.  :D
 

DmXeR

Aktif Üye
@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?
 

Slience™

Yasaklı Üye
Çok sağolun hocam system ui den başlayalım


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
 
S

SmiLeToLiFe

DmXeR' Alıntı:
@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?

bunun için mesut abinin bi konusu vardı açtı mı bilmiyorum

azizcan' Alıntı:
Çok sağolun hocam system ui den başlayalım


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



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 ;)
 

DmXeR

Aktif Üye
azizcan' Alıntı:
Boyutunu bilmiyorumki hocam :adyo::adyo::adyo:


[font=Monaco, Consolas, Courier, monospace]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.[/font]



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

Slience™

Yasaklı Üye
Sonra drawable-xdpi klasörünü temaya koyup drawable-xxdpi klasörünü silecekmiyim


http://hizliresim.com/1YLZ3A
Ve bazı png lerde bu hatayı veriyo


Çok oldum ama bi soru daha
Hocam temadaki valuable/colors.xml demişsiniz valuable var ama colors.xml yok
http://hizliresim.com/7oqWYv
 
türk porno porno porno izle eryaman escort diyarbakır escort
Üst