GÜNCELLEME (22.06.2019): Resimler eklendi ve Unity 2019 için talimatlar güncellendi.
Herkese merhaba,
Son dersimin üzerinden uzunca bir süre geçmesinin ardından tekrar sizlerleyim. Bu dersin dışında daha planladığım pek çok güzel proje var ama henüz hayata geçirmek kısmet olmadı.
Bu dersi bir nevi sitenin ölmediğini, tam gaz yola devam edeceğini haber vermek için yazıyorum diyebiliriz. Bir diğer sebep ise, bu dersin işleyeceği konu, yani Google Play‘e Unity oyunlarını yüklemek, bana epeyce sorulduğundan artık bu sorulara ortak bir yerden cevap vermek istiyorum.
Derste ne göreceğiz? Öncelikle Unity üzerinden yaptığınız uygulamayı imzalamayı (sign) göreceğiz. Ardından bu imzalanmış uygulamayı Google Play’e yüklemeyi göreceğiz. Derse başlamadan önce bir Google Play Developer hesabına sahip olmalısınız (tek seferlik bir ödeme karşılığı sahip oluyorsunuz) ve Android SDK’yı düzgünce kurup Unity’e tanıtmalısınız. Android SDK kurulumu için sizi şuraya alayım: yasirkula.com/2013/07/17/unity-android-sdk-kurulumu-resimli-anlatim/
Artık derse başlayalım!
NOT: Proje konumunuzda ‘ü‘, ‘ı‘, ‘ğ‘ gibi Türkçe karakterler varsa, bunları İngilizce karakterler ile değiştirin. Örneğin projeniz “C:\Ünity Projeleri\Yılan Oyunu” konumunda ise, bu konumu “C:\UnityProjeleri\YilanOyunu” olarak değiştirin. Örnekte olduğu gibi, konumdaki boşluk karakterlerini de silmenizi öneririm.
Bundle Identifier Belirlemek
En kolay kısım burası. Eğer Player Settings‘te Bundle Identifier kısmını hiç ellemeden uygulamanızı Android’e build almaya kalkarsanız, “Bundle Identifier has not been set up correctly” hatası alırsınız. Bu hatayı çözmek için yapmanız gereken tek şey, Bundle Identifier değerini şu şekilde değiştirmek: com.SirketinizinIsmi.UygulamaninAdi. Burada herhangi bir noktalama işareti (aralardaki noktalar hariç), boşluk veya Türkçe karakter kullanmayın.
64-bit APK Desteği Eklemek
Artık Google Play’e 64-bit desteği olmayan APK yüklemeye çalıştığınızda şu uyarıyla karşılaşacaksınız: “Bu sürüm Google Play 64 bit gereksinimi ile uyumlu değil.” Uygulamalarınıza 64-bit desteği eklemek için, Player Settings’teki Target Architectures listesinde yer alan ARM64’ü seçmeniz yeterli. Eğer bu seçenek kapalıysa, Scripting Backend‘i IL2CPP yapmanız lazım.
NOT: Target Architectures‘taki x86 seçeneğini seçmeyin; bu 32-bit’lik bir işlemci türü olduğu ve 64-bit’i Unity tarafından desteklenmediği için, böyle bir uygulamayı Google Play’e yüklerken yine 64 bit hata mesajı alırsınız.

IL2CPP ile build alabilmek için Android NDK gerekiyor. Edit-Preferences-External Tools‘ta NDK’in konumu girilmişse ve hemen altında NDK ile alakalı bir uyarı mesajı yoksa, NDK zaten kuruludur. Aksi taktirde NDK’i kurup konumunu External Tools’taki kutucuğa girmeniz lazım. Burada tavsiye edilen yöntem, NDK’i Unity Hub ile kurmak; böylece doğru NDK sürümünün kurulduğundan emin olursunuz. Bunun için Unity Hub’da Installs sekmesinden Unity sürümünüzü bulun ve sağ üstündeki 3 noktaya tıklayıp Add Modules seçeneğini seçin. Ardından Android Build Support‘un altındaki Android SDK & NDK Tools‘u seçip kurulumu tamamlayın:

NDK’i Unity Hub ile kurduktan sonra, External Tools’taki “Android NDK Installed with Unity” seçeneğini işaretlemeniz yeterli:

Google Play, uygulamalarınızı “App Bundle” (.aab) formatında yüklemenizi öneriyor ve Unity’nin son sürümleriyle beraber artık App Bundle build almak destekleniyor. Bunun için, Build Settings’teki Build App Bundle seçeneğini işaretleyebilirsiniz:

Eğer bu seçenek(ler)i göremiyorsanız ve eski bir Unity sürümü kullanıyorsanız, güncel bir Unity sürümüne geçmeniz gerekebilir.
Yaptığınız Uygulamayı Unity Üzerinden İmzalamak
Google Play’e uygulama yüklerken pek çok arkadaşımız bir hatayla karşılaştı: “You uploaded an APK that was signed in debug mode. You need to sign your APK in release mode.“
Hatanın Türkçe versiyonu: “Yükleme başarısız oldu. Hata ayıklama modunda imzalanmış bir APK yüklediniz. APK’nızı yayınlama modunda imzalamanız gerekiyor. İmzalama hakkında daha fazla bilgi edinin.“
Android uygulamalarında imzalama (sign) diye bir işlem var. Bu sistem, sizden başka birisinin oyunun yeni bir sürümünü oluşturmasını engelliyor. Google Play hesabınız hack’lense bile, kötü niyetli kişi sizin imzanıza sahip olmadıkça oyunlarınızı güncelleyemiyor. Google Play’e uygulamanızı yüklerken uygulamanızın imzalanmış olması gerekiyor. Burada imzadan kastımız, bir kağıda gerçek imzanızı atıp bir yere postalamak değil. Unity üzerinden uygulamanızı dijital olarak imzalamalısınız. Ancak siz sadece uygulamanızı telefonunuzda test etmek istiyorsanız, uygulamayı imzalamak zorunda değilsiniz. Direkt build edip APK dosyasını Android cihazınızda çalıştırabilirsiniz.
Gelgelelim bu imzalama işlemi nasıl gerçekleşir… Unity’den Player Settings‘e girin ve Publishing Settings sekmesini açıp aşağıdaki talimatları adım adım izleyin:
Unity 2019 ve Sonrası İçin
- Keystore Manager butonuna tıklayın.
- Gelen pencereden Keystore-Create New-Anywhere seçeneğini seçip, oluşturulacak dosya için bir konum ve isim belirleyin.
- Password ve Confirm password alanlarına, keystore için bir şifre girin (ÖNEMLİ: alttaki NOT1’i okuyun).
- Alias kısmına küçük harflerle uygulama adını girip ardından alttaki iki yere Alias için bir şifre girin (ÖNEMLİ: alttaki NOT2’yi okuyun). Pencerede geri kalan kısımları doldurmasanız da olur (eğer olmazsa sallamayı da deneyebilirsiniz). İşiniz bitince Add Key‘e tıklayın.
- Karşınıza gelen “Key created in keystore. Do you want to set them as your Project Keystore and Project Key?” kutucuğuna Yes deyin.
- Harika! Artık oyununuz imzalanmaya hazır. Hemen şimdi oyunu Build ederseniz, alacağınız APK dosyası imzalanacak ve Google Play’e yüklenmeye hazır halde olacak.
- Eğer Unity’den çıkıp daha sonra tekrar açarsanız ve yine imzalanmış bir APK dosyası build etmek isterseniz, Custom Keystore seçeneğini işaretleyip altındaki Select… butonu ile keystore dosyanızı seçin. Password kısmına keystore şifresini girdikten sonra, oluşturduğunuz Alias‘ı seçin ve onun şifresini de altındaki Password kutucuğuna girin. Artık build alabilirsiniz.
Unity 2018.4 ve Öncesi İçin
- Create New Keystore seçeneğini seçin.
- Browse Keystore‘a tıklayın, oluşturulacak dosya için bir konum ve isim belirleyin.
- Keystore password ve Confirm password alanlarına, keystore için bir şifre girin (ÖNEMLİ: alttaki NOT1’i okuyun).
- Birden üçe kadar tüm aşamaları yaptınız. Şimdi başka hiçbir şeye dokunmadan direkt Alias‘a tıklayıp “Create a new key“i seçin.
- Karşınıza gelen pencerede, Alias kısmına küçük harflerle uygulama adını girip ardından alttaki iki yere Alias için bir şifre girin (ÖNEMLİ: alttaki NOT2’yi okuyun). Pencerede geri kalan kısımları doldurmasanız da olur (eğer olmazsa sallamayı da deneyebilirsiniz). İşiniz bitince Create Key‘e tıklayın.
- Eğer Alias’ta Unsigned seçili kaldıysa, onu yeni oluşturduğunuz Alias ile değiştirin.
- Alias’ın altında yer alan Password‘a alias şifrenizi girin.
- Harika! Artık oyununuz imzalanmaya hazır. Hemen şimdi oyunu Build ederseniz, alacağınız APK dosyası imzalanacak ve Google Play’e yüklenmeye hazır halde olacak.
- Eğer Unity’den çıkıp daha sonra tekrar açarsanız ve yine imzalanmış bir APK dosyası build etmek isterseniz, bu sefer Use Existing Keystore deyip Browse Keystore ile keystore dosyasını seçin. Keystore password kısmına keystore şifresini girdikten sonra, oluşturduğunuz Alias‘ı seçin ve onun şifresini de altındaki Password kutucuğuna girin. Artık build alabilirsiniz.
NOT1: Keystore şifresi belirlerken, ben bu şifrenin kırılıp kırılamayacağından emin olamadığımdan, üyeliklerde kullandığım şifrelerden farklı, rastgele harf ve rakam kombinasyonundan oluşan bir şifre belirliyorum. Önemli bir nokta var burada: bu şifre bilgisayarınızda herhangi bir yerde kaydedilmiyor. Yani şifreyi bir yere not almalısınız. Ayrıca oluşturduğunuz keystore dosyasını da yanlışlıkla silmeyeceğiniz özel bir yere koymalısınız. Yoksa nolur? Uygulamanızı Google Play’e yükledikten sonra güncellemek istediğinizde, ya bu keystore dosyasını bulamazsınız ya da şifreyi bir türlü hatırlayamazsınız. Bu iki durumdan herhangi biri gerçekleşince de zaten siz o uygulamayı güncellemeyi unutun.
NOT2: Alias şifresi ile keystore şifresi aynı olabiliyormuş ama aynı olmamasını tavsiye ediyorlar. Yine bu şifre de uygulamayı güncellerken gerekeceği için, tıpkı keystore şifresinde olduğu gibi bu şifreyi de bir yere not edin.
NOT3: Tüm adımları aynen uyguladığınız halde, Google Play hâlâ “Hata ayıklama modunda imzalanmış bir APK yüklediniz.” hatası veriyorsa, Denetim Masası‘ndaki Saat ve Bölge ayarlarından Bölge‘nizin değerini “İngilizce (Amerikan)” yapmayı deneyebilirsiniz.
İmzalanmış Uygulamayı Google Play’e Yüklemek
Artık oyununuzu hazırladınız, imzaladınız ve build ettiniz. Çileli kısmı geride bıraktınız! Şimdi oyununuzu tüm dünyaya sunmaktan sadece bir adım uzaksınız. Bu aşamada, yazının başında da dediğim gibi, bir Google Play Developer hesabınızın olması gerekiyor. Hesabınız varsa o zaman bu ünlü Google Play’e uygulamalar nasıl yükleniyormuş adım adım bakalım.
1- Geliştirici konsoluna giriş yapın ve “UYGULAMA OLUŞTUR” butonuna tıklayın.
2- Eğer oyununuz İngilizce destekliyorsa, Varsayılan dil‘i “İngilizce (en-US)” yapmanızı tavsiye ederim, ama oyununuz sadece Türkçe dilini destekliyorsa dil listesinden Türkçe‘yi seçin. Başlık kısmına oyununuzun adını yazın ve OLUŞTUR butonuna tıklayın.
3- Karşınıza gelen Mağaza Girişi sayfasında doldurabileceğiniz bilgiler şöyle:
Başlık: oyunun ismi
Kısa açıklama: oyunla ilgili akılda kalıcı ama çok kısa (maksimum 80 harf) bir açıklama
Tam açıklama: oyunun Google Play sayfasında yer alacak olan ve oyunun özelliklerini vs. kullanıcıya tanıtan açıklama metni
Ekran görüntüleri: oyun içi görselleri ve ekran görüntülerini buraya yükleyebilirsiniz. TELEFON yazan kısma oyununuzun cep telefonlarından alınmış ekran görüntülerini, TABLET yazan yerlere de tabletten alınmış ekran görüntülerini ekleyebilirsiniz. Açıkçası ben TABLET’e de telefondan alınmış resimler yüklüyorum, çok kasmaya gerek yok bence. Dikkat edin kimse duymasın, aramızda casuslar olabilir
Yüksek çözünürlüklü simge: oyununuzun 512×512 çözünürlüklü PNG ikonunu buraya yükleyebilirsiniz. İkonun arkaplanını dilerseniz saydam bırakabilirsiniz. İkona çok özen göstermenizi tavsiye ederim; nasıl insanlar kitapların önce kapağını görüyorlarsa oyunlarınızın da önce ikonunu görüyorlar
Öne Çıkan Grafik: oyunun Google Play sayfasını ziyaret eden kullanıcıların ilk görecekleri şey olan 1024×500 çözünürlüklü grafik
Tanıtım Grafiği: gerçekten hiçbir fikrim yok; ancak yükleyip yüklememek size kalmış
Tanıtım Videosu: varsa oyununuzu tanıtan YouTube videosunun linki
Uygulama türü ve İletişim bilgileri gibi geriye kalan bilgileri de doldurduktan sonra TASLAĞI KAYDET butonuna tıklayın.
NOT: Uygulamanızın açıklamasının, Türkçe Android kullanan kullanıcılar için Türkçe, diğer kullanıcılar için İngilizce (ve belki Alman kullanıcılar için Almanca vb.) olmasını isteyebilirsiniz. Bu işlemi yapmak çok basit: sayfanın yukarısındaki Çevirileri yönet butonuna tıklayıp Kendi çeviri metninizi ekleyin seçeneğini seçin ve açıklamaları çevirmek istediğiniz dilleri seçin. Artık seçtiğiniz her dil için ayrı uygulama adı, uygulama açıklaması ve ekran görüntüleri girebilirsiniz. Diller arası geçiş yapmak için Diller butonuna tıklayın.
4- Sol menüden Uygulama sürümleri sekmesine geçiş yapın. Burada dilerseniz uygulamanız için alfa/beta test sürümleri oluşturup sadece belirli kişilerin bu test sürümlerini indirebilmesini sağlayabiliyorsunuz ama benim bunlarla hiç uğraşım olmadığından süreci bilmiyorum. Siz APK veya AAB’nizi yüklemek için Üretim kısmında yer alan YÖNET butonuna, oradan da SÜRÜM OLUŞTUR butonuna tıklayın. Burada “Google Play’den uygulama imzalama özelliği” kısmının tam olarak ne işe yaradığını ben bilemedim ama siz dilerseniz oradaki link vasıtasıyla bu sistem hakkında daha fazla bilgi edinebilirsiniz. Velhasılıkelam, ben Paint 360° uygulamamda bu kısımda DEVAM ET seçeneğini seçtim ve bir sıkıntı yaşamadım. APK’nızı yüklemek için DOSYALARA GÖZ AT butonuna tıklayın. Ardından Sürüm adı‘na 1.0 gibi bir sürüm kodu girip KAYDET butonuna tıklayın.
NOT: Eğer Unity’de Player Settings‘te Device Filter olarak “FAT (ARMv7+x86)” seçili ise, uygulama boyutunu düşürmek adına şöyle bir yol izlemenizi öneririm: önce Device Filter’ı ARMv7 yapıp bir build alın. Ardından Bundle Version Code‘u 1 artırıp Device Filter’ı x86‘ya çevirerek bir başka build daha alın. Google Play geliştirici konsolunda yeni bir sürüm oluştururken DOSYALARA GÖZ AT’tan hem ARMv7’li APK’yı hem de x86’lı APK’yı ayrı ayrı sunucuya yükleyin. Bu sayede “FAT (ARMv7+x86)”ın yaptığı işi, APK boyutunu büyütmeden yapmış olacaksınız.
5- Sol menüden İçerik değerlendirme sekmesine geçiş yapıp burada karşınıza gelen bilgileri doldurun. Vereceğiniz cevaplara bağlı olarak oyununuzun yaş kitlesi belirlenecek.
6- Sol menüden Fiyatlandırma ve dağıtım sekmesine geçiş yapın. Bu sekmede, uygulamanızın ücretli mi yoksa ücretsiz mi olacağına ve hangi ülkelerde indirmeye açık olacağına karar verebilirsiniz. Hiç ücretli uygulama yüklemediğimden, ücretli uygulama prosedürünü bilmiyorum. Bu sekmede yer alan diğer seçenekleri de istediğiniz gibi doldurun. En alttaki Onaylar kısmında yer alan, yıldızla işaretlenmiş tüm kutucuklara tik atın.
7- Tüm bu işlemler bittikten sonra Uygulama sürümleri menüsüne geri dönün ve oluşturduğunuz sürümün yanındaki DÜZENLE butonuna tıklayın. Gelen sayfada sağ alttan GÖZDEN GEÇİR butonuna tıklayıp son olarak da sağ alttan YAYINLA butonuna tıklayın. Bir sıkıntı olmazsa oyununuz bir gün içerisinde Google Play’de yayınlanacaktır. Hayırlı olsun!
Mevcut Bir Uygulamayı Güncellemek
Diyelim uygulamanız çok tutuldu ve siz de oyunu güncellemeye karar verdiniz. Yapmanız gereken şeyler sırayla şöyle:
1- Unity’de Player Settings‘e gelin ve buradan Other Settings sekmesini açın. Bu kısımda değiştirmeniz gereken iki değer var: Bundle Version (veya direkt Version) ve Bundle Version Code. Eğer Bundle Version 1.0 ise, onu örneğin 1.1 yapın. Ardından eğer Bundle Version Code 1 ise onu 2 yapın. Yani içindeki değeri 1 artırın.
NOT: Eğer yukarılarda bahsettiğim metodu kullanarak Google Play geliştirici konsoluna ARMv7 ve x86 için ayrı APK’lar yüklediyseniz, ve diyelim Bundle Version Code değeri ARMv7 için 1, x86 için 2 idiyse, o zaman yeni ARMv7’nizin Bundle Version Code’unu 3, x86’nızın ise 4 yapın.
2- Publishing Settings sekmesinden keystore ve alias şifrelerinizi girip oyunu Build edin.
3- Google Play geliştirici konsolunu açın ve oyun listesinden güncellemek istediğiniz oyuna tıklayın. Sol taraftaki menüden Sürüm yönetimi-Uygulama sürümleri yolunu izleyin. Üretim kısmındaki YÖNET butonuna tıklayın. Sağ üstteki SÜRÜM OLUŞTUR butonuna tıklayıp gelen sayfaya APK'(lar)ınızı yükleyin.
4- Bu sürümdeki yenilikler alanına, güncellemeyle oyuna eklediğiniz özellikleri ve(ya) düzelttiğiniz sorunları yazın.
5- İNCELE butonuna tıklayarak değişiklikleri onaylayın.
6- Harika! Yaptığınız bu değişiklikler, bir gün içinde dükkandaki uygulamanıza yansıyacak.
Bu yazıya da burada son vermek istiyorum. Umarım faydalı olmuştur. Sağlıcakla kalın!