Apk Düzenleme ve Türkçeleştirme Nasıl Yapılır

APK Türkçeleştirme ve Düzenleme - Resimli ve Videolu Anlatım
Konu içeriğinde neler var ?
---------------------------------------------------

1. Apk ayıklaması (dex arsc raw)
2. Apk toplaması (dex arsc raw)
3. Apk imzalaması (test key ve market)
4. Apk dil düzenlemesi (türkçeleştirme)
5. Apk dil güncellemesi (yeni apk için eski dil dosyası ekleme)
6. Apk içinde istenmeyen öğeleri kaldırma veya ekleme (arayüz için)
7. Apk içinde kod değişikliği
8. Apk içinde reklam kaldırma (3 ayrı yöntem)
9. Apk içinde simge pngleri düzenleme ve ekleme
10. Dil xml dosyalarını türkçeleştirme anlatımı
11. Apkları pc de çalıştırmak ve test etmek
12. Hata düzeltme
13. Apk optimizasyonu
14. Sistem apkları ayıklama
15. Sistem apkları toplama
16. Sistem apklarını direk root ile sisteme yükleme
17. Classes.dex düzenlemesi
18. Smali uzantılı dosyaları düzenleme
19. Google Play Storeden Ücretsiz uygulamaları indirme


Multitools, apk dosyalarını ayıklama, düzenleme ve imzalama gibi işlemleri yapabilen ms-dos yapısında çalışan bilgisayar programıdır. Tarafımdan (noss_bar) kodları düzenlenmiş, güncellenmiş ve türkçe'ye çevrilmiştir. Hala da geliştirmeye devam edilmektedir.

Bu konuda apk ile aradığınız herşeyi bulacağınızdan ve doğru yerde olduğunuzdan emin olabilirsiniz.

Konuyu sürekli takip edin çünkü hem anlatım hemde programlar tarafımdan güncellenmektedir.

Multitools v9.6


-apktool.jar güncellendi
-sistem apk ayıklama sorunları giderildi
-lolipop sistem apk ayıklama desteği geldi
-hata düzeltmeleri
-Kolay sistem frameleri ekleme özelliği seçim 8 ile eklendi
-Açılış parametreleri düzenlendi
-23 ile sistem kaynakları ekleme özelliği

GEREKLİ PROGRAMLAR:
İlk önce bilgisayarda multitools programının çalışması için sisteminizde Basit işlemler için Java gelişmiş işlemler için Java Runtime Kit yüklü olması gerekir. Xml düzenlemek içinde Metin Editorü (Notepad++) indirmeniz gerekir.



Bilgisayarda düzenleme için indirmeler

Multitools for Windows v9.6: İndirmek için tıklayın...
Java: İndirmek için tıklayın...
Notepad++: İndirmek için tıklayın...
Winmerge : İndirmek için tıklayın...

BlueStacks v8.11: İndirmek için tıklayın...
BlueStacks Root (v8.11): İndirmek için tıklayın...
BlueStacks Türkçe Klavye : İndirmek için tıklayın...
Kurulum:
 İndirdiğiniz Multitools.zip arşivinden Multitools klasörünü Masaüstüne çıkartın.


Telefonda düzenleme için indirmeler

Düzenleme yapmak için Root gereklidir.

Multitools for Mobil Android v9.4: İndirmek için tıklayın...
Notepad++ for Android (Droidedit): İndirmek için tıklayın...
Kurulum:
 İndirdiğiniz Multitools.zip arşivinden Multitools_TR.apk yı kurun. Apktool klasörünü sdcard içine atın.

Google Play Storeden ücretsiz apkları indirme için tıklayın


NORMAL APK DÜZENLEME
Düzenlemek istediğiniz apkyı Multitools klasörü içindeki place-apk-here-for-modding klasörü içine atın.

Özet:
- 9 ile uygulamayı ayıklıyoruz
- Düzenleme işlemlerini yapıyoruz
- 11 ile topluyoruz
- 12 ile imzalıyoruz veya 15 ile tek seferde toplayıp imzalıyoruz
- Apk yı cihazımıza atıp kuruyoruz.

Dikkat: Apk isminde boşluk, özel karakterler ve türkçe karakterler kullanmayın. Eğer kullanırsanız Multitools açılışındaatma veya kapanma ve apk ayıklanamama gibi hatalarverebilir. O yüzden kısa ve basit isimler verin.

Türkçe karakterler: ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç

Örnek: ROM Manager (Premium) v5.5.2.8.apk yerine rom.apk veya rommanager.apk gibi kısa isimler verin.


Multitools klasörü içindeki Multitools.bat dosyasını yönetici olarak ( sadece win8 ve win8.1 için) çalıştırın.
Eğer place-apk-here-for-modding klasöründe bir tane apk varsa multitools bunu varsayılan düzenlenecek apk olarak seçecektir. Üst barda seçili uygulama yazmaktadır.

Eğer iki tane ve daha fazla apk varsa seçili uygulama ... gözükecektir. Düzenlemek istediğiniz apkyı seçmek için 19 yazıp enter e basın çıkan ekranda düzenlemek istediğiniz apk'nın sıra numarasını yazıp enterleyin.


Multitools içine varsayılan olarak ayıklama modunu sadece resoruces.arsc ayarladım. Çünkü dil dosyaları resoruces.arsciçindedir. İsteyen olursa ayıklama modunu 20 ile değiştirip uygulama kodlarınıda açıp düzenleyebilir.

Ayıklama modları
1- resources.arsc - classes.dex - raw (Hepsi)
2- sadece resources.arsc (Dil ve arayüz)
3- sadece classes.dex (Kodlaması)
4- sadece raw (medya dosyaları)

Not: En baştan uyarmak isterim boşuna düzenleme ile uğraşmamanız için apk dosyasını daha düzenleme işlemine başlamadan önce bir kere ile ayıklayıp 15 ile toplayın. Bu işlemlerin birinde hata almıyorsanız 9 ile tekrar ayıklayıp düzenlemeye başlayın. Eğer hata alıyorsanız bu konuya yazın çözümünü hep beraber bulalım.

Apk seçme işlemini ve istiyorsanız ayıklama modunu ayarladıktan sonra ekranda da gördüğünüz gibi ile apkyı ayıklıyoruz. Bu işlem apk içindeki ayıklama modunda ayarlanmış olan dosyayı ve res içindeki xml dosyalarını ayıklar. Şimdilik uygulamayı kapatabilir veya simge durumuna küçültebilirsiniz. Ayıkladığımız apk dosyaları mutlitools klasörü içindekiprojects klasörü içinde ayıklanan apk ile aynı isimli klasör içindedir.

Not: Örnek uygulamamızda olduğu gibi rom.apk isminde bir klasör oluşur ve tüm düzenleme işlemlerimiz bu klasör içinde yapılacaktır.


Dil klasörleri uygulama klasörü içindeki res klasörü içindeki values ile başlayan klasörlerdir. values klasörü varsayılan ana dil klasörüdür. Neden ana klasör olduğunu sonra açıklayacağım. Dil dosyaları ise values klasörlerinin içindeki strings.xmlve arrays.xml purrals.xml dosyalarıdır. Büyük çoğunluğu strings.xml dir. arrays.xml ve purrals.xml de genelde liste öğeleri bulunur. Uygulama içinde Türkçe dil varsa values-tr klasörü olması gerekir. Eğer yok ise biz kendimiz values-trisminde yeni bir klasör oluşturup İngilizce dil klasörü içinden yani values klasörü içinden strings.xml ve varsa arrays.xmldosyalarını kopyalayıp values-tr klasörü içine yapıştırıyoruz. Böylece ingilizce dilini taban alarak türkçeleştirme işlemine başlayacağız. Arzu eden varsa values-zh klasörü içindeki Çinçe dil dosyalarını taban alıp türkçeleştirme yapabilir.


Values içindeki bazı xmller:
Strings.xml: Dil dosyası
Arrays.xml: Liste öğeleri
Color.xml: Renk kodları
Style.xml: Görünüm kodları



Şimdi Notepad++ gibi bir metin düzenleyici programı kurup xml dosyalarını bununla açıyoruz. Xml dosyasına sağ tıklayıp özelliklerden varsayılan program olarak notepad++ atarsınız sizin için daha kolaylık olur. Xml dosyasını açıp xmldüzenlemeye başlamadan önce kodlamanın UTF-8 (BOMsuz) olduğundan emin olun. Hatta Notepad++ içinde varsayılan kodlamayı UTF-8 (BOMsuz) atayın. Yoksa ASCI de yazdığınız kelimeleri UTF-8 yapınca tek tek türkçe karakterleri düzenlemek zorunda kalabilirsiniz.

Düzenlenecek metinler resimde görüldüğü gibi siyah renkli yazılardır. Kodlama işaretlerine çok dikkat edin < veya >işaretinin yanlışlıkla silinmesi hataya neden olacaktır.

