Android App Bundle derle
Aşağıdaki menü adları File → Build Profiles kullanan Unity 6'dan. Unity 2022 ve öncesinde aynı seçenekler File → Build Settings altındadır.
Android'e geç
File → Build Profiles'ı aç, Android'i seç (modül yoksa Unity Hub ile kur) ve Switch Profile ile etkin profil yap.
Paket adını belirle
Edit → Project Settings → Player → Android içinde Other Settings → Identification altında paket adını ayarla. İlk yüklemeden sonra değiştirilemez.
IL2CPP ve ARM64'ü seç
Configuration altında Scripting Backend değerini IL2CPP yap, ardından Target Architectures içinde ARM64'ü aç. Google Play 64 bit native kod ister ve ARM64 yalnız IL2CPP ile kullanılabilir.
Paketi aç
Derleme profiline dön, Build App Bundle (Google Play) kutusunu işaretle (Export Project kapalıyken görünür) ve Development Build'in kapalı olduğundan emin ol.
Derle
Build'e tıkla, bir dosya adı seç; Unity
.aabdosyasını yazar.
CI'da mı derliyorsun? Aynı ayarlar bir editör betiğinden de kullanılabilir; bu sayede sürüm kodunu artırmayı unutmak da imkansızlaşır:
using UnityEditor;
public static class ReleaseBuild
{
[MenuItem("Build/Android App Bundle")]
public static void Build()
{
PlayerSettings.Android.bundleVersionCode += 1;
EditorUserBuildSettings.buildAppBundle = true;
BuildPipeline.BuildPlayer(new BuildPlayerOptions
{
scenes = new[] { "Assets/Scenes/Main.unity" },
locationPathName = "Builds/game.aab",
target = BuildTarget.Android,
options = BuildOptions.None,
});
}
}Anahtar deposu ve Play Uygulama İmzalama
Kendi anahtar deposun yoksa Unity debug anahtarıyla imzalar ve Play Console debug imzalı paketleri reddeder. Editörde bir tane oluştur:
Keystore Manager'ı aç
Edit → Project Settings → Player → Android → Publishing Settings yoluna git ve Keystore Manager'ı aç.
Anahtar deposunu oluştur
Keystore → Create New'u seç, dosyayı kaydet (herhangi bir yere ya da ayrılmış anahtar deposu klasörüne), bir şifre belirle ve bir takma adla anahtar ekle.
Derlemelerde kullan
Publishing Settings'e dön, anahtar deposunu ve anahtar takma adını seç, şifreleri gir.
Bu anahtar deposu senin yükleme anahtarındır. İlk yüklemede Play Console, Play Uygulama İmzalama'yı kurar ve uygulama imzalama anahtarını Google saklar. Anahtar deposu dosyasını ve iki şifreyi projenin dışında yedekle; kaybolan yükleme anahtarı Play Console'dan sıfırlama istemek demektir.
Bundle Version Code ve Target API Level
Player → Other Settings → Identification içinde Version oyuncuların gördüğü değerdir, Bundle Version Code ise Google'ın karşılaştırdığı tam sayı. Yükleyeceğin her derlemeden önce Bundle Version Code'u artır; Play Console tekrar kullanılan kodları reddeder.
Hemen yanında Target API Level var. 31 Ağustos 2026'dan beri yeni uygulamalar ve güncellemeler Android 16'yı (API düzeyi 36) hedeflemek zorunda. Otomatik ayarda Unity kurulu en yüksek SDK'yı kullanır; bunun en az 36 olduğunu kontrol et. Eski editör sürümleri en yeni düzeyi desteklemeyebilir; öyleyse Unity'yi testin ortasında değil, öncesinde güncelle.
Unity tuzakları
- Mono derlemesi. Mono ARM64 üretemez. Play Console da sürümü 64 bit şartını karşılamıyor diye işaretler. ARM64 ile IL2CPP'ye geç.
- Açık kalan Development Build. Geliştirme derlemeleri daha yavaştır, geliştirme filigranı gösterir ve hata ayıklanabilir olarak işaretlenebilir; Play Console bunu reddeder.
- Reklam ve analitik için eski SDK'lar. Eski üçüncü taraf SDK'lar eski native kitaplıklar ve izinler getirir. Testten önce güncelle: Play Console 16 KB bellek sayfalarını desteklemeyen kitaplıklar için uyarır ve 1 Şubat 2027'den itibaren desteklemeyen güncellemeler yayınlanamaz.
- Çok büyük paket. Yükleme boyut yüzünden başarısız olursa Split Application Binary'yi aç; Unity varlıkları temel modül yerine Play Asset Delivery paketlerine taşır.
- Minify eklentileri bozar. Release'te küçültme, eklentilerin adıyla yüklediği Java sınıflarını silebilir. Koruma kuralları ekle ya da küçültülmüş release'i yüklemeden önce cihazda test et.
- Sürüm kodunu unutmak. Aynı Bundle Version Code ile ikinci yükleme başarısız olur. Artırmayı betiğe bağla ya da yayın kontrol listene ekle.
IL2CPP derlemeleri için yerel çökme sembolleri
Bir Unity oyunu test edicinin telefonunda çöktüğünde yığın izi libil2cpp, libunity ya da libmain içini gösterir. Semboller olmadan Play Console yalnız ham adresler gösterir ve Google Play, sembolleri yüklemeden önce gelmiş çökmeleri sembolize etmez. Bunu ilk çökmeden sonra değil, ilk kapalı test sürümünden önce kur.
Sembolleri aç
File → Build Profiles → Android içinde Debug Symbols değerini Public yap. Public semboller yalnız sembol tablosunu içerir; okunur fonksiyon adları için yeterlidir ve dosyayı küçük tutar. Debugging ise yerelde bir native debugger bağlamak için tam hata ayıklama bilgisi ekler.
Google'a nasıl ulaşacaklarını seç
Kendin yükleyeceğin
MyApp-0.1-v100-IL2CPP.symbols.zipgibi adlandırılmış bir paket için .zip seç ya da sembolleri.aabile birlikte yüklensinler diye uygulama paketine göm. Bir derleme betiğinde aşağıdaki parça ikincisini yapar.Sembolleri sürümlerle eşle
Semboller tam olarak bir Bundle Version Code'a aittir. Zip'i elle yüklüyorsan bunu Play Console'un App bundle gezgini'nde, o sürümün İndirilenler sekmesinde, test ediciler kurmadan önce yap.
// Public symbols, embedded in the .aab so they upload with it
UserBuildSettings.DebugSymbols.level = DebugSymbolLevel.SymbolTable;
UserBuildSettings.DebugSymbols.format = DebugSymbolFormat.IncludeInBundle;Bir yerel eklenti ayrı bir sembol dosyası getiriyorsa o dosyayı Inspector'da seç ve Shared Library Type değerini eşleşen CPU ile Symbol yap. Dosya kitaplıkla aynı adı taşımalı ve ayrı bir klasörde durmalı.
Kısaca Play Console: kapalı testten üretime
Unity paketin derlenip imzalandıktan sonra gerisi Play Console'da geçer ve her çatıda aynıdır. Bu, kısa kontrol listesi; her menü ve ekran Play Console adımlarının tamamında anlatılıyor.
- Uygulama kurulumunu bitir: Kontrol Paneli'nde gizlilik politikası, uygulama erişimi, reklamlar, içerik derecelendirmesi, hedef kitle, veri güvenliği ve mağaza girişi.
- Kapalı test sürümü oluştur: Test et ve yayınla → Test → Kapalı test altında test edicilerinin ülkelerini seç,
.aabdosyasını yükle ve incelemeye gönder. - Test edicileri Google Group ile ekle: Test ediciler sekmesinde grubu ekle ve opt-in bağlantısını paylaş. Bağlantı, kanal Yayınlandı durumuna geçince çalışır.
- En az 12 test ediciyi 14 gün kesintisiz opt-in tut. Dahili test sayılmaz; ayrılıp geri dönen birinin 14 günü baştan başlar.
- Test sırasında en az bir güncelleme yayınla ve test edicilerin ne bulduğunu, senin neyi değiştirdiğini not et.
- Üretime başvur: Kontrol Paneli'nden başvur ve testin, uygulaman ve hazırlığın hakkındaki üç bölümü yanıtla. Karar Google'ındır; kimse onayı garanti edemez.
Ayrılanları hesaba kat: 12 kişiden fazlasını bul ki biri ayrıldığında takvimin uzamasın. Play Console adımlarının tamamını gör.
Play Console adımlarının tamamı
Kapalı test kanalı, Google Group ve opt-in bağlantısı, 12 test edici / 14 gün kuralı ve üretim başvurusu, tek sayfada adım adım.
Testi bozmadan hızlı yinele
Unity'de: Bundle Version Code'u artır, .aab dosyasını yeniden derle ve aynı kapalı test kanalına yükle. Testin ortasında yayınlanan küçük bir düzeltme yeterli.
Kendi cihazlarında Build and Run, oyunu Run Device altında seçili telefona kurar; çıktı yolu bir kez ayarlandıktan sonra Ctrl+B (macOS: Cmd+B) bunu tekrarlar. Unity'nin application patching özelliği cihazındaki debug derleme sürelerini kısaltır ama test edicilere hiçbir şey ulaştırmaz: onların her zaman kapalı test kanalında yeni bir .aab dosyasına ihtiyacı vardır.
- Şifreler kaydedilmez. Unity anahtar deposu ve anahtar şifrelerini diskte saklamaz; her Editor yeniden başlatmasından sonra yeniden girersin. Tekrarlanabilir CI derlemeleri için onları, derleme bölümündeki sürüm kodu artırmanın yanında, editor derleme betiğinde ayarla.
- Boyuta dikkat et. Google Play temel modülü sıkıştırılmış indirme boyutu olarak 500 MB ile sınırlar. Daha büyük oyunlar Play Asset Delivery ile varlık paketlerine ihtiyaç duyar; modüller ve install-time varlık paketleri birlikte 4 GB'a kadar çıkabilir.
- Yerel güncellemelerden sonra yeniden derle. Editor, 16 KB yerine 4 KB'a hizalanmış her
.soiçin derleme sırasında uyarı gösterir. Editor'ının ve Burst gibi yerel paketlerin en son yama sürümüne geç, sonra bir sonraki yüklemeden önce yeniden derle. - Editor sürümünü sabit tut. Test ortasında Unity sürümünü değiştirmek test edicilerin çalıştırdığı motor kitaplıklarını değiştirir. Bir çökme güncellemeyi zorunlu kılmadıkça sürümü 14 gün boyunca sabitle.
Sık sorulan sorular
Yüklemeden önce Android emülatöründe test edebilir miyim?
Unity Android emülatörlerini desteklemez. Fiziksel bir cihazda test et; Unity Remote girdi için, Device Simulator ekran düzeni için yardımcı olur ama ikisi de gerçek telefondaki release derlemesinin yerini tutmaz.
Unity 6 hangi hedef API düzeylerini kullanabilir?
Unity'nin güncel Unity 6 sürümleri için Android gereksinimleri sayfası API düzeyi 35 ve 36'yı hedefleyebileceğini söyler; Google Play de yeni uygulamalar ve güncellemeler için 36 ister. Desteklenen en düşük Android sürümü 8.0'dır (API düzeyi 26).
Gerçekten IL2CPP gerekli mi?
Google Play için pratikte evet: ARM64'ü yalnız IL2CPP derler ve Google Play 64 bit yerel kod ister. Okunur çökme raporları için libil2cpp sembollerini üreten de IL2CPP'dir.
Bazı test ediciler oyunu neden başlatamıyor?
Unity 6, OpenGL ES 3.1 ya da Vulkan ister; OpenGL ES 3.0 ve öncesi desteklenmez. Vulkan'ı açık bırak ve test edicilere opt-in olmadan önce asgari gereksinimi söyle ki onları ilk gün kaybetme.
Kaynaklar
Teknik ayrıntılar aşağıdaki resmi belgelerle kontrol edildi. Menüler ve varsayılanlar sürümden sürüme değişir; şüphede kalırsan resmi sayfa esastır.
- Unity Manual: Android build process
- Unity Manual: Android Player settings
- Unity Manual: Create a new keystore
- Android Developers: Target API level requirements
- Android Developers: Support 16 KB page sizes
- Unity Manual: Android symbols
- Unity Manual: Android requirements and compatibility
- Play Console Help: Download and install size limits
- Play Console Help: App testing requirements for new personal developer accounts
- Play Console Help: Set up an open, closed, or internal test
- Play Console Help: Deobfuscate or symbolicate crash stack traces
12 test edici kuralında yeni misin?
Genel rehber Google'ın şartını, bir TestBunny kampanyasının gün gün nasıl ilerlediğini ve neyi garanti edip edemediğimizi anlatır.
Genel rehberi oku