Android Sistem Apk Düzenleme Nasıl Yapılır.

Apk Düzenleme için Gerekli proğramlar için Tıkla

SİSTEM APK DÜZENLEME

Özet;
- 8 ile ayıklıyoruz (sistem kaynaklarını tanıtıyoruz)
- Düzenleme işlemlerini yapıyoruz
- 10 ile topluyoruz
- Dikkat imzalama yapmıyoruz
- Rom.zip dosyasına veya rootlu cihazda root explorer ile direk system app içine atıyoruz


Buraya kadar normal apklarının düzenlemesini ayıklamasını toplamasını ve imzalamasını anlattım.

Sistem apklarınıda (yani rom.zip içindeki veya cihazındaki system/apps içindeki apklar) düzenlemek için normal uygulamalardaki gibi aynı düzenleme işlemlerini yapıyoruz. Ancak ayıklama ve toplama işlemleri normal apklardan farklıdır.

Sistem apkları üretici firmalar tarafından standart android kaynaklarına ek kaynaklar ekleyerek oluşturulurlar. Bu ek kaynaklar üreticiden üreticiye ayrı ayrı farklılık gösterdiği için bir sistem apksını ayıklamak için üreticinin kendi kaynakları kullanılmalıdır. Bu ek kaynaklar olmadan standart android kaynakları yetersiz kalacak ve bir sistem apksını standar android kaynakları ayıklayamayacaktır. Korkmayın! İki saat google amcada siteminiz için kaynak araştırmaları yapmayacaksınız. Çünkü bu kaynaklar sizin telefonunuzda veya rom dosyasınızda zaten mevcut.

Bu kaynakların biri system/framework içinde framework-res.apk dır diğeri de aynı dizindedir. Üreticiden üreticiye göre farklı adlandırılıdığı için xxxframework-res.apk dır deyip geçeyim. Bu iki kaynak apksını masaüstünüze kopyalayın.

Şimdi önce düzenlemek istediğiniz sistem apksını bu mesajlar uygulaması ayarlar uygulaması olabilir bunları normal uygulamalarda olduğu gibi place-apk-here-for-modding klasörüne atın. Multitool.bat uygulamasını çalıştırın. Eğer iki veya daha fazla sistem apksı modding klasörüne atmışsanız apk seçme işlemini gerçekleştirin.

Şimdi 8 ile sistem apksı ayıklama seçimini yapın. Şimdi multitools sizden telefonun kaynaklarını isteyecek ilk önce masaüstündeki rom veya sistemden çıkardığınız kaynaklardan framework-res.apk yı tutup multitools penceresine sürükleyip bırakın ve enterleyin sonra sizden bu seferde üreticiye ait kaynak dosyasını yani xxxframework-res.apk sını isteyecektir onuda tutup multitools penceresine sürükleyip bırakın ve entere basın. Ve ayıklama işlemi başlayacaktır. Ayıklama işlemi bittikten sonra normal uygulamalarda olduğu gibi düzenlememizi yapıyoruz. Düzenleme işlemleriniz bittikten sonra 10 ile sistem apksını topluyoruz.

Not: Sistem kaynaklarını multitoolsa tanıttıktan sonra eğer aynı romun başka bir sistem apksı düzenleyecekseniz tekrar 8 ile ayıklama işlemi yapabilirsiniz bu sefer sizden kaynak istemeyecektir. çünkü kaynaklarınız zaten multitoolsa tanıttınız. Multitoolsu kapattığınızda en son sistem dosyası düzenlediğiniz ve kaynaklarınız hala durduğu için multtitool açılışta size hala sistem apksı düzenlemeye devam etmek istiyor musunuz diye soracak e vet derseniz sistem kaynaklarını olduğu gibi kalacaktır h ayır derseniz normal uygulamalar için standart android kaynağı atanacaktır. Sonra tekrar sistem apksı düzenlemek isterseniz 8 ile sistem kaynaklarını tanıtmanız gerekir. veya 23 ile ordaki seçeneklerden 0 ile elle kaynak ataması yapabilirsiniz. Bu kaynakların atandığı klasör C:\Kullanıcılar\Kullanıcı adı\apktool\framework klasördür burda sadece 1.apk varsa normal kaynak var demektir eğer 1.apk ve 2.apk varsa sistem kaynakları var demektir.

