64 bit mimarileri destekleme

Google Play'de yayınlanan uygulamaların 64 bit mimarileri desteklemesi gerekir. Uygulamanızın 64 bit sürümünü eklemek, performans iyileştirmeleri sağlar ve yalnızca 64 bit donanıma sahip cihazlara hazırlanmanızı sağlar.

Aşağıdaki adımlar, 32 bit uygulamanızın 64 bit cihazları desteklemesini sağlar.

Uygulamanızı değerlendirme

Uygulamanız, tüm kitaplıklar veya SDK'lar dahil olmak üzere yalnızca Java programlama dilinde veya Kotlin'de yazılmış kod kullanıyorsa 64 bit cihazları destekler. Uygulamanız doğal kod kullanıyorsa veya kullandığından emin değilseniz uygulamanızı değerlendirin.

Hızlı durum kontrolü

Play Console'a gidip mevcut sürümlerin politikaya uygun olup olmadığını kontrol edin.

Play Console, 64 bit şartıyla ilgili herhangi bir sorun varsa taslak sürümleriniz için geçerli uyarılar da gösterir. Aşağıdaki resim örnektir.

Bir uyarı gösterilirse uygulamanızı 64 bit cihazlarla uyumlu hale getirmek için aşağıdaki adımları uygulayın.

Uygulamanız yerel kod kullanıyor mu?

Uygulamanız aşağıdaki durumlarda yerel kod kullanır:

  • Uygulamanızda C/C++ (yerel) kodu kullanıyorsanız
  • Üçüncü taraf yerel kitaplıkların bağlantıları.
  • Yerel kitaplıklar kullanan bir üçüncü taraf uygulama geliştirici tarafından oluşturulur.

Uygulamanızda 64 bit kitaplıklar var mı?

APK dosyanızın yapısını inceleyin. APK, derlenirken uygulamanın ihtiyaç duyduğu tüm yerel kitaplıklarla paketlenir. Yerel kitaplıklar, ABI'ye göre çeşitli klasörlerde depolanır. Her 64 bit mimarisini desteklemeniz gerekmez ancak desteklediğiniz her yerel 32 bit mimarisi için 64 bit mimarisi de eklemeniz gerekir.

ARM mimarisi için 32 bit kitaplıkları armeabi-v7a konumunda bulabilirsiniz. 64 bit kitaplıklar için de arm64-v8a konumuna bakabilirsiniz.

x86 mimarisi için 32 bit sürümde x86, 64 bit sürümde ise x86_64 seçeneğini bulun.

Bu klasörlerin her ikisinde de yerel kitaplıklarınızın bulunduğundan emin olun. Özetlemek gerekirse:

Platform 32 bit kitaplıklar klasörü 64 bit kitaplıklar klasörü
ALARMI ETKİNLEŞTİR lib/armeabi-v7a lib/arm64-v8a
x86 lib/x86 lib/x86_64

Uygulamanıza bağlı olarak her klasörde tam olarak aynı kitaplık grubunun bulunabileceğini veya bulunmayabileceğini unutmayın. Hedef, uygulamanızın yalnızca 64 bit'i destekleyen bir ortamda doğru şekilde çalışmasını sağlamaktır.

Genellikle, hem 32 bit hem de 64 bit mimariler için oluşturulan bir APK veya pakette, her biri karşılık gelen bir yerel kitaplık grubuna sahip olan her iki ABI için de klasörler bulunur. 64 bit desteği yoksa 64 bit klasörü yerine 32 bit ABI klasörü görebilirsiniz.

APK Analizcisi'ni kullanarak yerel kitaplıkları arama

APK Analizcisi, oluşturulmuş bir APK'nın çeşitli yönlerini değerlendirmenize olanak tanıyan bir araçtır. Yerel kitaplıkları bulmak ve 64 bit kitaplıkların bulunduğundan emin olmak için bu aracı kullanın.

  1. Android Studio'yu açın ve bir proje açın.
  2. Menüden Derle > APK'yı Analiz Et'i seçin…

    APK Analizcisi'ni başlatma

  3. Değerlendirmek istediğiniz APK'yı seçin.

  4. Varsa ".so" dosyalarını barındıran lib klasörüne bakın. Yoksa uygulamanız 64 bit cihazları destekliyor demektir ve başka bir işlem yapmanız gerekmez. armeabi-v7a veya x86'yı görüyorsanız 32 bit kitaplıklarınız var demektir.

  5. arm64-v8a veya x86_64 klasöründe benzer ".so" dosyalarınız olup olmadığını kontrol edin.

    APK Analizcisi'ni başlatma

  6. arm64-v8a veya x86_64 kitaplığınız yoksa bu yapıları APK'nızda derleyip paketlemeye başlamak için derleme işleminizi güncelleyin.

  7. Her iki kitaplığın da paketlendiğini görüyorsanız uygulamanızı 64 bit donanımda test etmeye geçebilirsiniz.

