This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Android cihazlarda kendi uygulamalarınızı serbestçe çalıştırabilirsiniz. Oyununuzun bir sürümünü derleyip bir Android cihaza kopyalamak çok kolaydır. Bu kılavuz, oyununuzu Android için paketleme adımlarını açıklar. Geliştirme sırasında oyununuzu geliştirme uygulaması üzerinden çalıştırmak genellikle tercih edilir; çünkü bu uygulama, içerik ve kodu doğrudan cihazınızda çalışma sırasında yeniden yüklemenize (hot reload) olanak tanır.
Android, tüm APK dosyalarının bir cihaza kurulmadan veya güncellenmeden önce bir sertifikayla dijital olarak imzalanmasını gerektirir. Android App Bundle (AAB) biçimini kullanıyorsanız Play Console’a yüklemeden önce yalnızca uygulama paketinizi imzalamanız gerekir; geri kalanını Play App Signing halleder. Bununla birlikte, uygulamanızı Google Play’e veya diğer uygulama mağazalarına yüklemek ve herhangi bir mağazanın dışında dağıtmak için elle de imzalayabilirsiniz.
Defold düzenleyicisinden veya komut satırı aracından bir Android uygulaması dağıtım paketi (bundle) oluştururken uygulamanızın imzalanmasında kullanılacak bir anahtar deposu (keystore; sertifikanızı ve anahtarınızı içerir) ve anahtar deposu parolası sağlayabilirsiniz. Bunları sağlamazsanız Defold bir hata ayıklama anahtar deposu oluşturur ve uygulamanın dağıtım paketini imzalarken bunu kullanır.
Uygulamanız bir hata ayıklama anahtar deposuyla imzalandıysa onu Google Play’e asla yüklememelisiniz. Her zaman kendinizin oluşturduğu, bu amaca ayrılmış bir anahtar deposu kullanın.
Defold, Android imzalama süreci için bir anahtar deposu kullanır. Bu forum gönderisinde daha fazla bilgi bulabilirsiniz.
Bir anahtar deposunu Android Studio kullanarak veya bir terminalden/komut isteminden oluşturabilirsiniz:
keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125
Bu işlem, bir anahtar ve sertifika içeren mykeystore.keystore adlı bir anahtar deposu dosyası oluşturur. Anahtara ve sertifikaya erişim 5Up3r_53cR3t parolasıyla korunur. Anahtar ve sertifika 25 yıl (9125 gün) boyunca geçerli olur. Oluşturulan anahtar ve sertifika myAlias takma adıyla tanımlanır.
Anahtar deposunu ve ona ait parolayı güvenli bir yerde sakladığınızdan emin olun. Uygulamalarınızı kendiniz imzalayıp Google Play’e yüklüyorsanız ve anahtar deposu veya anahtar deposu parolası kaybolursa uygulamayı Google Play’de güncellemeniz mümkün olmaz. Google Play App Signing kullanıp uygulamalarınızı sizin için Google’ın imzalamasını sağlayarak bu durumdan kaçınabilirsiniz.
Düzenleyici, oyununuz için kolayca bağımsız bir uygulama dağıtım paketi oluşturmanızı sağlar. Paketlemeden önce game.project proje ayarları dosyasında uygulama için kullanılacak simgeleri belirtebilir, sürüm kodunu ayarlayabilir ve benzeri işlemleri yapabilirsiniz.
Paketlemek için menüden Project ▸ Bundle... ▸ Android Application... seçeneğini seçin.
Düzenleyicinin otomatik olarak rastgele hata ayıklama sertifikaları oluşturmasını istiyorsanız Keystore ve Keystore password alanlarını boş bırakın:

Dağıtım paketinizi belirli bir anahtar deposuyla imzalamak istiyorsanız Keystore ve Keystore password alanlarını belirtin. Keystore dosyasının .keystore uzantısına sahip olması, parolanın ise .txt uzantılı bir metin dosyasında saklanması beklenir. Anahtar deposundaki anahtar, anahtar deposunun kendisinden farklı bir parola kullanıyorsa Key password belirtmeniz de mümkündür:

Defold hem APK hem de AAB dosyalarının oluşturulmasını destekler. Bundle Format açılır listesinden APK veya AAB seçin.
Uygulama dağıtım paketi ayarlarını yapılandırdıktan sonra Create Bundle düğmesine basın. Ardından, dağıtım paketinin bilgisayarınızda nerede oluşturulacağını belirtmeniz istenir.