Düzenlenip toplanmış sistem apknız modified-system-apk-files-here klasöründedir. İsminin başında systemörnek.apk vardır. Bu başındaki system kısmını silip rom.zip dosyasına veya direk rootlu cihazınızda root gezgini özelliğine sahip bir dosya yönetici ile system/app içine atabilirsiniz. Zaten aynı isimde oldukları için karşınıza değişim sorusu gelecektir evetdeyin ve aktif olması için telefonu kapatıp açın veya uygulama güncelleniyor deyip kendiliğinden kapanıp açılır.

Dikkat: Hatalı düzenlemeden kaçının zira sistem apksı düzenliyorsunuz. Cihazınız açılmayabilir. Özellikle systemui gibi arayüz uygulamasının hatalı olması cihazınızın açılması ama arayüzünün gelmemesi gibi sorunla karşılaşabilirsiniz. Bununda tek çaresi tekrar rom yüklemektir. Format factory wipe gibi fabrika ayarlarına alma işlemleri ne yazık ki sorununuzu çözmeyecektir. Tek çare rom yüklemektir.

AÇIKLAMALAR

Ayıklama işleminde hata alıyorsanız bu genelde 1.apk yani kaynak eksikliği hatasıdır. Apk nın ayıklama işlemi için taban alınan 1.apk içeriği eksik olabilir. Zamanla bu apk güncelleniyor şimdilik normal apklar için son sürüm multitoolsu kullanmanız yeterli olacaktır. Sistem apklarında ise cihazınızın framelerini kullanmalısınız.
Apk yı her yeni sürümde sıfırdan türkçeleştirmek gerekiyor mu? HAYIR.
Yapımcı sıfırdan kodlamıyorsa bizimde sıfırdan çeviri yapmamıza gerek yoktur. Ve hayır derken gene az biraz çeviri yapacaksınız. Yeni sürümde eklenen yeni dil satırlarını bulup türkçeleştirip eski dil dosyası strings.xml içine ekleyip bu xml yi yeni apk içine eklemelisiniz. Büyük uygulamalarda 2500 e yakın dil satırı olabilir çeviri uzun sürecektir ama unutmayın bu uygulamayı bir kere çevireceksiniz bir kere için değer diyorum.

Yeni eklenen dil satırları üç türlü bulabilirsiniz

Birinci yöntem yeni apk ya eski dil dosyasını ekleyip telefona kurar ve İngilizce kelimeleri görüp yeni apknın İngilizce dilinden alıp türkçe ye çevirip Türkçe dil dosyasına eklersiniz.

İkinci yöntem excel tablosunda iki dil satırını eski Türkçe ile yeni İngilizce yi iki ayrı sütuna dizer ve A dan Z yesıralarsınız ve name koduna bakarak satır satır kolayca farkları bulabilirsiniz.

Üçüncü yöntem winmerge programını kullanarak eski ve yeni xmle arasındaki farkları görebilir ve metin düzenleyici olduğu için düzenleme işlemi yapabilirsiniz.

Dil dosyasında fazla dil satırlarını bulmak için apkyı topladıktan sonra Kayitlar.log dosyasını açın appt hatasında yazılan dil satırları ve ve fazla olan dil klasörleri gösteriliyor bunları silip azda olsa optimizasyon yapabilirsiniz. Tavsiyem ana klasörvalues ve values-tr dışındaki tüm dil klasörlerini silmeniz ama dikkat edin her values-xx klasörü dil klasörü değildir. Sadece ülke ismi kısaltması olanlar dil klasörleridir. Values-land veya values-v11 vs vs gibi klasörler dil klasörleri değildir bunları silmeyin. Ve eğer başka dillerin içinde arrays ve strings xmleri dışında başka xmller varsa özellik style ve color xmlleri bu dil klasörlerinide silmeyin. Sadece strings ve arrays xmllerini silin