Örnek satır kodu:
Orjinal: Update ROM

Türkçe: ROM Güncelle

Düzenleme işlemi bittikten sonra değişiklikleri kaydediyoruz.

Eğer programı kapatmışsanız Multitools.bat dosyasını tekrar açın ve eğer iki apk dosyası varsa proje seçme işlemini tekrar yapın. Çünkü multitools yapısı gereği açıldıktan sonra yaptığınız ayarlamaları açık olduğu sürece olarak tutar. Her kapanıp açıldığında varsayılan ayarlar ile başlar. O yüzden apk ayıklama modunu değiştirmişseniz o modu 20 ile tekrar ayarlayın.

11 ile Apkyı topluyoruz veya 15 ile aynı andan hem toplayıp hem de test key ile imzalayabilirsiniz.

11 ile topladıktan sonra 12 ile testkey imzası ile imzalıyoruz.

Oluşturulan imzalı ve imzasız apklar multitools klasörü içinde place-apk-here-for-signing klasörü içindedir. İmzalı olanın isminin başında signed yazılıdır. imzasız olanında unsigned yazılıdır. Apkyı imzaladığınızda unsigned olanı otomatik silinecektir. Signed olanı telefonunuza veya tabletinize atıp kurabilirsiniz.


Test key 12 ile imzalamanın kötü yanı korkmayın uygulama kurulucak sorun yok ama orjinal olanın üzerine kuramayacaksınız ve bu apk yüklü olduğu sürece mağazadan veya elle orjinal apk ya güncelleme yapamayacaksınız. Çünkü düzenlenen apk orijinalinden farklı bir imzaya sahiptir. O yüzden önce sisteminizde kurulu olan orijinal uygulamayı kaldırın ve sonra düzenlediğiniz apkyı kurun veya yeni üst sürüme geçerken düzenlediğiniz apk yı kaldırın ve mağazadan veya elle orjinal apk yı kurun. Ama daha önce multitools ile imzaladığınız apk kurulu ise yeni düzenlediğiniz apk yı direk üstüne kurabilirsiniz. Çünkü iki apk da aynı test key imzasına sahiptir. Kısacası aynı imza ile sürüm yükseltme ve düşürme yapabilirsiniz.

Mağaza imzası 13 ile imzalamak için yapmanız gerekenler resimde gösterilen ayarı yapmanız ve Java JDK (normal java değil) kurmalısınız. Mağaza imzası ile apk imzaladım bazı cihazlarda (4.1.1) apk kurulmadı bazılarında (cm 4.3.1) kuruldu. Ve imzanın özelliğini tam anlamış ve çözmüş değilim. O yüzden sizde deneyebilirsiniz. Ama sorun istemiyorsanız 12 test key kullanmanızı tavsiye ederim.


projects klasörü içinde apk klasörü hala duruyor. Bu klasör içindeki xxx.apk klasörünü silebilirsiniz veya daha sonra kullanmak istiyorsanız apk klasörünü istediğiniz yerde saklayabilirsiniz. Size tavsiyem klasörü saklamanız yerine sadece düzenlediğiniz xml dosyalarını saklamanızdır.
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 Comment
    Facebook Comment

3 yorum:

  1. çok bilgilendirici bir paylaşım olmuş ancak sadece telefon veya tablete inmiş oyunların dilini değiştiren bir program var mı veya biz nasıl değiştirebiliriz. Siz burada play store gibi yerden inen uygulamalar için öreneklemişiniz mesela ben ero game hastasıyım ve apk indiriyorum sırf bu yüzden yarım yamalak japonca anlıyorum oynadığım oyun açıldığında dosya indiriyor ben bundan sonra çıkan her sahnenin alt yazısını türkçe nasıl yapabilirim yardımcı olursanız sevinirim

    YanıtlaSil
  2. selamun aleyküm. bir apk içindeki otomatik güncellemeyi kaldırmak mümkünmüdür. yani eski sürümü acınca yeni sürüme güncelle yazısından kurtulup oyuna giriş yapmak. yardımcı olursanız çok sevinirim. hayırlı geceler.

    YanıtlaSil
    Yanıtlar
    1. Ben bir uygulama dosyasını (renk körleri için uyumlu hale gelmesi için) photoshopta değiştirip yeniden paketledim.Bunun haricinde sadece uygulama adını değiştirdim ve artık güncelleme almıyor.Bu durumda demekki adını değiştirmek yeterli.

      Sil