Bir oyunun dağıtım paketini oluştururken kullanmak istediğiniz motor türünü seçmeniz gerekir. Üç temel seçeneğiniz vardır:
Bu farklı sürümler derleme çeşitleri (Build variants) olarak da adlandırılır.
Project ▸ Build seçeneğini seçtiğinizde her zaman hata ayıklama sürümünü elde edersiniz.
Bu tür yürütülebilir dosyalar, birkaç yararlı hata ayıklama özelliği içerdiği için genellikle oyun geliştirme sırasında kullanılır:
print() işlevinden ve dmLogInfo(), dmLogError() gibi işlevlerle günlüğe kaydeden yerel kod eklentilerinden (native extension) gelen günlükleri de çıktıya yazar. Bu günlükleri nasıl okuyacağınızı Oyun ve sistem günlükleri kılavuzundan öğrenin.Bu çeşitte hata ayıklama özellikleri devre dışıdır. Oyun, uygulama mağazasında yayımlanmaya veya başka yollarla oyuncularla paylaşılmaya hazır olduğunda bu seçeneğin seçilmesi önerilir. Bir oyunu hata ayıklama özellikleri etkin durumdayken yayımlamak çeşitli nedenlerle önerilmez:
Bu yürütülebilir dosya herhangi bir grafik veya ses olmadan çalışır. Bu, oyunun birim/duman testlerini (unit/smoke tests) bir sürekli tümleştirme (CI) sunucusunda çalıştırabileceğiniz, hatta bu dosyayı bulutta bir oyun sunucusu olarak kullanabileceğiniz anlamına gelir.
Bir .apk dosyası adb aracıyla cihazınıza veya Google Play geliştirici konsolu üzerinden Google Play’e kopyalanabilir.
adb komut satırı aracı, Android cihazlarıyla etkileşim kurmak için kullanılan, kullanımı kolay ve çok yönlü bir programdır. adb aracını Mac, Linux veya Windows için Android SDK Platform-Tools paketinin bir parçası olarak indirip kurabilirsiniz.
Android SDK Platform-Tools paketini şu adresten indirin: https://developer.android.com/studio/releases/platform-tools. adb aracını /platform-tools/ dizininde bulabilirsiniz. Alternatif olarak, platforma özgü paketler ilgili paket yöneticileri aracılığıyla kurulabilir.
Ubuntu Linux üzerinde:
$ sudo apt-get install android-tools-adb
Fedora 18/19 üzerinde:
$ sudo yum install android-tools
macOS üzerinde (Homebrew)
$ brew cask install android-platform-tools
Android cihazınızı USB aracılığıyla bilgisayarınıza bağlayıp aşağıdaki komutu çalıştırarak adb aracının çalıştığını doğrulayabilirsiniz:
$ adb devices
List of devices attached
31002535c90ef000 device
Cihazınız görünmüyorsa Android cihazında USB debugging seçeneğini etkinleştirdiğinizi doğrulayın. Cihazın Settings bölümünü açın ve Developer options (veya Development) seçeneğini bulun.

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/my_app.apk
Success
Düzenleyicinin Bundle iletişim kutusundaki “Install on connected device” ve “Launch installed app” onay kutularını kullanarak bir .apk dosyasını kurup başlatabilirsiniz:

Bu özelliğin çalışması için ADB kurulu olmalı ve bağlı cihazda USB debugging etkinleştirilmelidir. Düzenleyici ADB komut satırı aracının kurulum konumunu algılayamazsa bunu Preferences içinde belirtmeniz gerekir.
Bir .aab dosyası Google Play geliştirici konsolu üzerinden Google Play’e yüklenebilir. Android bundletool kullanarak bir .aab dosyasından yerel olarak kurmak üzere bir .apk dosyası oluşturmak da mümkündür.
R8, küçültme, optimizasyon ve karartma (obfuscation) yoluyla Java kodunun boyutunu azaltır.
game.project dosyasındaki Android ▸ R8 Keep Rules alanında /builtins/manifests/android/dmengine.keep dosyasını seçin. Bu, Defold’un varsayılan kurallarını doğrudan kullanır:
[android]
r8_keep_rules = /builtins/manifests/android/dmengine.keep
Java kodu içeren her eklentinin, çalışma sırasında ihtiyaç duyduğu sınıflar için bir .keep dosyası sağladığından emin olun. Eklenti kuralları, proje derlenirken seçili proje kurallarıyla birleştirilir. R8’i etkinleştirdikten sonra yayıma yönelik bir derlemeyi cihazda test edin.
R8 Keep Rules alanı boş bırakıldığında küçültme işlemi yapılmadan D8 kullanılır. R8 etkinleştirildiğinde, yerel kod eklentileri (native extension) olmayan bir projede bile yerel kod eklentisi derleme hizmeti kullanılır.
Bir eklentinin koruma kuralları, eklentinin manifests/android dizininde, build.gradle dosyasının yanında bulunur. Bir dosyanın nasıl ekleneceğini ve eklentinin Java sınıflarının nasıl korunacağını öğrenmek için Android eklentileri için R8 koruma kuralları bölümüne bakın.
Derleme bir mapping.txt dosyası oluşturduğunda R8’in bu dosyasını saklamak için Android dağıtım paketi iletişim kutusunda Generate debug symbols seçeneğini etkinleştirin veya Bob’a --with-symbols seçeneğini geçirin. Örneğin, proje dizininden:
java -jar bob.jar --platform arm64-android --variant release \
--archive --with-symbols --bundle-output build/android \
resolve build bundle
Eşleme, oluşturulan APK veya AAB dosyasının yanına <binary-name>.apk.symbols/mapping.txt olarak kaydedilir. Örneğin, proje başlığı My Game olduğunda yukarıdaki komut build/android/MyGame/MyGame.apk.symbols/mapping.txt dosyasını oluşturur.
Eşleme dosyasını, oluşturulduğu sürümle birlikte saklayın. Bu dosya, yığın izlerini (stack trace) yorumlamak için karartılmış Java adlarını özgün adlarla eşler; farklı bir derlemeye ait eşleme yanlış sonuçlar verebilir.
Defold motoru, tüm motor özelliklerinin çalışabilmesi için çeşitli izinler gerektirir. İzinler, game.project proje ayarları dosyasında belirtilen AndroidManifest.xml dosyasında tanımlanır. Android izinleri hakkında daha fazla bilgiyi resmî belgelerden edinebilirsiniz. Varsayılan bildirimde aşağıdaki izinler istenir:
Uygulamaların ağ soketleri açmasına ve ağlar hakkındaki bilgilere erişmesine izin verir. Bu izinler internet erişimi için gereklidir. (Android resmî belgeleri) ve (Android resmî belgeleri).
İşlemcinin uyumasını veya ekranın kararmasını önlemek için PowerManager WakeLocks kullanılmasına izin verir. Bu izin, bir anlık bildirim alınırken cihazın uyumasını geçici olarak önlemek için gereklidir. (Android resmî belgeleri)
AndroidX, artık bakımı yapılmayan özgün Android Support Library’ye kıyasla büyük bir iyileştirmedir. AndroidX paketleri, aynı özellikleri ve yeni kütüphaneleri sağlayarak Support Library’nin yerini tamamen alır. Asset Portal üzerindeki Android eklentilerinin çoğu AndroidX’i destekler. AndroidX kullanmak istemiyorsanız uygulama bildiriminde Use Android Support Lib seçeneğini işaretleyerek AndroidX’i açıkça devre dışı bırakıp eski Android Support Library’yi kullanabilirsiniz.

A: Evet, game.project dosyasının Android bölümündeki immersive_mode ayarını etkinleştirin. Bu, uygulamanızın ekranın tamamını kaplamasını ve ekrandaki tüm dokunma olaylarını yakalamasını sağlar.
A: Android, uygulamayı yeni bir sertifikayla kurmaya çalıştığınızı algılar. Hata ayıklama derlemeleri (debug build) paketlenirken her derleme geçici bir sertifikayla imzalanır. Yeni sürümü kurmadan önce eski uygulamayı kaldırın:
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
A: Bu durum, iki veya daha fazla eklentinin (extension) aynı property etiketini farklı değerlerle içeren bir Android bildirim parçası (Android Manifest stub) sağlaması durumunda ortaya çıkabilir. Örneğin Firebase ve AdMob ile bu sorun yaşanmıştır. Derleme hatası şuna benzer:
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
Sorun ve geçici çözümü hakkında daha fazla bilgi için Defold hata bildirimi #9453 ve Google hata bildirimi #327696048 sayfalarını okuyabilirsiniz.