Bazı ülke dil kodları:
tr
 Türkçe - zh Çince - fr Fransızca - ru Rusça - ja Japonca - bg Bulgarca - de Almanca


Dil dosyasında eksik satırlar kalırsa sorun olmaz konuyu baştan aşağı okuduysanız yukarıdavarsayılan ana dil klasörü values olduğunu söylemiştim. Android te sistem dili Türkçe ise apk içinde values-tr yani Türkçe dil dosyasını kullanır ama values-tr içindeki strings xml de eksik dil satırları varsa bunları values içindeki strings.xml den yani varsayılan dil dosyasıdan tamamlar. Bu dil dosyası genelde ingilizcedir. Genelde diyorum çünkü çoğu yazılımcı ingilizce dilinde uygulama yazar ama bu illa ingilizce olacak diye bir şart yok. Çin bir yazılımcı direk varsayılan dili çince de yazabilir. Kısaca eksik satır soruna neden olmaz ama uygulama içinde türkçe dilinden eksik kalan yerlerde ingilizce gözükecektir. Bunları ingilizce dilinden kopyalayıp çevirip türkçe dil dosyasına ekleyebilirsiniz.

Uygulama simgelerini değiştirmek için res klasörü içinde drawable ve drawablexxx klasörleri uygulamanın ana simgesi ve uygulama içinde kullanılan simgelerin olduğu klasördür png şeklinde oldukları için ister MS Paint le ister Photoshop gibi gelişmiş resim düzenleme programlarıyla düzenleyebilir ve değiştirebilirsiniz. Png leri optimize etmek için ayıklama işleminden sonra resim değişikleri yaptıktan sonra ana menüde 2 ile sıkıştırıp kalitesini bozmadan optimize edebilirsiniz. Bu size biraz hafıza boyutu kazandıracaktır özellikle yaptığım denemeler sonucu 6 mb lık tema.apk sini 4 mb ta düşürdüğü olmuştur. 2 mb deyip geçmeyin bir mp3 veya basit bir uygulama daha kurulabilir.

Uygulama içinde istenmeyen satırlar mesela uygulama içinde çoğu yerde, örneğin seçenekler listesinde, ana menüsünde, ayarlarında bağış, hakkında, yardım ve reklam gibi öğeleri kaldırmak için xml layout - menu vs vs klasörleri içindeki xml lerde düzenleme yapmalısınız. Ama her zaman işe yaramayabilir xmleden kaldırmak yetmeyebilir smali kodlarından da kaldırılması gerekebilir.

Örnek: rom managerin ana menüsünde seçeneklere bastığım da bu üç öğe geliyor. Bunlar düzenleyelim.

Bunların kodlarını düzenlemek veya sırasını değiştirmek için res klasörü içinde menu klasörü içinderommanagermenu.xml dosyasını düzenlemek gerekir. Neyi nerede bulacağım derseniz xml adı zaten aşağı yukarı düzenlenecek kısmın adını veriyor. xml yi açıyoruz.
Başlıca xml kod açıklamaları:
Not: 
" xxx " iki tırnak içindeki metin @ ile başlıyorsa yönlendirme kodu var demektir.

Örnek:Android:title="@string/menu_edit" bu yönlendirmenin anlamı kullanılan sistem diline göre bu türkçe ise values-tr klasöründe string dosyası içinde name="menu_edit" satırındaki kelimeyi göster demektir. Eğer bu iki tırnak arasındaki kodu siler direk metin yazarsanız dil ne olursa olsun yönlendirmeyi kaldırdığınız için direk buraya yazdığınız metin gözükecektir.

Android:title="@string/menu_edit"
- android:title="Menü düzenle"