APK'ları açarak yerel kitaplıkları arayın

APK dosyaları, zip dosyaları gibi yapılandırılmıştır. Komut satırını veya başka bir ayıklama aracını kullanarak APK dosyasını çıkarın. Ayıklama aracınıza bağlı olarak, dosyayı .zip olarak yeniden adlandırmanız gerekebilir.

Uygulamanızın 64 bit cihazları destekleyip desteklemediğini belirlemek için yukarıdaki talimatları uygulayarak ayıklanan dosyalara göz atın. Komut satırından aşağıdaki komut örneğini çalıştırabilirsiniz:

:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so

Bu örnekte armeabi-v7a ve arm64-v8a kitaplıklarının bulunduğuna dikkat edin. Bu, uygulamanın 64 bit mimarileri desteklediği anlamına gelir.

Uygulamanızı 64 bit kitaplıklarla oluşturma

Aşağıdaki talimatlarda, 64 bit kitaplıkların nasıl oluşturulacağı açıklanmaktadır. Bu adımların yalnızca kaynaktan derleyebileceğiniz kod ve kitaplıkları kapsadığını unutmayın.

Android Studio veya Gradle ile derleme

Çoğu Android Studio projesi, temel derleme sistemi olarak Gradle'ı kullanır. Bu nedenle bu bölüm her iki durum için de geçerlidir. Yerel kodunuz için derlemeleri etkinleştirmek istiyorsanız desteklemek istediğiniz mimarilere bağlı olarak arm64-v8a ve/veya x86_64'ü uygulamanızın build.gradle dosyasında ndk.abiFilters ayarına ekleyin:

Groovy

// Your app's build.gradle
plugins {
  id 'com.android.app'
}

