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:
Bu temel bilgilerden sonra tema içeren bir apk yapısına bakalım ( temel anlamda bize gerekli olanlar):
Çeşitli değişkenlik arz eden noktalar:
Ş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 temel bilgilerden sonra CM 11 temalarının nasıl portlandığına gelelim:
İhtiyacımız olanlar :
Burada bir apk nasıl decompile edilir vs anlatılmamaktadır!
CM11 Tema Nasıl portlanı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 ...
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 :
Stock systemui colors.xml deki kod:
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 :
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:
Stock systemui styles.xml de bulunan kod:
Bu durumda yapılması gereken şey stock systemui styles.xml de bulunan
bu iki kodun silinmesi ve aşağıdaki satırda bulunan
bulunan renk kodunun ffcccccc den ffffffff ye değiştirilmesi gerekir.
Satırın düzenlenmiş hali
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
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)
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.
- 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.
- 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.
- 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
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.
Ö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 ...
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
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