Values içindeki string.xml içinde dil yoksa Dil satırlarını dil dosyalarında bulamıyorsanız resiçinde menu, xml ve layoutklasörleri içindeki xml dosyalarında olabilir. Veya apk içindeki assets klasörü içinde olabilir. Veya yazılımcı kendi bir dizine atmış olabilir. En kötüsü dex içinde olmasıdır. dex ayıklandığında çok ama çok sayıda tahmini en az 100 en fazla 10 000 smali dosyasına dönüşür. Bunların içinde tek tek dil aramakta ayrı bir zorluk olacaktır. Bir uygulamanın sadece classes.dex dosyasını ayıklamak ve toplamak için eklentilerde verdiğim (Sadece Dex Ayiklama TR.zip) dex ayıklama programını da kullanabilirsiniz.

Kısaca string içinde dil yoksa:
1. menu xml ve layout klasörleri içindeki xml dosyalarına bakın
2. Apk dosyası içindeki diğer klasörlerin içine (assets com resource org vs vs) bakın
3. Classes.dex ayıklayıp .smali dosyalarına bakın ama uğraşmayın binlerce var.

Dil kodları: Bunların kodları string dosyalarına yönlendirmelidir.
android:title= Başlık
android:text= Metin
android: summary= Açıklama-özet
android:dialogMessage= Diyalog mesajı

Diğer kodlar: Bu kodlar genelde tasarım - fonksiyon - ayar vs vs kodlarıdır.
android:dialogLayout= Diyalog katmanı
android:textSize= Metin boyutu
android:label= Etiket
android:key= Anahtar
android:action= Eylem
android:targetPackage= Hedef paket.
android:targetClass= Hedef sınıf
android:inputType= Giriş tipi
android:entries= Girişler
android:dependency= Bağımlılık
android:id= Kimlik

Bu satırların yerlerini değiştirseniz uygulama içinde de değişir. Örnek: 2 ile 3 değiştirelim.
Orjinal olan:

Değiştirilen:

Satırı komple silerseniz uygulama içinde o öğe gösterilmez.

Örnek: bağışı olanı kaldıralım.

Arayüzdeki işlev altındaki açıklaması ve uygulama kurulumunda varsayılan ayarını da düzenleyebilirsiniz. Android kullanmaya başladığımdan beri işlev altındaki açıklamalara bir türlü alışamadım. Çok gereksiz olduğunu ve arayüzün sadeliğini bozmaktan başka bir işe yaradıklarını düşünmüyorum. Siz o işlevin açıklaması daha iyi anlaşılması için gereklidir diyebilirsiniz ama bence işlevin adını eğer onu doğru ifade edebilecek kelimeler ile yazılabilirse gerek kalmayacağını söylüyorum. Çeviri kalitesi çok önemlidir. Yıllardır symbian da tek satır kullandık var mıydı anlaşılmayan yer yoktu hatta en kolay kullanılan ve anlaşılan telefonlar nokiaydı ve halada öyledir diyemeyeceğim windows sağolsun.

Önce kaldırmak istediğimiz satırın kodunu dil dosyası olan string.xml içinden bakarak buluyoruz name=" " iki tırnak içinde yazan kod o cümlenin kodudur.

Bu kodun hangi xml içinde olduğunu bulmak için res içinde tüm xml dosya biçimini aratıyoruz. Bulunan tüm xml leri seçip Notepad++ ile aç diyoruz. Seçili tüm xml ler Notepad++ ile açıldığında araç çubuğundan Arama ve sonra Bul tıklıyoruz aranacak kelimeye kodu yazıyoruz ve sağ taraftan açık tüm belgelerde bul diyoruz altta açılan sonuçlara bakarak strings.xmllerini görzmeden gelirseniz zaten geriye kalan xml yi bulursunuz.

Verdiğim örnekte preferences yani tercihlerin olduğunu zaten xml adından anlaşılıyor. Resimde kırmızı ile içine aldığım kısmı silerseniz artık açıklama satırı olmayacaktır. ve ondan sonraki values yani değer kısımınıda falseyaparsanız ayar seçili deği demek true yaparsanız ayar seçili demektir.

Google+'da Paylaş

Hakkında RedkitToledo

    Blogger Yorumları
    Facebook Yorumları

0 yorum:

Yorum Gönder