android {
   compileSdkVersion 27
   defaultConfig {
       appId "com.google.example.64bit"
       minSdkVersion 15
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
// ...

Kotlin

// Your app's build.gradle
plugins {
    id("com.android.app")
}

android {
    compileSdkVersion(27)
    defaultConfig {
        appId = "com.google.example.64bit"
        minSdkVersion(15)
        targetSdkVersion(28)
        versionCode = 1
        versionName = "1.0"
        ndk {
            abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64")
        }
// ...

CMake ile derleyin

Uygulamanız CMake kullanılarak oluşturulduysa arm64-v8a'yı "-DANDROID_ABI" parametresine ileterek 64 bit ABI'ler için derleme yapabilirsiniz:

:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

Nndk-build ile geliştirin

Uygulamanız ndk-build ile oluşturulmuşsa APP_ABI değişkenini kullanıp "Application.mk" dosyanızı değiştirerek 64 bit ABI'ler oluşturabilirsiniz:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

Bağlantı noktası 32 bit koddan 64 bite

Kodunuz zaten masaüstünde veya iOS'te çalışıyorsa Android için ek işlem yapmanız gerekmez. Kodunuz 64 bit sistem için ilk kez derleniyorsa ele almanız gereken en önemli sorun, işaretçilerin artık int gibi 32 bit tam sayı türlerine sığmamasıdır.

İşaretçileri int, unsigned veya uint32_t gibi türlerde depolayan kodu güncelleyin. Unix sistemlerinde long, işaretçi boyutuyla eşleşir ancak bu Windows'ta geçerli değildir. Bunun yerine, amacı açıklayan uintptr_t veya intptr_t türlerini kullanın. İki işaretçi arasındaki farkı depolamak için ptrdiff_t türünü kullanın.

İşaretçi olmayanlar için bile int veya long gibi sabit genişlikli olmayan türler yerine her zaman <stdint.h> içinde tanımlanan belirli sabit genişlikli tam sayı türlerini tercih etmeniz gerekir.

Kodunuzun işaretçiler ve tam sayılar arasında yanlış bir şekilde dönüşüm yaptığı durumları yakalamak için aşağıdaki derleyici işaretlerini kullanın:

-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast
-Werror=shorten-64-to-32

C/C++ nesnelerinin işaretçilerini tutan int alanlarına sahip Java sınıflarında da aynı sorun vardır. JNI kaynağınızda jint öğesini arayın ve Java tarafında long, C++ tarafında ise jlong değerine geçtiğinizden emin olun.

Örtülü işlev bildirimleri, 64 bit kod için çok daha tehlikelidir. C/C++, örtülü olarak tanımlanmış bir işlevin (yani derleyicinin bir tanımını görmediği bir işlevin) döndürme türünün int olduğunu varsayar. İşlevinizin gerçek döndürme türü bir işaretçiyse bu, işaretçinizin int değerine sığdığı 32 bitlik bir sistemde sorunsuz çalışır. Ancak 64 bitlik bir sistemde derleyici, işaretçinizin üst yarısını atar. Örnek:

// This function returns a pointer:
// extern char* foo();

// If you don't include a header that declares it,
// when the compiler sees this:
char* result = foo();

// Instead of compiling that to:
result = foo();

// It compiles to something equivalent to:
result = foo() & 0xffffffff;

// Which will then cause a SIGSEGV if you try to dereference `result`.

Aşağıdaki derleyici işaretçisi, bu sorunu daha kolay bulup düzeltmeniz için örtülü işlev beyanı uyarılarını hataya dönüştürür:

-Werror=implicit-function-declaration

Satır içi derleyiciniz varsa bunu yeniden yazın veya düz bir C/C++ uygulaması kullanın.

Sabit kodlanmış tür boyutlarınız varsa (ör. 8 veya 16 bayt) bunları sizeof(void*) gibi eşdeğer sizeof(T) ifadesiyle değiştirin.

32 bit için 64 bitten farklı kodları koşullu olarak derlemeniz gerekiyorsa genel 32/64 farklılıkları için #if defined(__LP64__)'ü veya Android tarafından desteklenen belirli mimariler için __arm__, __aarch64__ (arm64), __i386__ (x86) ve __x86_64__'i kullanabilirsiniz.

Geleneksel biçim belirteçler, 64 bit türlerini hem 32 bit hem de 64 bit cihazlar için doğru şekilde belirtmenize izin vermez. Bu nedenle, printf veya scanf benzeri işlevler için biçim dizelerini düzenleyin. <inttypes.h> içindeki PRI ve SCN makroları bu sorunu, onaltılık işaretçileri yazmak ve okumak için PRIxPTR ve SCNxPTR; 64 bit değerlerini taşınabilir olarak yazmak ve okumak için de PRId64 ile SCNd64 çözer.

Kaydırma yaparken, yalnızca 32 bit olan 1 kullanmak yerine 64 bitlik bir kaydırma sabiti elde etmek için 1ULL kullanmanız gerekebilir.

Android App Bundle ile boyut artışlarını azaltma

Uygulamanıza 64 bit mimari desteği eklemek, APK'nızın boyutunu büyütmeye neden olabilir. Aynı APK'ya hem 32 hem de 64 bit yerel kodu dahil etmenin boyut etkisini en aza indirmek için Android App Bundle özelliğinden yararlanmanızı önemle tavsiye ederiz.

Oyun geliştiriciler

En çok kullanılan üç motor 64 bit'i destekler:

  • 2015'ten beri Unreal
  • 2015'ten beri Cocos2d
  • 2018'den beri Unity

Unity geliştiricileri

Uygun sürümlere geçin

Unity, 2018.2 ve 2017.4.16 sürümlerinde 64 bit desteği sunar.

Unity'nin 64 bit'i desteklemeyen bir sürümünü kullanıyorsanız yükseltmek istediğiniz sürümü belirleyin ve Unity'nin ortamınızı taşımak için sağladığı kılavuzları uygulayarak uygulamanızın 64 bit kitaplık oluşturabilen bir sürüme yükseltilmesini sağlayın. Unity, en yeni özelliklere ve güncellemelere erişmek için düzenleyicinin en son LTS sürümüne yükseltmenizi önerir.

Çeşitli Unity sürümlerini ve yapmanız gerekenleri özetleyen bir grafik aşağıda verilmiştir:

Unity sürümü Sürüm 64 bit'i destekliyor mu? Önerilen işlem

2020.x

✔️

Derleme ayarlarınızın 64 bit kitaplıklar oluşturduğundan emin olun.

2019.x

✔️

Derleme ayarlarınızın 64 bit kitaplık oluşturmasını sağlayın.

2018.4 (LTS)

✔️

Derleme ayarlarınızın 64 bit kitaplıklar çıkardığından emin olun.

2018.3

✔️

Derleme ayarlarınızın 64 bit kitaplıklar oluşturduğundan emin olun.

2018.2

✔️

Derleme ayarlarınızın 64 bit kitaplıklar oluşturduğundan emin olun.

2018.1

Deneysel 64 bit desteği vardır.

2017.4 (LTS)

✔️

16.4.2017 itibarıyla desteklenmektedir. Derleme ayarlarınızın 64 bit kitaplıklar oluşturduğundan emin olun.

Mart 2017

✖️

64 bit'i destekleyen bir sürüme geçin.

2017.2

✖️

64 biti destekleyen bir sürüme geçin.

1.2017

✖️

64 bit'i destekleyen bir sürüme geçin.

<=5,6

✖️

64 bit'i destekleyen bir sürüme geçin.

Derleme ayarlarını 64 bit kitaplık çıkışları olarak değiştirme

64 bit Android kitaplıklarını destekleyen bir Unity sürümü kullanıyorsanız derleme ayarlarınızı düzenleyerek uygulamanızın 64 bit sürümünü oluşturabilirsiniz. Komut Dosyası Arka Ucunuz olarak IL2CPP arka ucunu kullanın. Unity projenizi 64 bit mimari oluşturacak şekilde ayarlamak için aşağıdakileri yapın:

  1. Derleme Ayarları'na gidin ve Platform bölümünde Android'in yanında Unity sembolünün bulunduğundan emin olarak Android için derlediğinizden emin olun. 1. Android platformunun yanında Unity simgesi yoksa Android'i seçin ve Platformu Değiştir'i tıklayın.
  2. Oynatıcı ayarları'nı tıklayın.

    Unity&#39;de oynatıcı ayarları

  3. Oynatıcı Ayarları Paneli > Android için Ayarlar > Diğer ayarlar > Yapılandırma'ya gidin.

  4. Skript Arka Ucu'nu IL2CPP olarak ayarlayın.

  5. Hedef Mimari > ARM64 onay kutusunu seçin.

    Unity&#39;de hedef mimarileri ayarlama

  6. Uygulamanızı normal şekilde geliştirin!

ARM64 için uygulama oluşturmanın, tüm öğelerinizin bu platform için özel olarak oluşturulmasını gerektirdiğini unutmayın. APK boyutunu küçültme konusunda Unity'nin kılavuzunu uygulayın ve boyuttaki bu artışı azaltmaya yardımcı olması için Android App Bundle özelliğinden yararlanmayı düşünün.

Çoklu APK ve 64 bit uyumluluğu

Uygulamanızı yayınlamak için Google Play'in birden fazla APK desteğini kullanıyorsanız 64 bit şartına uygunluğun sürüm düzeyinde değerlendirildiğini unutmayın. Ancak 64 bit koşulu, Android 9 Pie veya sonraki sürümleri çalıştıran cihazlara dağıtılmayan APK'lar ya da uygulama paketleri için geçerli değildir.

APK'larınızdan biri uyumlu değil olarak işaretlenmişse ancak önceki bir sürümse ve bunu uyumlu hale getirmek mümkün değilse stratejilerden biri, APK'nın manifest dosyasındaki uses-sdk öğesine bir maxSdkVersion="27" özelliği eklemektir. Bu APK, Android 9 Pie veya sonraki sürümleri çalıştıran cihazlara sunulmamaktadır ve artık uyumluluğu engellememektedir.

RenderScript ve 64 bit uyumluluğu

Uygulamanız RenderScript kullanıyorsa ve Android araçlarının önceki bir sürümüyle derlendiyse uygulamayla ilgili 64 bit uyumluluk sorunları görebilirsiniz. 21.0.0'den önceki derleme araçlarıyla derleme yapıldığında derleyici, harici bir .bc dosyasında bit kodu oluşturabilir. Bu eski .bc dosyaları artık 64 bit mimariler için desteklenmiyor. Bu nedenle, dosyanın APK'nizde bulunması uyumluluk sorununa neden oluyor.

Sorunu düzeltmek için projenizdeki tüm .bc dosyalarını kaldırın, ortamınızı build-tools-21.0.0 veya sonraki bir sürüme yükseltin ve derleyiciye .bc dosyası oluşturmamasını söylemek için Android Studio'daki renderscriptTargetApi ayarını 21 veya sonraki bir sürüme ayarlayın. Ardından uygulamanızı yeniden oluşturun, .bcdosyalarını kontrol edin ve Play Console'a yükleyin.

Uygulamanızı 64 bit donanımda test etme

Uygulamanızın 64 bit sürümü, 32 bit sürümüyle aynı kaliteyi ve özellik kümesini sunmalıdır. En yeni 64 bit cihazlardaki kullanıcıların uygulamanızda mükemmel bir deneyim yaşamasını sağlamak için uygulamanızı test edin.

Yalnızca 64 bit cihazlar

Mümkünse uygulamanızı aşağıdaki seçeneklerden birini kullanarak yalnızca 64 bitlik bir ortamda test etmenizi öneririz:

Yalnızca 64 bit sistem görüntüsüne sahip Google Pixel

Uygulama geliştirme ve test işlemlerini kolaylaştırmak amacıyla bazı Pixel cihazlar için yalnızca 64 bit'i katı bir ortamı olan özel sistem görüntüleri sağladık. Yalnızca 64 bit olan bu görüntüler, başlangıçta Android 13 ve 14 önizleme sürümleri için standart fabrika sistem görüntüleriyle birlikte sağlanmıştır ancak uygulamanızı 64 bit uyumluluğu açısından test ederken bu görüntüleri kullanmaya devam edebilirsiniz.

Yalnızca 64 bit bir resim edinme

Fabrika sistem görüntülerine benzer şekilde, Android Flash Aracı'nı kullanarak veya aşağıdaki bölümlerde açıklandığı gibi cihazınızı manuel olarak flaşlayarak cihazınıza yalnızca 64 bitlik bir görüntü yükleyebilirsiniz.

Android Flash Tool'u kullanarak cihazınızı flaşlama

Android Flash Aracı, desteklenen Pixel cihazınıza bir sistem resmini güvenli bir şekilde yüklemenizi sağlar. Android Flash Aracı, Chrome veya Edge 79 ya da sonraki sürümleri gibi WebUSB'yi destekleyen tüm web tarayıcılarında çalışır.

Android Flash Tool, cihazınızın yazılımını yükleme işleminde size adım adım yol gösterir. Bu işlem için herhangi bir araç yüklemeniz gerekmez ancak cihazınızın kilidini açmanız ve Geliştirici seçeneklerinde USB Hata Ayıklama'yı etkinleştirmeniz gerekir. Tam talimatlar için Android Flash Tool dokümanlarına bakın.

Cihazınızı USB üzerinden bağlayın, ardından flaşlamak istediğiniz sistem resminin türüne bağlı olarak aşağıdaki bağlantılardan birini kullanarak Android Flash Tool'a gidin ve ekrandaki talimatları uygulayın:

Cihazınızı manuel olarak flaşlama

Ayrıca en son sistem görüntüsünü indirip cihazınıza manuel olarak da yükleyebilirsiniz. Test cihazınızın sistem imajını indirmek için aşağıdaki tabloya bakın. Test ortamı üzerinde hassas kontrole ihtiyacınız varsa veya otomatik test yaparken sık sık yeniden yüklemeniz gerekiyorsa cihazı manuel olarak flaşlamak faydalıdır.

Cihaz verilerinizi yedekledikten ve eşleşen sistem görüntüsünü indirdikten sonra görüntüyü cihazınıza yükleyebilirsiniz.

Dilediğiniz zaman herkese açık en son sürüme dönmeyi seçebilirsiniz.

Android 14 (Beta 5.3) için yalnızca 64 bit fabrika görüntüleri

Bu resimler, 64 bit uygulama uyumluluğunu test etmek için yalnızca 64 bitlik katı bir ortam sağlar. Yalnızca 64 bit'i destekleyen bu yapılandırmalar sadece geliştiricilerin kullanımına yöneliktir.

Cihaz İndirme Bağlantısı SHA-256 Sağlaması
Pixel 4a (5G) 7e6731fab811ae389f5ff882d5c5a2b8b942b8363b22bbcc038b39d7c539e60a
Pixel 5 c4da6a19086a02f2cd2fa7a4054e870916954b8e5a61e9a07ee942c537e4b45a
Pixel 6 98943384284cbc7323b8867d84c36151757f67ae7633012fb69cb5d6bec2b554
Pixel 6 Pro 67ec40be5bd05a40fa5dabc1ce6795aae75d1904193d52e2da00425ed7cb895b
Android 13 (QPR3 Beta 3.2) için yalnızca 64 bit fabrika görüntüleri

Bu resimler, 64 bit uygulama uyumluluğunu test etmek için yalnızca 64 bitlik katı bir ortam sağlar. Yalnızca 64 bit olan bu yapılandırmalar yalnızca geliştiriciler tarafından kullanılabilir.

Cihaz İndirme Bağlantısı SHA-256 Sağlaması
Pixel 4a (5G) b4be40924f62c3c2b3ed20a9f7fa4303aa9c39649d778eb96f86c867fe3ae59a
Pixel 5 6e5e027a4f64f9f786db9bb69d50d1a551c3f6aad893ae450e1f8279ea1b761a
Pixel 6 becb9b81a5bddad67a4ac32d30a50dcb372b9d083cb7c046e5180510e479a0b8
Pixel 6 Pro b0ef544ed2312ac44dc827f24999281b147c11d76356c2d06b2c57a191c60480
Herkese açık bir sürüme dönme

Fabrika görüntüsünü yüklemek için Android Flash Aracı'nı kullanabilir veya Nexus ve Pixel Cihazlar İçin Fabrika Görüntüleri sayfasından fabrika spesifikasyonu sistem görüntüsünü indirip cihaza manuel olarak yükleyebilirsiniz.

Android Emulator

Android 12'den (API düzeyi 31) itibaren Android Emülatör sistem görüntüleri yalnızca 64 bittir. Uygulama testi için yalnızca 64 bit katı bir ortam elde etmek amacıyla Android 12 (API düzeyi 31) veya sonraki sürümlere sahip bir sistem görüntüsü kullanarak Android Sanal Cihaz (AVD) oluşturun.

Diğer cihaz seçenekleri

Bu cihazlardan birine sahip değilseniz veya Android Emulator'ü kullanamıyorsanız en iyi ikinci seçeneğiniz, Google Pixel veya diğer cihaz üreticilerinin son model amiral gemisi cihazları gibi 64 bit özellikli bir cihaz kullanmaktır.

Uygulamanızı yükleyip test edin

APK'nızı test etmenin en kolay yolu, uygulamayı Android DebugBridge (adb) kullanarak yüklemektir. Çoğu durumda, cihaza hangi kitaplıkların yükleneceğini belirtmek için parametre olarak --abi sağlayabilirsiniz. Bu işlem, uygulamayı cihaza yalnızca 64 bit kitaplıklarla yükler.

:: Command Line
# A successful install:
> adb install --abi armeabi-v7a YOUR_APK_FILE.apk
Success

# If your APK does not have the 64-bit libraries:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
adb: failed to install YOUR_APK_FILE.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

# If your device does not support 64-bit, an emulator, for example:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
ABI arm64-v8a not supported on this device

Uygulamanızı başarıyla yükledikten sonra, kalitenin 32 bit sürümle aynı olduğundan emin olmak için normalde yaptığınız gibi test edin.

Bilinen uyumluluk sorunlarını kontrol etme

Test ederken uygulamanızı, 64 bit cihazlarda çalışırken uygulamaları etkileyen aşağıdaki sorunlar açısından kontrol edin. Uygulamanız doğrudan etkilenen kitaplıkları kullanmasa bile, uygulamanızın bağımlılarındaki üçüncü taraf kitaplıklar ve SDK'lar bu kitaplıkları kullanıyor olabilir.

SoLoader

Yerel kod yükleyici SDK'sı SoLoader'ı kullanıyorsanız 0.10.4 veya sonraki bir sürüme güncelleyin. Uygulamanız SoLoader'a bağımlı SDK'lar kullanıyorsa etkilenen SDK'ların en son kararlı sürümüne de güncellediğinizden emin olun.

SoLoader v0.9.0 ve önceki sürümler, /vendor/lib:/system/lib içinde sistem kitaplıklarının mevcut olduğunu varsayar. Bu hata, yolun bulunduğu Pixel 7 gibi cihazlarda gözlemlenmez ancak bu varsayım, yalnızca /vendor/lib64:/system/lib64 içinde sistem kitaplıklarının bulunduğu cihazlarda kilitlenmelere neden olur.

Bu ve SoLoader'ın neden olduğu diğer sorunları düzeltmek hakkında daha fazla bilgi edinmek için Google Yardım Merkezi'nde ilgili yanıta bakın.

OpenSSL

OpenSSL kitaplığını kullanıyorsanız OpenSSL 1.1.1i veya sonraki bir sürüme güncelleyin. Uygulamanız HTTPS kullanarak iletişim sağlayan SDK'lar veya OpenSSL'e dayalı diğer SDK'lar kullanıyorsa SDK'nın daha yeni bir OpenSSL sürümünü kullanan en son sürümüne de güncellediğinizden emin olun. Böyle bir araç yoksa SDK sağlayıcıya ulaşın.

ARMv8.3 PAC, çalışma zamanında işaretçilerin kimliğini doğrulayarak donanım destekli kontrol akışı bütünlüğünü etkinleştirir. OpenSSL'in önceki sürümleri bu özellikleri yanlış kullanarak ARMv8.3a ve sonraki sürümlere sahip tüm cihazlarda çalışma zamanında kilitlenmelere neden oluyordu.

Bu ve OpenSSL'den kaynaklanan diğer sorunları düzeltme hakkında daha fazla bilgi için Google Yardım Merkezi'ndeki ilgili yanıta bakın.

BTI

ARMv8.5 ve sonraki sürümler, JOP saldırılarına karşı koruma sağlamak için dal hedefi talimatları (BTI'ler) kullanır. BTI ile oluşturulan kitaplıkların rastgele ofsetlerine ayrılan kod karartma SDK'larının önceki sürümleri, uygulamaların kilitlenmesine neden olabilir. Talimatlar İPUCU olarak kodlandığından bu hata, BTI'yi desteklemeyen cihazlarda gözlemlenemez.

Yayınla

Uygulamanızın hazır olduğunu düşündüğünüzde normal şekilde yayınlayın. Her zaman olduğu gibi, uygulamanızı dağıtmayla ilgili en iyi uygulamalara uymaya devam edin. Uygulamanızın kalitesinin tutarlı olmasını sağlamak için sınırlı sayıda kullanıcıya dağıtmak üzere kapalı test kanallarından yararlanmanızı öneririz.

Büyük bir güncellemeyi kullanıma sunarken olduğu gibi, daha büyük bir kitleye yayınlamadan önce 64 bit özellikli cihazlarda kapsamlı bir test yaptığınızdan emin olun.

İndir Android 14 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 14 factory system image (64-bit-only)

bramble_beta_64-upb5.230623.006-factory-7e6731fa.zip

İndir Android 14 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 14 factory system image (64-bit-only)

redfin_beta_64-upb5.230623.006-factory-c4da6a19.zip

İndir Android 14 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 14 factory system image (64-bit-only)

oriole_beta_64-upb5.230623.006-factory-98943384.zip

İndir Android 14 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 14 factory system image (64-bit-only)

raven_beta_64-upb5.230623.006-factory-67ec40be.zip

İndir Android 13 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 13 factory system image (64-bit-only)

bramble_64-t3b3.230413.009-factory-b4be4092.zip

İndir Android 13 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 13 factory system image (64-bit-only)

redfin_64-t3b3.230413.009-factory-6e5e027a.zip

İndir Android 13 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 13 factory system image (64-bit-only)

oriole_64-t3b3.230413.009-factory-becb9b81.zip

İndir Android 13 factory system image (64-bit-only)

İndirmeden önce aşağıdaki şartlar ve koşulları kabul etmeniz gerekir.

Hükümler ve Koşullar

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
İndirin: Android 13 factory system image (64-bit-only)

raven_64-t3b3.230413.009-factory-b0ef544e.zip