Uygulamanızı Google Play'de yayınlarsanız bir Android App Bundle oluşturup yüklemeniz gerekir. Bunu yaptığınızda Google Play, her kullanıcının cihaz yapılandırmasına göre optimize edilmiş APK'ları otomatik olarak oluşturur ve yayınlar. Böylece kullanıcılar yalnızca uygulamanızı çalıştırmak için ihtiyaç duydukları kodu ve kaynakları indirir. Birden fazla APK yayınlamak, Google Play'de yayınlamadığınız durumlarda kullanışlıdır. Ancak her APK'yı kendiniz oluşturmanız, imzalamanız ve yönetmeniz gerekir.
Birden fazla APK desteği, Google Play'de uygulamanız için her biri farklı cihaz yapılandırmalarını hedefleyen farklı APK'lar yayınlamanıza olanak tanıyan bir özelliktir. Her APK, uygulamanızın tam ve bağımsız bir sürümüdür ancak Google Play'de aynı uygulama girişini paylaşır. Ayrıca aynı paket adını paylaşmalı ve aynı sürüm anahtarıyla imzalanmalıdır. Bu özellik, uygulamanızın tek bir APK ile istenen tüm cihazlara erişemediği durumlarda faydalıdır.
Android destekli cihazlar çeşitli yönlerden farklılık gösterebilir ve uygulamanızı mümkün olduğunca fazla cihazda kullanıma sunmanız uygulamanızın başarısı için önemlidir. Android uygulamaları genellikle farklı yapılandırmalar için alternatif kaynaklar (örneğin, farklı ekran boyutları için farklı düzenler) sağlayarak çoğu uyumlu cihazda tek bir APK ile çalışır ve Android sistemi, çalışma zamanında cihaz için uygun kaynakları seçer. Bazı durumlarda ise tek bir APK tüm cihaz yapılandırmalarını destekleyemez. Bunun nedeni, alternatif kaynakların APK dosyasının çok büyük olmasına yol açması veya diğer teknik zorlukların tek bir APK'nın tüm cihazlarda çalışmasını engellemesidir.
Google Play, uygulamanızı mümkün olduğunca çok cihaz için yayınlamanıza yardımcı olmak amacıyla aynı uygulama listesi altında birden fazla APK yayınlamanıza olanak tanır. Google Play daha sonra her APK'nın manifest dosyasında beyan ettiğiniz yapılandırma desteğine göre her APK'yı uygun cihazlara sağlar.
Uygulamanızı birden fazla APK ile yayınlayarak:
- Her APK ile farklı OpenGL doku sıkıştırma biçimlerini destekleme.
- Her APK'da farklı ekran boyutları ve yoğunluklarını destekleyin.
- Her APK'da farklı cihaz özelliği gruplarını destekleme.
- Her APK ile farklı platform sürümlerini destekleyin.
- Her APK ile farklı CPU mimarilerini destekleyin (ör. uygulamanız Android NDK kullanıyorsa ARM veya x86 için).
- Android (Go sürümü) çalıştıranlar gibi giriş düzeyindeki cihazlar için optimize edin.
Şu anda, Google Play'in aynı uygulamada birden fazla APK yayınlamak için desteklediği cihaz özellikleri yalnızca bunlardır.
Not: Google Play'de APK'ları hazırlama ve yayınlama hakkında bilgi edinmek için Sürümleri hazırlama ve kullanıma sunma destek makalesine bakın.
Birden fazla APK'nın işleyiş şekli
Google Play'de birden fazla APK kullanmanın konsepti, Google Play'de uygulamanız için yalnızca bir girişiniz olması, ancak farklı cihazlar farklı bir APK indirebilmesidir. Bunun anlamı şudur:
- Yalnızca bir grup ürün ayrıntısı (uygulama açıklaması, simgeler, ekran görüntüleri vb.) sağlıyorsunuz. Bu ayrıca farklı APK'lar için farklı bir ücret alamayacağınız anlamına da gelir.
- Tüm kullanıcılar Google Play'de uygulamanızın yalnızca bir sürümünü görürler, dolayısıyla yayınlamış olabileceğiniz "tabletler için" veya "telefonlar için" farklı sürümlerle karıştırılmazlar.
- Farklı cihazlardaki kullanıcıların APK'ları farklı olsa bile tüm kullanıcı yorumları aynı uygulama girişine uygulanır.
- Android'in farklı sürümleri için farklı APK'lar yayınlarsanız (farklı API düzeyleri için) bir kullanıcının cihazı, yayınladığınız farklı bir APK için nitelendirilebilecek bir sistem güncellemesi aldığında Google Play, kullanıcının uygulamasını Android'in daha yüksek sürümü için tasarlanmış APK'ya günceller. Uygulamayla ilişkili tüm sistem verileri saklanır (tek bir APK kullanılırken normal uygulama güncellemelerinde olduğu gibi).
Desteklenen filtreler
Her APK'yı hangi cihazların alacağı, her APK'nın manifest dosyasındaki öğelerle belirtilen Google Play filtreleri tarafından belirlenir. Bununla birlikte, Google Play yalnızca her bir APK aşağıdaki cihaz özelliklerinin bir varyasyonunu desteklemek için filtreler kullandığında birden fazla APK yayınlamanıza izin verir:
- OpenGL doku sıkıştırma biçimleri
Bu, manifest dosyanızın
<supports-gl-texture>
öğelerine dayanır.Örneğin, OpenGL ES kullanan bir oyun geliştirirken ATI doku sıkıştırmayı destekleyen cihazlar için bir APK ve PowerVR sıkıştırmayı destekleyen cihazlar için (diğer birçok yöntemle) ayrı bir APK sağlayabilirsiniz.
- Ekran boyutu (ve isteğe bağlı olarak ekran yoğunluğu)
Bu, manifest dosyanızın
<supports-screens>
veya<compatible-screens>
öğesine bağlıdır. Her iki öğeyi de asla kullanmamalısınız ve mümkün olduğunda yalnızca<supports-screens>
kullanmalısınız.Örneğin, küçük ve normal boyutlu ekranları destekleyen bir APK ile büyük ve büyük ekranları destekleyen başka bir APK sağlayabilirsiniz. Ekran boyutuna veya yoğunluğuna göre ayrı APK'lar oluşturma hakkında daha fazla bilgi edinmek için Birden Çok APK Oluşturma konusuna gidin.
Tüm ekran boyutlarını desteklemek için aşağıdaki en iyi uygulamalardan yararlanabilirsiniz:
- Android sistemi, tek bir APK ile tüm ekran yapılandırmalarını destekleyen uygulamalara yönelik güçlü destek sağlar. Kesinlikle gerekli olmadığı sürece farklı ekranları destekleyen birden fazla APK oluşturmaktan kaçınmalı, bunun yerine uygulamanızın esnek olmasını ve tek bir APK ile tüm ekran yapılandırmalarına uyum sağlayabilmesi için Birden Fazla Ekranı Destekleme kılavuzunu kullanmalısınız.
- Varsayılan olarak, aksi beyan etmezseniz
<supports-screens>
öğesindeki tüm ekran boyutu özellikleri "true" (doğru) olur. Bununla birlikte,android:xlargeScreens
özelliği Android 2.3'te (API düzeyi 9) eklendiğinden, uygulamanızandroid:minSdkVersion
veyaandroid:targetSdkVersion
"9" ya da daha yüksek bir değere ayarlanmazsa Google Play bunun "false" (yanlış) olduğunu varsayar. - Manifest dosyanızda hem
<supports-screens>
hem de<compatible-screens>
öğelerini birleştirmemeniz gerekir. Her ikisinin de kullanılması, aralarındaki çakışmalar nedeniyle hata verme olasılığınızı artırır. Hangisini kullanacağınıza karar verme konusunda yardım için Belirli Ekranlara Dağıtma bölümünü okuyun. İkisini birden kullanmaktan kaçınamıyorsanız belirli bir boyut arasında uyumsuzlukların olması durumunda "false"nun geçerli olacağını unutmayın.
- Cihaz özelliği grupları
Bu, manifest dosyanızın
<uses-feature>
öğelerine dayanır.Örneğin, çoklu dokunmayı destekleyen cihazlar için bir APK, çoklu dokunmayı desteklemeyen cihazlar için de başka bir APK sağlayabilirsiniz. Platform tarafından desteklenen özelliklerin listesi için Özellikler Referansı'na göz atın.
- Android (Go sürümü)
Android (Go sürümü) çalıştıran cihazları hedeflemek için APK'nızın
<uses-feature android:name="android.hardware.ram.low" android:required="true">
beyan etmesi, en az API Düzeyi 26'yı hedeflemesi ve Go dışı sürüm APK'nızdan daha yüksek bir sürüm koduna sahip olması gerekir. - API düzeyi
Bu, manifest dosyanızın
<uses-sdk>
öğesine bağlıdır. Farklı API seviyeleri için destek belirtmek amacıyla hemandroid:minSdkVersion
hem deandroid:maxSdkVersion
özelliklerini kullanabilirsiniz.Örneğin, uygulamanızı API düzeyi 16 - 19'u destekleyen bir APK ile (Android 4.1.x - 4.4.4) (yalnızca API düzeyi 16 veya alt sürümünden beri kullanılabilen API'leri kullanarak) ve API düzeyi 21 ve üstünü destekleyen başka bir APK'yla (Android 5.0+) yayınlayabilirsiniz. Bunun için API düzeyi 21 veya daha düşüklerinden beri mevcut olan API'leri kullanabilirsiniz. Her biri farklı bir API aralığını hedefleyen ayrı APK'lar oluşturmayı öğrenmek için Ürün Aromalarını Yapılandırma bölümüne gidin.
Birden fazla APK'yı ayırt etme unsuru olarak bu özelliği kullanırsanız daha yüksek
android:minSdkVersion
değerine sahip APK'nın daha yüksekandroid:versionCode
değerine sahip olması gerekir. Bu durum, iki APK'nın desteklenen bir filtreye göre cihaz desteğiyle çakıştığı durumlarda da geçerlidir. Böylece, cihaz sistem güncellemesi aldığında Google Play, kullanıcıya uygulamanız için bir güncelleme sunabilir (güncellemeler, uygulama sürüm kodundaki artışa dayanır). Bu gereksinim, aşağıdaki Birden fazla APK için kurallar bölümünde daha ayrıntılı bir şekilde açıklanmaktadır.Genel API'ler ile uygulamanızı düzgün bir şekilde geliştirdiğiniz sürece bu uygulama her zaman Android'in gelecekteki sürümleriyle uyumludur. Bu nedenle,
android:maxSdkVersion
kullanmaktan kaçınmalısınız. Daha yüksek API seviyeleri için farklı bir APK yayınlamak isterseniz de maksimum sürümü belirtmeniz gerekmez. Çünküandroid:minSdkVersion
bir APK'da"16"
, bir başkasında"21"
ise API düzeyi 21 veya üstünü destekleyen cihazlar her zaman ikinci APK'yı alır (çünkü sürüm kodu önceki nota göre daha yüksek olacaktır). - CPU mimarisi (ABI)
Bazı yerel kitaplıklar, belirli CPU mimarileri veya Uygulama İkili Arabirimleri (ABI'ler) için ayrı paketler sağlar. Mevcut tüm kitaplıkları tek bir APK'da paketlemek yerine, her ABI için ayrı bir APK oluşturabilir ve yalnızca bu ABI için ihtiyacınız olan kitaplıkları ekleyebilirsiniz. Hedef ABI'ye göre ayrı APK'lar oluşturma hakkında daha fazla bilgi edinmek için Birden Çok APK Oluşturma bölümüne gidin.
Google Play filtrelerini etkinleştiren ancak yukarıda listelenmeyen diğer manifest öğeleri her bir APK için her zamanki gibi uygulanmaya devam eder. Ancak Google Play, bu cihaz özelliklerinin varyasyonlarına göre ayrı APK'lar yayınlamanıza izin vermez. Dolayısıyla, yukarıda listelenen filtreler her bir APK için aynıysa birden fazla APK yayınlayamazsınız (ancak APK'lar, manifest veya APK'daki diğer özelliklere göre farklılık gösterir). Örneğin, tamamen <uses-configuration>
özellikleriyle farklılık gösteren farklı APK'lar sağlayamazsınız.
Birden fazla APK için kurallar
Uygulamanız için birden fazla APK yayınlamadan önce aşağıdaki kuralları anlamanız gerekir:
- Aynı uygulama için yayınladığınız tüm APK'lar aynı paket adına sahip olmalı ve aynı sertifika anahtarıyla imzalanmalıdır.
- Her APK'nın
android:versionCode
özelliğiyle belirtilen farklı bir sürüm kodu olmalıdır. - Her APK başka bir APK'nın yapılandırma desteğiyle tam olarak eşleşmemelidir.
Yani her APK, desteklenen Google Play filtrelerinden (yukarıda listelenmiştir) en az biri için biraz farklı destek beyan etmelidir.
Genellikle APK'larınızı belirli bir özelliğe (desteklenen doku sıkıştırma biçimleri gibi) göre farklılaştırırsınız ve bu nedenle her APK, farklı cihazları desteklediğini beyan eder. Ancak, destekleriyle biraz örtüşen birden fazla APK yayınlamanızda bir sakınca yoktur. İki APK çakıştığında (aynı cihaz yapılandırmalarından bazılarını desteklerler) bu çakışan aralıkta yer alan bir cihaz, APK'yı daha yüksek sürüm koduna (
android:versionCode
tarafından tanımlanır) sahip alır. - Değiştirdiği APK'nınkinden daha düşük sürüm koduna sahip yeni bir APK'yı etkinleştiremezsiniz. Örneğin,
0400
sürüm koduna sahip küçük ekran boyutları için etkin bir APK'nızın olduğunu varsayalım. Bu APK'yı, aynı ekran boyutları için0300
sürüm koduna sahip bir APK ile değiştirmeyi deneyin. Bu durumda hata oluşur, çünkü önceki APK'nın kullanıcılarının uygulamayı güncelleyemeyeceği anlamına gelir. - Daha yüksek API düzeyi gerektiren bir APK, daha yüksek sürüm koduna sahip olmalıdır.
Bu durum yalnızca: APK'lar yalnızca desteklenen API düzeylerine göre farklılık gösterdiği (desteklenen başka filtreler birbirlerinden ayırt etmediği) veya desteklenen başka bir filtre kullandığında ancak ilgili filtredeki APK'lar arasında çakışma olduğu durumlarda geçerlidir.
Kullanıcı cihazı, yalnızca Google Play'deki APK'nın sürüm kodu cihazda mevcut APK'nın sürüm kodundan yüksek olduğunda Google Play'den uygulama güncellemesi aldığından bu önemli bir husustur. Bu şekilde, bir cihaz daha yüksek API seviyeleri için APK'yı yüklemek üzere uygun hale getiren bir sistem güncellemesi alırsa sürüm kodu arttığı için uygulama güncellemesi alır.
Not: Sürüm kodu artışının boyutu önemli değildir. Daha yüksek API düzeylerini destekleyen sürümde daha büyük olması yeterlidir.
Bazı örnekler:
- API düzeyi 16 ve üzeri (Android 4.1.x+) için yüklediğiniz bir APK'nın sürüm kodu
0400
ise API düzeyi 21 ve üzeri (Android 5.0 ve üzeri) için APK,0401
veya üzeri olmalıdır. Bu durumda, API düzeyi desteklenen tek filtredir. Bu nedenle sürüm kodlarının her APK için API düzeyi desteğiyle olan bağıntısı artırmalıdır. Böylece kullanıcılar bir sistem güncellemesi aldıklarında güncelleme alırlar. - API düzeyi 16 (ve üstü) ile küçük - büyük ekranlar için bir APK'nız ve API düzeyi 21 (ve üzeri) için başka bir APK'nız ve büyük - xlarge ekranlar için başka bir APK'nız varsa sürüm kodlarının API düzeyleriyle ilişkili olarak artması gerekir. Bu durumda, her APK'yı ayırt etmek için API düzeyi filtresi kullanılır, ancak ekran boyutu da kullanılır. Ekran boyutları çakıştığından (her iki APK da büyük ekranları desteklediğinden) sürüm kodlarının düzenli olması gerekir. Bu şekilde, API düzeyi 21 için bir sistem güncellemesi alan büyük ekranlı cihazın ikinci APK için bir güncelleme alması sağlanır.
- API düzeyi 16 (ve üstü) ile küçük - normal ekranlara yönelik bir APK'nız ve API düzeyi 21 (ve üzeri) için başka bir APK'nız ve büyük - xlarge ekranlar için olan başka bir APK'nız varsa sürüm kodlarının API seviyeleriyle ilişkili olarak artırılması gerekmez. Ekran boyutu filtresi dahilinde herhangi bir çakışma olmadığından, bu iki APK arasında geçiş yapabilecek herhangi bir cihaz yoktur. Bu nedenle, sürüm kodlarının alt API düzeyinden üst API seviyesine çıkmasına gerek yoktur.
- API düzeyi 16 (ve üstü) ve ARMv7 CPU'lara yönelik bir APK'nız ve API düzeyi 21 (ve üstü) ve ARMv5TE CPU'lar için başka bir APK'nız varsa sürüm kodlarının API düzeyleriyle ilişkisinde artış olması gerekir. Bu durumda, her APK'yı ayırt etmek için API düzeyi filtresi kullanılır, ancak CPU mimarisi de kullanılır. ARMv5TE kitaplıklarına sahip bir APK, ARMv7 CPU'ya sahip cihazlarla uyumlu olduğundan APK'lar bu özellikle çakışır. Bu nedenle, API düzeyi 21 ve üstünü destekleyen APK'nın sürüm kodu daha yüksek olmalıdır. Bu şekilde, API düzeyi 21'e sistem güncellemesi alan ARMv7 CPU'ya sahip bir cihaz, API düzeyi 21 için tasarlanmış ikinci APK için güncelleme alır. Ancak, bu tür bir güncelleme sonucunda ARMv7 cihazı, cihazın CPU'su için tamamen optimize edilmemiş bir APK kullandığından, uygulama performansını her CPU'da optimize etmek amacıyla her API düzeyinde hem ARMv5TE hem de ARMv7 mimarisi için bir APK sağlamanız gerekir. Not: Bu durum yalnızca APK'ları ARMv5TE ve ARMv7 kitaplıklarıyla karşılaştırırken geçerlidir, diğer yerel kitaplıkları karşılaştırırken geçerli değildir.
- API düzeyi 16 ve üzeri (Android 4.1.x+) için yüklediğiniz bir APK'nın sürüm kodu
Yukarıdaki kurallara uyulmaması, APK'larınızı etkinleştirdiğinizde Google Play Console'da bir hatayla sonuçlanır. Hata düzeltilene kadar uygulamanızı yayınlayamazsınız.
APK'larınızı etkinleştirdiğinizde oluşabilecek başka çakışmalar vardır ancak bunlar hata yerine uyarıyla sonuçlanır. Uyarılara aşağıdakiler neden olabilir:
- Bir APK'yı, cihaz özelliklerine yönelik desteği"daraltacak" şekilde değiştirdiğinizde ve başka hiçbir APK desteklenen aralığın dışında kalan cihazları desteklemez. Örneğin, bir APK şu anda küçük ve normal boyutlu ekranları destekliyorsa ve bunu yalnızca küçük ekranları destekleyecek şekilde değiştirirseniz desteklenen cihazlar havuzunu küçültmüş olursunuz ve bazı cihazlar artık Google Play'de uygulamanızı görmeyecektir. Önceden desteklenen tüm cihazların desteklenmeye devam etmesi için normal boyutlu ekranları destekleyen başka bir APK ekleyerek bu sorunu çözebilirsiniz.
- İki veya daha fazla APK arasında "çakışma" olduğunda. Örneğin, bir APK küçük, normal ve büyük ekran boyutlarını desteklerken başka bir APK büyük ve xlarge boyutlarını desteklerse her iki APK da büyük ekranları desteklediğinden çakışma olur. Bu sorunu çözmezseniz her iki APK için de uygun olan cihazlar (örnekteki büyük ekranlı cihazlar) en yüksek sürüm koduna sahip APK'yı alır.
Not: Farklı CPU mimarileri için ayrı APK'lar oluşturuyorsanız ARMv5TE APK'sının, ARMv7 APK'sı ile çakışacağını unutmayın. Diğer bir deyişle, ARMv5TE için tasarlanmış bir APK, ARMv7 cihazıyla uyumludur ancak bunun tersi geçerli değildir (Yalnızca ARMv7 kitaplıklarına sahip bir APK, ARMv5TE cihazıyla uyumlu değildir).
Bu tür çakışmalar oluştuğunda uyarı mesajı gösterilir ancak uygulamanızı yayınlamaya devam edebilirsiniz.
Birden fazla APK oluşturma
Birden fazla APK yayınlamaya karar verdiğinizde, yayınlamayı düşündüğünüz her APK için ayrı Android projeleri oluşturmanız gerekir. Böylece, bunları ayrı ayrı uygun şekilde geliştirebilirsiniz. Bunu mevcut projenizi kopyalayarak ve projenize yeni bir ad vererek yapabilirsiniz. (Alternatif olarak, derleme yapılandırmasına göre farklı kaynaklar (ör. dokular) oluşturabilen bir derleme sistemi kullanabilirsiniz.)
İpucu: Uygulama kodunuzun büyük bir kısmının tekrarlanmasını önlemenin bir yolu kitaplık projesi kullanmaktır. Kitaplık projeleri, paylaşılan kod ve kaynakları barındırır. Bunları gerçek uygulama projelerinize ekleyebilirsiniz.
Aynı uygulama için birden fazla proje oluştururken her bir projeyi, APK'ya eklenecek cihaz kısıtlamalarını belirten bir adla tanımlamak iyi bir uygulamadır. Böylece projeleri kolayca tanımlayabilirsiniz. Örneğin, API düzeyi 21 ve üzeri için tasarlanmış bir uygulama, "HelloWorld_21" olabilir.
Not: Aynı uygulama için yayınladığınız tüm APK'lar aynı paket adına sahip olmalı ve aynı sertifika anahtarıyla imzalanmalıdır. Birden fazla APK için kurallar'ın her birini de anladığınızdan emin olun.
Sürüm kodları atama
Aynı uygulamaya ait her APK'nın android:versionCode
özelliğiyle belirtilen benzersiz bir sürüm kodu olmalıdır. Birden fazla APK yayınlarken sürüm kodu atama konusunda dikkatli olmalısınız. Çünkü her birinin farklı olması gerekir ancak bazı durumlarda, her APK'nın desteklediği yapılandırmalara göre belirli bir sırada tanımlanmalıdır veya tanımlanmalıdır.
Sipariş sürüm kodları
Daha yüksek bir API düzeyi gerektiren APK'ların genellikle daha yüksek sürüm kodu olması gerekir. Örneğin, farklı API seviyelerini desteklemek için iki APK oluşturursanız daha yüksek API seviyeleri için APK'nın daha yüksek sürüm koduna sahip olması gerekir. Bu uygulama, daha yüksek API seviyeleri için APK'yı yüklemeye uygun bir sistem güncellemesi alırsa kullanıcıya uygulamayı güncellemesi için bildirim alır. Bu şartın nasıl uygulandığıyla ilgili daha fazla bilgi için yukarıdaki Birden fazla APK için kurallar bölümüne bakın.
Sürüm kodlarının sırasının, farklı APK'ların kapsamı arasındaki çakışma veya APK'larınızda yapabileceğiniz gelecekte yapacağınız değişiklikler nedeniyle kullanıcılarınızın hangi APK'yı alacağını nasıl etkileyebileceğini de göz önünde bulundurmanız gerekir.
Örneğin, ekran boyutuna dayalı farklı APK'larınız varsa (örneğin, küçük - normal ve büyük için bir - büyük - xlarge için bir APK'nız varsa, ancak APK'ları bir zaman küçük ve normal için bir xlarge şeklinde değiştireceğinizi öngörüyorsanız büyük - xlarge APK'sı için sürüm kodunu daha yüksek yapmanız gerekir. Bu şekilde, değişikliği yaptığınızda normal boyutlu bir cihaz uygun güncellemeyi alır çünkü mevcut APK'dan sürüm kodu artık cihazı destekleyen yeni APK'ya geçer.
Ayrıca, farklı OpenGL doku sıkıştırma biçimleri desteğine göre farklılık gösteren birden fazla APK oluştururken, birçok cihazın birden fazla biçimi desteklediğini unutmayın. Bir cihaz, iki APK arasında kapsam örtüştüğünde en yüksek sürüm koduna sahip APK'yı aldığından, tercih edilen sıkıştırma biçimine sahip APK'nın en yüksek sürüm koduna sahip olması için APK'larınız arasında sürüm kodlarını sıralamalısınız. Örneğin, PVRTC, ATITC ve ETC1 sıkıştırma biçimlerini kullanarak uygulamanız için ayrı derlemeler yapmak isteyebilirsiniz. Bu biçimleri tam olarak aşağıdaki sırayla tercih ederseniz PVRTC'yi kullanan APK en yüksek sürüm koduna, ATITC kullanan APK daha düşük, ETC1'e sahip APK'da ise en düşük sürüm koduna sahip olmalıdır. Dolayısıyla, bir cihaz hem PVRTC'yi hem de ETC1'i destekliyorsa, en yüksek sürüm koduna sahip olduğu için PVRTC'yi içeren APK'yı alır.
Google Play Store'un bir hedef cihaz için yüklenecek doğru APK'yı belirleyememesi durumunda, desteklemek istediğiniz tüm farklı cihaz varyasyonlarına ilişkin kaynakları içeren bir evrensel APK oluşturmak da isteyebilirsiniz. Evrensel bir APK sağlıyorsanız, ona en düşük versionCode
değerini atamanız gerekir. Google Play Store, uygulamanızın hem hedef cihazla uyumlu hem de en yüksek versionCode
değerine sahip sürümünü yüklediğinden, evrensel APK'ya daha düşük bir versionCode
değeri atamak, Google Play Store'un daha büyük evrensel APK'yı kullanmaya başlamadan önce diğer APK'larınızdan birini yüklemeyi denemesini sağlar.
Sürüm kodu şeması kullanma
Farklı APK'ların sürüm kodlarını diğerlerinden bağımsız olarak güncellemelerine olanak tanımak amacıyla (örneğin, yalnızca bir APK'da bir hatayı düzelttiğinizde tüm APK'ları güncellemeniz gerekmezken), sürüm kodlarınızda her bir APK arasında yeterli boşluk bırakacak şekilde bir şema kullanmanız gerekir. Böylece, diğer APK'larda artışa gerek kalmadan kodu bir APK'da artırabilirsiniz. Sürüm kodunu ve sürüm adını ilişkilendirmenizi kolaylaştırmak için koda gerçek sürüm adınızı da (yani, android:versionName
'e atanmış kullanıcı tarafından görülebilen sürüm) eklemeniz gerekir.
Not: Bir APK'nın sürüm kodunu artırdığınızda Google Play, önceki sürümün kullanıcılarından uygulamayı güncellemelerini ister. Bu nedenle, gereksiz güncellemeleri önlemek için gerçekte değişiklik içermeyen APK'ların sürüm kodunu artırmamalısınız.
En az 7 basamaklı bir sürüm kodu kullanmanızı öneririz: Desteklenen yapılandırmaları temsil eden tam sayılar daha yüksek sıralı bitlerde, sürüm adı (android:versionName
'dan gelen) ise daha düşük sıralı bitlerdedir. Örneğin, uygulama sürüm adı 3.1.0 olduğunda, API düzeyi 4 APK'sı ve API düzeyi 11 APK'sının sürüm kodları sırasıyla 0400310 ve 1100310 şeklinde olur. İlk iki hane API düzeyi (sırasıyla 4 ve 11), ortadaki iki hane ekran boyutları veya GL doku biçimleri için (bu örneklerde kullanılmamıştır) ve son üç hane ise uygulamanın sürüm adı (3.1.0) içindir. Şekil 1'de hem platform sürümüne (API Düzeyi) hem de ekran boyutuna göre ayrılan iki örnek gösterilmektedir.

1. Şekil. API Düzeyi'nin ilk iki basamağı, minimum ve maksimum ekran boyutu için ikinci ve üçüncü hane (dört boyutun her birini belirtir) veya doku biçimlerini ve uygulama sürümünün son üç hanesini belirten, sürüm kodlarınız için önerilen şema.
Bu sürüm kodları şeması, uygulamanız geliştikçe ölçeklenebilir bir kalıp oluşturmanız gerektiğine dair bir öneridir. Özellikle, bu şema farklı doku sıkıştırma biçimlerini tanımlamak için bir çözüm sunmaz. Bu seçeneklerden biri, uygulamanızın desteklediği farklı sıkıştırma biçimlerinin her biri için farklı bir tam sayı belirten kendi tablonuzu tanımlamak olabilir (örneğin, 1 değeri ETC1'e, 2 değeri AITC'ye karşılık gelebilir).
İstediğiniz şemayı kullanabilirsiniz, ancak uygulamanızın gelecekteki sürümlerinin, sürüm kodlarını nasıl artırması gerektiğini ve cihaz yapılandırması değiştiğinde (örneğin, bir sistem güncellemesi nedeniyle) ya da APK'lardan biri veya birkaçı için yapılandırma desteğini değiştirdiğinizde cihazların nasıl güncelleme alabileceğini dikkatlice değerlendirmelisiniz.