Programlama

APK hazırla

APK nedir?

APK, Android telefonun kurduğu dosyadır. İçinde ekran, resim, yazı ve uygulamanın çalışması için gereken kod durur. Mağaza bu dosyayı çoğu zaman senin yerine açar. Dosyayı kendin kaydedip açınca telefon ek izin isteyebilir.

APK bir programlama dili değildir. O, bitmiş uygulamanın paketidir. İçi Kotlin, Java, Flutter ya da yalnız bir web sayfası olabilir. Dışarıdan hepsi .apk ile biter.

Tanımadığın bir sayfadan gelen APK uygulamanın gerçek kopyası olmayabilir. Kendi sitenden veya kendi zipinden derlediğin dosya başkadır. Adın içinde apk yazması dosyanın güvenli olduğunu göstermez.

APK nasıl yapılır?

Önce uygulamanın ne yapacağı yazılır. Sonra ekran kurulur. Sonra o ekran dosyaya döner. En sonda bir program bu dosyaları bir APK'ya toplar. Telefon o tek dosyayı kurar.

En kısa yol web sayfasıdır. index.html bulunan bir zip Nibras Studio'ya verilir ve Studio onu APK'ya çevirir. Bu yol için Android Studio, hesap ve kod dersi gerekmez. Sayfa telefonda bir uygulama penceresinde açılır.

Daha uzun yol telefonun kendisinde çalışan bir program yazmaktır. O zaman klasörler, manifest ve imza adımı gelir. APK yine sonda bir dosyadır, ama oraya varmak için daha çok araç gerekir.

Neler gerekir?

Her tür aynı aracı istemez. Siteyi uygulamaya çeviriyorsan tarayıcı, bir metin düzenleyici ve zip yeter. Telefonun kendisi yoklamadır. Derlemeyi Nibras Studio görür.

Kotlin veya Java ile native uygulama için Android Studio, JDK ve Android SDK gerekir. Paketi Gradle toplar. Capacitor için Node ve npm de gelir, çünkü sayfa önce web klasöründedir, sonra android klasörüne geçer. Flutter için ayrı Flutter SDK gerekir.

  • Web APK: düzenleyici, tarayıcı, zip, Nibras Studio
  • Native: Android Studio, JDK, Android SDK, Gradle
  • Capacitor: Node, npm, Android SDK, android klasörü
  • Flutter: Flutter SDK, android klasörü

Yapma aşamaları

Aşamayı atlamak sonda boş uygulama verir. Önce bir ekranı bitir, sonra ikincisini ekle. Her aşamanın kendi dosyası vardır.

  1. İşi bir cümleyle yaz: uygulama neyi tutar veya neyi gösterir.
  2. Ekranı kâğıtta veya bu sayfadaki kara örnekte gör. Başlık, satır ve düğme yeter.
  3. Dosyaları türün klasörüne koy. Web için index.html kökte durmalıdır.
  4. Kendi bilgisayarında aç. Web sayfasını tarayıcıda, native uygulamayı emülatörde veya telefonda yokla.
  5. APK'yı derle. Web zip ise Studio'ya ver. Native ise Gradle assemble çağırır.
  6. Telefonda kur ve düğmeye bas. Çalışmayan yazıyı düzelt, yeniden derle.

APK türleri

Web APK

Bu, sitenin telefon penceresine konmasıdır. İçi HTML, CSS ve JavaScript'tir. Sunucuda çalışan Python burada kendi açılmaz. Zipin kökünde index.html olmalıdır. css ve js klasörleri onun yanındadır. Resim img klasörüne düşer. Nibras Studio bu zipi veya sitenin adresini alır, ad, ikon ve paket adı seçilir, APK derlenir.

qeyd/
  index.html
  css/app.css
  js/app.js
  img/icon.png

Hazır örnek bu düzendedir. Aşağıdan zipi indir, yazıyı değiştirmek istersen index.html'e bak, sonra Studio'ya ver.

Native APK

Kotlin veya Java ile yazılır. Ekran res/layout içindeki xml dosyasındadır. Düğmenin işi java veya kotlin dosyasındadır. İkon mipmap klasörlerindedir. AndroidManifest.xml uygulamanın adını, paketini ve açılış ekranını söyler. Android Studio bu klasörleri kendi açar. Derleme Gradle ile gider. Bu tür kamera, sensör ve telefonda derin iş için seçilir. Küçük bir not sayfası için ağırdır.

app/src/main/
  AndroidManifest.xml
  java/com/example/qeyd/MainActivity.kt
  res/layout/activity_main.xml
  res/mipmap-hdpi/ic_launcher.png

app/src/main satırını hatırla. Manifest, ekran ve ikon o satırın altındadır.

Capacitor APK

Sayfa www klasöründe kalır. capacitor.config.json sitenin uygulamaya nasıl gireceğini söyler. android klasörü native kabuktur. Önce sayfayı www'de bitir, sonra Capacitor android klasörünü yeniler, APK ise o android projesinden derlenir. Node ve Android SDK ikisi de gerekir. Bu, web APK'dan bir adım fazladır: telefona kendi eklentinle dokunulabilir.

www/
  index.html
capacitor.config.json
android/app/src/main/
  AndroidManifest.xml

www sitedir. android kabuktur. Birini değiştirip ötekini unutmak eski ekranı telefona koyar.

Flutter APK

Ekran lib/main.dart içinde Dart diliyle yazılır. pubspec.yaml paketlerin listesidir. android klasörü yine kabuktur, ama sayfayı HTML tutmaz. Flutter ekranı kendi çizer. SDK kurulmadan proje açılmaz. Klasör az görünür, ama araç ayrıca öğrenilir.

lib/main.dart
pubspec.yaml
android/app/src/main/
  AndroidManifest.xml

lib ekranın kendisidir. android yalnız telefonun kabuğudur. APK flutter build apk ile çıkar.

APK'nın içinde ne durur?

APK aslında başka adlı bir arşivdir. Adı .apk ile biter, ama içi klasör ve dosyalardan oluşur. Telefon o tek dosyayı açar, imzayı yoklar, sonra içindeki programı çalıştırır. İçini değiştirip yeniden kapatmak uygulamayı senin yapmaz. İmza bozulur ve telefon dosyayı reddeder.

Dışarıdan iki APK aynı görünebilir. Biri içinde bir sayfa tutar, öteki çok ekran, resim ve kütüphane. Boy yazının uzunluğundan değil, resimlerden ve eklenen araçlardan büyür.

  • AndroidManifest.xml uygulamanın adını, paketini, açılış ekranını ve isteyebileceği izinleri söyler.
  • classes.dex telefonun çalıştırdığı programdır. Kotlin ve Java derlenince buna döner. Web APK'da kendi mantığı azdır, sayfa ayrıca durur.
  • res klasörü resim, yazı ve ekran düzenini tutar.
  • resources.arsc hangi adın hangi resme ve yazıya bağlandığını söyleyen tablodur.
  • META-INF imzadır. İçerde bir dosya değişir ve imza yenilenmezse kurulum durur.
  • Web APK'da sitenin kendisi assets ya da buna benzer bir klasörde durur. Pencere o dosyaları açar.

İzinler ne içindir?

APK telefonda duruyor diye kamera, rehber ya da konum kendiliğinden açılmaz. Manifest yalnız uygulamanın ne isteyebileceğini yazar. Kişi onayı çoğu zaman o ekran ilk kez açılınca verir. Onay yoksa o iş gitmez, uygulamanın kalanı kalabilir.

Yalnız ekranın kullandığını iste. Not uygulamasına mikrofon gerekmez. Harita konum ister. Sunucuyla konuşan ekran internet ister. Fazla izin kişiyi korkutur ve mağaza bakışında da soru doğurur.

Web APK siteyi açıyorsa internet gerekir. Kamera kendiliğinden gelmez. Hem kabuk hem sayfa kamerayı istemeli, kişi de onaylamalıdır. İzni ilk açılışa değil, kameranın durduğu ekrana bırak.

Debug, release ve AAB

Debug APK yoklama içindir. Nibras Studio'nun derlediği APK debug imzalıdır. Onu kendi telefonuna kurup düğmeyi denemek olur. Mağaza bu dosyayı genellikle son sürüm olarak kabul etmez. Arkadaşına deneme için vermek olur, telefon ise tanınmayan kaynak uyarısı gösterebilir.

Release APK senin kendi anahtarınla imzalanır. O anahtar sonraki güncellemenin senden geldiğini gösterir. Anahtarı kaybedersen aynı uygulamanın üstüne yenisini koyamazsın. Yeni paket adı başka uygulama sayılır ve eskisinin yanında ayrı durur.

versionCode tam sayıdır. Her yeni dosyada bu sayı büyümeli. versionName kişinin gördüğü addır, örneğin 1.2. Sayı artmazsa telefon yenisini eskinin yerine koymaz.

AAB mağazanın çoğu zaman istediği pakettir. APK telefonun kurduğu dosyadır. Mağaza AAB'yi telefonun türüne göre küçük APK'lara bölebilir. Kendin doğrudan kuruyorsan elinde APK olmalıdır.

Gelişmiş APK nedir?

Basit APK bir ekrandır. Bir satırı telefonda tutar. Kişinin kim olduğunu bilmez. Kapatıp açınca satır yerindedir ve bu yeter. Not, sayaç ve bir düğmelik sayfa bu türdür. Onu bir günde derlemek olur.

Gelişmiş APK çok ekrandır. Hesap vardır. Veri başka telefonda da görünmelidir. Liste internetten gelir. Resim gönderilir. Uygulama kapalıyken bildirim gelebilir. İki kişi aynı değişikliği görür. Bu artık bir dosyanın içine sıkışmış sayfa değildir. Telefon, sunucu ve saklanan veri birlikte çalışır.

Gelişmiş uygulama ilk gün büyük başlamaz. Önce basit ekran biter. Sonra ikinci ekran gelir. Sonra kayıt sunucuya geçer. Sonra giriş. Hepsini ilk gün yazmak boş kabuk verir: düğmeler vardır, iş yoktur.

Web yolunda zor kısım çoğu zaman sitenin kendisidir. Giriş, liste ve sunucu sitededir. APK yalnız penceredir. Nibras Studio o siteyi uygulamaya çevirebilir. Kameranın, dosyanın ve arka planda işin sayfadan derin olması gerekiyorsa native ya da Flutter seçilir. Pencere yetiyorsa ikinci program yazmak vakit kaybıdır.

Gelişmiş APK nasıl yapılır?

Büyük uygulama bir cümleyle başlamaz. «Her şeyi yapan program» yazısı hiçbir ekranı bitirmez. Önce işi küçük cümlelere böl. Örneğin: kişi girer, kendi notlarını görür, birini ekler, o not ikinci telefonda da görünür. Bu dört cümle dört iştir. Her birinin ekranı ve dosyası vardır.

  1. Ekranları ayır. Liste, bir notun içi, yazma formu ve giriş. Her ekranın bir işi olsun.
  2. Verinin yerini seç. Yalnız bu telefona lazım olan satır telefonda kalabilir. Başka telefon görmeliyse sunucu gerekir.
  3. Telefon sunucuya kısa sorgu gönderir. Sunucu veri döndürür. Veritabanı APK'nın içinde durmaz.
  4. Parolayı ve gizli anahtarı koda yazma. APK'yı açan kişi onu okuyabilir. Sunucu yoklar, telefon yalnız izin nişanı saklar.
  5. Giriş ayrı ekrandır. Sunucu nişan verir. Nişan parolanın kendisi değildir.
  6. İzni işin durduğu ekrana koy. Kamera kamera ekranında istenir, ilk açılışta değil.
  7. İnternet kesilince neyin açık kalacağına karar ver. Son listenin kopyası görünebilir. Yeni yazı bekleyip sonra gidebilir. Bunu düşünmezsen ekran yalnızca durur.
  8. Dar telefonda yokla. Senin ekranına sığan düğme başka telefonda kenara çıkabilir.
  9. versionCode'u yükselt. Eski release ile aynı anahtarla imzala. Paket adı aynı kalmalıdır.
  10. Mağaza sayfası APK'dan ayrıdır. Ad, resimler, kısa metin ve gizlilik adresi dosyanın kendisinde bitmez.

Gradle klasörleri

Basit uygulamada bir ekran activity_main içinde durur. Gelişmiş projede her ekranın kendi dosyası olur ve Gradle onları bir APK'ya toplar. Kökte settings.gradle hangi modülün olduğunu söyler, genellikle app. build.gradle derlemenin kuralıdır. gradle/wrapper ve gradlew Gradle'ın kendisini projeyle birlikte tutar ki başka bilgisayarda aynı sürüm çalışsın. gradle.properties küçük ayarlardır.

Asıl kod app klasöründedir. app/build.gradle kütüphaneleri ve SDK sürümünü yazar. src/main/java altında paket klasörleri durur: liste, bir notun içi ve giriş ayrı dosyalardır. res/layout ekranın düzenidir, res/mipmap ikondur, assets içine konan sayfa ya da yazı tipidir. app/build ve .gradle klasörleri derleme sırasında kendi oluşur. Onları elle yazmazsın ve Git'e koymazsın.

Sunucu klasörü telefon projesinin içinde olmayabilir. O, başka adreste çalışır. APK yalnız ona sorgu gönderir. Aşağıdaki kara ekran bu klasörlerin verdiği uygulamadır: liste, resim yeri ve alt menü.

Qeyd/
  settings.gradle
  build.gradle
  gradle.properties
  gradlew
  gradle/wrapper/
  app/
    build.gradle
    src/main/
      AndroidManifest.xml
      java/az/studio/qeyd/
        MainActivity.kt
        SiyahiEkran.kt
        QeydEkran.kt
        GirisEkran.kt
      res/layout/
      res/values/
      res/mipmap-hdpi/
      assets/
  server/          (ayrı ünvanda)

Önce bir ekranı telefonda gör. Sonra ikincisini ekle. Sunucuyu en sonda, ikinci telefon aynı satırı görmeliyse bağla. Tersine başlarsan düğmesiz bir veritabanı ve boş bir APK kalır.

Güncelleme ve sık sorulan sorular

Telefon eski uygulamayı ancak üç şey üst üste gelince değiştirir. Paket adı aynı olmalıdır. İmza aynı anahtardan gelmelidir. versionCode büyük olmalıdır. Biri eksikse yeni dosya ya kurulmaz ya da eskisinin yanında ikinci uygulama gibi durur.

Kendi uygulamanı kur. Başkasının APK'sını açıp içine kendi ekranını koymak onu senin uygulaman yapmaz. İmza bozulur, dosya kurulmaz ve o program sana ait değildir.

APK ile AAB aynı mı?

Hayır. APK telefonun açtığı dosyadır. AAB mağazaya verilen pakettir. Mağaza onu telefona uygun APK'ya çevirebilir.

APK iPhone'da açılır mı?

Hayır. iPhone başka dosya ve başka kural kullanır. Android için derlenen APK orada kurulmaz.

Dosya neden büyüktür?

Ekrandaki bir cümle dosyayı büyütmez. Resimler, yazı tipleri ve ek kütüphaneler büyütür. Gerekmeyen resmi içeri koyma.

Web APK internetsiz çalışır mı?

Zipin içine koyduğun sayfa telefonda kalır ve açılabilir. Adresten yüklenen sayfa ise internet ister. Resim de dışarıdan geliyorsa ağ kesilince boş kalır.

Debug dosyası mağazaya konur mu?

Hayır. O, yoklama içindir. Mağaza için release imzası, yükselen sürüm ve çoğu zaman AAB gerekir.

APK telefona nasıl kurulur?

APK kurmak onu mağazaya koymak değildir. Dosya telefonda açılır, telefon izin ister, sonra uygulama listeye düşer. Mağaza bu adımı senin yerine gizler. Kendi derlediğin ya da siteden indirdiğin dosyada adımı kendin görürsün.

apk ile biten her dosya kurulmaz. Yarım indirme, başka adlı belge ve başka imzayla derlenmiş güncelleme telefonu durdurur. Açmadan önce dosyanın nereden geldiğini bil.

Kurmadan önce

Yalnız kendi derlediğin, kendi sitenden ya da yazarın kendi sayfasından gelen dosyayı aç. Mesajda dolaşan, adı ünlü uygulamaya benzeyen ve hiçbir sayfası olmayan APK başka program olabilir. Adın içinde apk yazması güvenlik demek değildir.

Nibras Studio'nun verdiği dosya yoklama içindir. Onu kendi telefonuna kurup düğmeyi denemek olur. Mağaza sürümü değildir. Kurulunca telefon bilinmeyen uygulama diyebilir. Bu, dosyanın Play'den gelmediğini bildirir.

Kurulum penceresi uygulamanın isteyebileceği izinleri gösterir. Listeyi oku. Not uygulaması kamera, rehber ve konum istiyorsa dosyayı kapat. Kendi düzelttiğin uygulamada bu liste manifestte yazdığındır.

Adımlar

Android 8 ve sonrasında izin genel düğme değildir. Dosyayı açan her uygulamaya ayrı izin verilir. Chrome'a vermek Dosyalar uygulamasına geçmez.

  1. Dosyayı tam indir. Boy sıfırsa ya da beklediğinden çok küçükse indirme bitmemiştir. O dosyayı sil ve yeniden al.
  2. İndirilenler klasöründen ya da dosya uygulamasından apk dosyasına bas. Tarayıcının altındaki bitmiş indirmeye basmak da olur.
  3. Telefon bu kaynaktan kurulum kapalı derse açılan ayara geç. O uygulamanın yanında bilinmeyen uygulamaları kur ya da buna benzer satırı aç. Geri dönüp dosyaya yeniden bas.
  4. Eski Android'de yol başkadır. Ayarlar, güvenlik, bilinmeyen kaynaklar. Kurulduktan sonra o satırı yeniden kapat.
  5. İzin listesini oku. Razıysan Kur bas. Bitince Aç görünür.
  6. Aynı uygulama zaten telefondaysa ve imza uyuyorsa düğme Güncelle olur. Paket adı aynı, imza aynı, versionCode ise büyük olmalıdır.
  7. Aç ve ana düğmeye bir kez bas. Ak ekran ya da hemen kapanma kurulumun değil, içinin çalışmadığını gösterir.
  8. İşi bitince izni kapatabilirsin. Ayarlarda o tarayıcının ya da dosya uygulamasının bilinmeyen kurulum satırını söndür. Kurulu uygulama silinmez.

Markaya göre fark

Düz Android'de yol kısadır. Dosyayı açınca telefon kendisi izin sayfasına götürür. Pixel ve bazı Nokia telefonları böyledir.

Samsung'da Ayarlar, Güvenlik ve gizlilik, bilinmeyen uygulamaları kur. Bazı modellerde Otomatik engel ya da uygulama koruması dosyayı keser. Uyarıyı oku. Kendi derlediğin dosyaysa yalnız bu kereliğe izin ver, korumayı sonsuza dek kapatma.

Xiaomi, Redmi ve Poco'da izin çoğu zaman Ayarlar, Gizlilik, özel izinler, bilinmeyen uygulamalar yolundadır. Ayrıca Güvenlik uygulaması dosyayı tarar ve kurulumu tutar. Tarama bitince yeniden Kur basmak gerekebilir. Bilgisayardan kabloyla atıyorsan geliştirici seçeneklerinde USB ile kurulum da açık olmalıdır.

Huawei ve Honor'da Ayarlar, Güvenlik, daha fazla ayar, bilinmeyen kaynaklardan kurulum. Bazı modellerde dış kaynağı kesen kip vardır. AppGallery'den gelmeyen dosya için o kipi yalnız bu kuruluma aç, sonra kapat.

Neye dikkat et

Bu yol mağaza yoklamasının yerine geçmez. Arkadaşına deneme dosyasını böyle verirsen o da aynı adımları görür. Herkese açık yayım için Play ya da AppGallery gerekir.

  • Play Protect uyarı gösterebilir. Kendi deneme dosyanı tanımaz. Metni oku. Tanımadığın yazarın dosyasını yine de kur ile geçme.
  • Çocuk hesabı ve iş profili kurulumu kesebilir. Böyle telefonda olağan kullanıcı izni yetmez.
  • Dosyayı açan uygulama ile izin verdiğin uygulama aynı olmalıdır. Telegram'dan açıyorsan izin Telegram içindir. Sonra Dosyalar'dan açıyorsan izni bir de Dosyalar için ver.
  • Kurulum bitince uygulama menüde görünür. Görünmezse aramaya paket adını ya da ekrandaki başlığı yaz. Bazen klasörün içine düşer.
  • Silmek ayarlardan ya da ikonu basılı tutmakla olur. Silinince uygulamanın içinde sakladığı satır da gidebilir.

Kurulmayan ve açılmayan APK

Telefon çoğu zaman kısa bir cümle gösterir. O cümlenin altında birkaç sebep olabilir. Önce dosyanın kendisine bak, sonra telefonda duran eski kopyaya, en sonda telefonun türüne. Yanlış yeri silip yeniden kurmak bazen eski veriyi de siler. Önce sebebi ayır.

Paket ayrıştırılamadı

«Paket ayrıştırılırken sorun oluştu» ya da «dosya geçerli paket değil» yarım ya da başka dosya demektir. Tarayıcı sayfayı apk adıyla kaydetmiştir. Boy birkaç kilobaytsa içinde program değil, metin vardır.

Dosyayı sil. Siteyi ya da Studio'yu yeniden aç ve indirmenin yüzdesinin bitmesini bekle. Ağ koptuysa kırık dosya kalır. Zip'i APK diye adlandırmak da bu hatayı verir. APK ayrıca derlenir, zip onun hamıdır.

İmza uyuşmuyor

«Paket mevcut paketle çakışıyor» ya da «imzalar uyuşmuyor» telefonda aynı adlı uygulama var, ama bu dosya başka anahtarla derlenmiş demektir. Telefon eskisinin üstüne başka anahtarın dosyasını koymaz.

İki çıkış yolu vardır. Eski uygulamayı silip yenisini kur. Bu, içindeki kayıtlı satırı götürür. Ya da yeni dosyayı eski anahtarla yeniden derle. Deneme için bir kez debug anahtarı, mağaza için başka anahtar kullandıysan telefon onları aynı uygulama saymaz. Nibras Studio'nun debug dosyası ile kendi release anahtarını karıştırmak bu hatayı verir.

Sürüm eski

«Sürüm düşürülemez» diyorsa ya da güncelle düğmesinin yerine hata geliyorsa yeni dosyanın versionCode'u telefondaki kopyadan küçüktür ya da aynıdır. Telefon geri gitmez.

build.gradle içinde versionCode'u büyüt, yeniden derle ve o yeni dosyayı kur. Sayıyı büyütmeden dosyanın adını değiştirmek yetmez. Eskiyi silmek de kurar, ama kişinin verisi gider. Kendi deneme telefonunda silmek olur. Başkasının telefonunda sayıyı büyüt.

Telefon uygun değil

«Bu sürüm cihazınızla uyumlu değil» diyorsa ya da kur düğmesi pasifse uygulamanın minSdk'si telefonun Android'inden yüksektir. Eski telefon yeni hedefi açmaz. Tersine, çok eski hedefli dosyayı yeni Android kendisi kesebilir.

İkinci sebep işlemci uyumsuzluğudur. Yalnız bir tür telefon için derlenmiş split dosya başka telefonda açılmaz. Tam APK ya da o telefonun türüne uyan dosya gerekir. AAB'yi doğrudan telefona atmak olmaz. Önce onu APK'ya çevirmek gerekir. Mağaza bu çevirmeyi kendi yapar, elle kurulum ise APK ister.

Depolama ve deneme dosyası

«Yeterli depolama yok» açık sebeptir. Resimleri ve gereksiz uygulamayı sil, sonra yeniden bas. Dosyanın kendisi büyükse kurulum için dosyanın boyundan fazla boş yer gerekir, çünkü telefon onu açıp kopyalar.

«Yalnızca deneme içindir» Android Studio'nun bazı yoklama derlemelerinde olur. O dosya mağaza ve olağan kurulum için değildir. Release derleme al. Nibras Studio'nun debug APK'sı bu cümleyle gelmez, onu olağan yolla kurmak olur. Android Studio'nun testOnly bayrağı ise dosya uygulamasından kurulumu durdurur.

Play Protect ve koruma kesti

Kur düğmesi görünür, sonra zararlı uygulama ya da koruma penceresi gelir. Tanımadığın dosyada bu uyarıyı geçme. Kendi derlediğin deneme dosyasında metin senin paket adını demiyorsa dosyayı karıştırmışsındır.

Kendi dosyan ise o pencerede yalnız bu kuruluma yol ver. Korumayı bütün telefon için kapatma. Xiaomi ve Samsung'da tarama bitmeden düğmeye basmak hatayı tekrarlar. Taramanın bitmesini bekle.

İş profili, aile denetimi ve bazı şirket telefonları dış dosyayı bütünüyle keser. Böyle cihazda ayar senin elinde olmayabilir. Kendi telefonunda dene.

Kuruldu, ama açılmıyor

İkon görünür, basınca ak ekran kalır ya da uygulama hemen kapanır. Bu artık kurulum hatası değildir. İçindeki sayfa, izin ya da kütüphane çalışmaz.

  • Web uygulama adresten açılıyorsa interneti yokla. Adres yanlışsa ekran boş kalır. Zipin içine konmuş sayfa adressiz de açılmalıdır.
  • Huawei'de ve Google hizmeti olmayan telefonda Google giriş, harita ya da Play bildirimi açılışı çökertebilir. O parçayı gizle ya da telefonda olmayan hizmeti çağırma.
  • İzin reddedildiyse düğme ölür. Ayarlardan uygulamanın iznine gir ve kamerayı ya da bildirimi aç.
  • Eski kırık veri kaldıysa uygulamanın belleğini temizle. Silip aynı anahtarla yeniden kurmak da olur. Başka anahtarla kurmak imza hatasına döner.
  • Yalnız sende açılıyor, başkasında açılmıyorsa emülatörün ya da kendi Android sürümünün farkına bakmıyorsun. Bir eski ve bir yeni telefonda dene.

Sırayı böyle yokla

Birkaç sebep üst üste gelince önce dosyayı, sonra eski kopyayı, en sonda telefonu değiştir.

  1. Dosyanın boyuna bak. Çok küçükse yeniden indir.
  2. Telefonda aynı uygulama varsa imzayı ve versionCode'u yokla. Uyuşmuyorsa sil ya da sayıyı büyütüp aynı anahtarla derle.
  3. Telefonun Android sürümü uygulamanın istediğinden düşükse başka telefon ya da daha düşük minSdk gerekir.
  4. Boş yere bak. Sonra koruma penceresini oku, korumayı sonsuza dek kapatma.
  5. Kurulup açılmıyorsa interneti, izni ve Google hizmetini ayır. Ak ekran çoğu zaman yanlış adrestir.

İkon, ad ve paket adı

Uygulamanın üç adı vardır ve aynı işi görmezler. İkonun altındaki kısa ad kişinin gördüğüdür. Mağaza sayfasındaki ad daha uzun olabilir. Paket adı ise kişinin okuduğu söz değildir. Telefon ve mağaza uygulamayı bununla tanır. Birini değiştirmek ötekini kendi değiştirmez.

İkon da ayrıdır. Telefon menüsündeki resim ile mağazanın 512 ölçülü resmi aynı çizim olabilir, ama ayrı dosyadır. Başkasının işaretini ya da ünlü uygulamanın adını almak hem ret hem de senin uygulaman sayılmaz.

İkonun altındaki ad

Bu ad ikonun altında görünür. Uzunsa telefon keser. İki ya da üç kısa söz yeter. «Benim en iyi not uygulamam» menüye sığmaz.

Native projede ad res/values/strings.xml içinde app_name satırında durur. AndroidManifest.xml onu android:label="@string/app_name" ile çağırır. Sözü doğrudan manifeste yazmak da olur, ama sonra her dilde ayrı satır tutmak zorlaşır. Başka dil için res/values-tr ve res/values-ru klasöründe aynı app_name tekrarlanır.

Nibras Studio derlemede ad sorar. O ad pencerenin başlığına düşer. Sitenin içindeki büyük başlık ise index.html'de kalır. İkisini aynı yapmak istiyorsan hem Studio'daki adı hem sayfadaki başlığı değiştir.

Mağaza adı ayrı formdadır. Orada biraz uzun yazabilirsin, ama içinde olmayan işi vadetme. Menüdeki ad «Not», mağazadaki ad «Not — günlük satır» olabilir. Paket adı hiçbirinde görünmeyebilir.

İkon

Telefon resmi tek ölçüde saklamaz. Aynı çizimin birkaç ölçüsü klasörlere dizilir. Biri eksikse telefon büyük resmi küçültür ve ikon bulanık görünür.

  • mipmap-mdpi içinde 48×48
  • mipmap-hdpi içinde 72×72
  • mipmap-xhdpi içinde 96×96
  • mipmap-xxhdpi içinde 144×144
  • mipmap-xxxhdpi içinde 192×192
  • Mağaza için ayrı 512×512 PNG. Bu, telefon klasörüne değil, mağaza formasına konur.

Yeni projede ikon çoğu zaman daire ya da yuvarlak kare içinde kesilir. Yazıyı ve önemli çizgiyi kenara koyma. Ortada bir işaret kalsın. Kenardaki harf kesilir.

Dosyanın adı genellikle ic_launcher.png olur. Yuvarlak ikon ayrı ic_launcher_round.png olabilir. Android Studio'nun Image Asset penceresi bu ölçüleri bir resimden kendi düzeltir. Elle yalnız bir klasöre büyük resim atmak yetmez.

Web APK'da Nibras Studio ikonu derleme adımında alır. Sitenin favicon'u her zaman telefon ikonu olmaz. Studio'ya verdiğin resim kare olsun ve kenarında başka markanın işareti olmasın.

Paket adı

Paket adı uygulamanın kalıcı numarasıdır. Kişi onu menüde görmeyebilir, ama telefon iki dosyanın aynı uygulama olup olmadığını bununla bilir. Genellikle ters alan adı yazılır: az.studio.not. Her parça küçük harftir. Boşluk, büyük harf ve tire olmaz. Rakam parçanın başında durmaz.

Yeri projenin türüne göre değişir. Native ve Flutter için app/build.gradle içinde applicationId satırıdır. Capacitor için capacitor.config içindeki appId o satırla aynı olmalıdır. Manifestin eski package satırı bazı projelerde kalır. applicationId farklıysa telefon applicationId'ye bakar.

com.example ve com.test ile mağazaya gitme. Bu, örnek addır. Kendi alan adın yoksa sabit bir ad seç ve her yerde aynı yaz: az.adın.not. İlk yüklemeden sonra Play ve AppGallery bu adı değiştirmeye bırakmaz.

Adı değiştirmek yeni uygulama açar. Eski telefonda eski paket kalır, yenisi yanında durur. Güncelleme geçmez. İçinde saklanan satır eski uygulamada kalır. Bu yüzden adı ta başta, ilk release'den önce kararlaştır.

Neyi karıştırma

Üçünü bir kâğıda yaz: menü adı, paket adı, anahtarın nerede durduğu. İlk AAB'den sonra paket kâğıttan değişmez.

  • Menü adını değiştirmek paketi değiştirmez. Yalnız söz değişir ve güncelleme aynı uygulamanın üstüne geçer.
  • Paketi değiştirmek menü adını kendi düzeltmez. İki ayrı iştir.
  • İkonu değiştirmek anahtarı değiştirmez. Aynı anahtarla yeni ikonlu dosya eskisinin yerine geçer.
  • Mağaza adı ile menü adı aynı olmayabilir. Yalan olmayan kısa fark normaldir.
  • Başka uygulamanın ikonunu ve paketini kopyalamak onu senin uygulaman yapmaz. Mağaza reddeder, telefon ise imza uyuşmayınca kurmaz.

Anahtar nasıl oluşturulur?

Anahtar uygulamanın imzasıdır. Dosyayı bu anahtarla kapatırsın. Telefon ve mağaza sonraki dosyada aynı anahtarı arar. Aynı paket, aynı anahtar ve daha büyük versionCode varsa eski uygulama güncellenir. Anahtar başkaysa telefon bunu başka yazar sayar ve üstüne koymaz.

Anahtar tek parola değildir. Keystore adlı dosyadır, içinde bir ya da birkaç anahtar durur. Her anahtarın takma adı, yani alias'ı vardır. Hem dosyanın parolası hem anahtarın parolası sorulur. İkisini de kaybedersen dosya elinde olsa da açamazsın.

Komutla oluşturmak

Bilgisayarda Java kuruluysa keytool komutu anahtarı oluşturur. Projenin yanında boş bir klasör aç ve anahtarı oraya koy. Projenin Git klasörüne koyma. Komut sorunca ad, kuruluş ve şehir yazılır. Bilmediğin satırı boş bırakmak olur. Parolayı terminalin ekranında saklama.

keytool -genkeypair -v \
  -keystore qeyd.keystore \
  -alias qeyd \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000

qeyd.keystore dosyanın kendisidir. qeyd takma addır. 2048 boyutlu RSA bugünkü derleme için yeter. 10000 gün uzun süredir. Kısa süre seçersen anahtar eskir ve güncelleme durur. Komut bitince dosyayı iki yerde sakla: birini kendi diskinde, birini ayrı bir bellekte.

Ne oluşturduğunu görmek için keytool -list -v -keystore qeyd.keystore yaz. Parolayı sorar ve sertifikanın parmak izini gösterir. Google giriş ya da harita bağlayınca o parmak izi gerekebilir. Onu da anahtarla birlikte sakla.

Derlemeye bağlamak

Anahtar dosyası tek durunca APK imzalanmaz. Release derleme onu çağırmalıdır. Android Studio'da Generate Signed Bundle ya da Generate Signed APK penceresi dosyayı, takma adı ve parolayı sorar. Yolu hatırlamak olur, parolayı ise herkesin gördüğü dosyaya yazmak olmaz.

Gradle ile bağlarken parolayı projenin içine düz metin koyma. Ayrı bir dosyada sakla ve o dosyayı Git'e ekleme. Örnek yalnız yerini gösterir. ACARIN yazan yeri kendi parolanla değiştir, dosyayı ise deponun dışında sakla.

// app/build.gradle  — şifrəni repoya yazma
signingConfigs {
    release {
        storeFile file("qeyd.keystore")
        storePassword "ACARIN"
        keyAlias "qeyd"
        keyPassword "ACARIN"
    }
}

Sonra release derleme bu yapılandırmayı çağırır. ./gradlew bundleRelease AAB verir. ./gradlew assembleRelease APK verir. Debug derleme bu anahtarı kullanmaz. O, bilgisayarın kendi debug anahtarıyla kapanır.

Debug anahtarı başkadır

Android Studio ilk yoklamada senin anahtarını istemez. Bilgisayarda gizli bir debug.keystore vardır. O anahtarla kurulan dosya yalnız senin makinedeki yoklamaya benzer. Başka bilgisayarın debug anahtarı farklıdır. Bu yüzden bir bilgisayarda kurduğun debug dosyanın üstüne öteki bilgisayarın debug dosyası geçmez ve imza hatası verir.

Nibras Studio'nun APK'sı da debug imzalıdır. Onu arkadaşının telefonunda denemek olur. Play ve AppGallery o dosyayı son sürüm olarak kabul etmez. Mağazaya giden ilk dosyadan itibaren kendi release anahtarın olmalıdır. Bir kez debug ile mağazaya çıkmak olmaz.

Nerede saklanır ve kaybolunca ne olur

Anahtarı proje klasöründe, postada ve ortak diskte saklama. Ayrı bellekte ve yalnız senin açtığın yerde dursun. Parolayı anahtarın yanındaki açık metin dosyasına yazma. Parolayı başka yerde sakla. İkisini bir yerde kaybetmek kolaydır, bir yerde çaldırmak da kolaydır.

Kendi imzaladığın APK'nın anahtarı kaybolduysa o uygulamanın üstüne yenisini koyamazsın. Eskiyi silip yeni paket adıyla başlamak olur. Mağazadaki eski sayfa ve kullanıcının verisi yeni uygulamaya geçmez.

Play App Signing'de iki anahtar olabilir. Yükleme anahtarı sendedir, mağazanın imza anahtarı Google'dadır. Yükleme anahtarını kaybedersen Play Console'dan sıfırlama istemek olur. Bu birkaç gün sürebilir. Mağazanın kendi imza anahtarını kaybetmek senin elinde değildir, onu Google saklar. Bu hizmete katılmadan, anahtarı yalnız sende olan eski uygulamada kayıp sondur.

Huawei'de APK'yı kendin imzalıyorsan aynı kural vardır. Anahtarı kaybedersen AppGallery'deki o uygulamanın güncellemesi durur. AAB seçip Huawei'nin imza hizmetine katıldıysan son imza onlardadır. Yine de yüklediğin dosyanın anahtarını sakla, çünkü sonraki yükleme onu isteyebilir.

Mobil uygulamadan nasıl para kazanılır?

Para uygulamanın içinde kendi oluşmaz. Önce kişinin işine yarayan bir ekran olmalıdır. Sonra o işin bir kısmını ücretli yaparsın ya da reklam gösterirsin. Boş uygulamaya ödeme düğmesi koymak para getirmez. Kişi sebebi görmezse basmaz.

Kazanç genellikle az başlar. Önce on kişi uygulamayı açıp işini bitirmelidir. Sonra ödeme ya da reklam eklenir. İlk gün reklam ağı, mağaza hesabı ve banka bağlanabilir, ama gelen para kullanıcıya bağlıdır.

Ücretli yollar

Birkaç düz yol vardır. Hepsini aynı anda doldurmak ekranı bozar. Birini seç, çalıştığını gör, sonra ikincisini ekle.

  • Ücretli kurulum. Kişi uygulamayı mağazadan alınca bir kez öder. Küçük ve bitmiş araç için uygundur.
  • Uygulamanın içinde bir kerelik alış. Ek sayfa, reklamsız kip ya da bir paket. Sayısal mal mağazada satılıyorsa mağazanın kendi ödemesinden geçmelidir.
  • Abonelik. Her ay ya da her yıl yenilenir. Kişi ne zaman biteceğini ve nasıl durduracağını görmelidir.
  • Reklam. Şerit ekranın kenarında durur. Tam ekran reklam işin arasını kesmemelidir. Ödüllü reklamda kişi kendi bakar ve karşılığında bir şey alır.
  • Kendi hizmetin. Uygulama sitenin penceresidir. Ders, yer ayırtma ya da telefondan uzakta görülen iş sitede ödenebilir. Uygulamanın içinde tüketilen sayısal mal için mağaza çoğu zaman kendi ödemesini ister.

Neyi bağlamalısın

Paranın sana ulaşması için uygulamanın dışında hesaplar da gerekir. Onlar APK klasöründe durmaz. Sen sitede kayıt olursun, uygulama ise o hesabın numarasını saklar.

  • Mağaza hesabı. Google Play'e çıkmak için Play Console gerekir. Açılışında bir kerelik ücret olur.
  • Satıcı profili ve banka. Mağaza parayı nereye göndereceğini bilmelidir. Vergi bilgisi de sorulur.
  • Sayısal alış için Play Billing. Uygulamanın içine kütüphane bağlanır. Fiyat mağazada ürün olarak açılır, kodun içine gizli fiyat yazılmaz.
  • Reklam için reklam ağının hesabı. Uygulamaya reklam biriminin numarası verilir. Avrupa kullanıcısı varsa onay penceresi de gerekir.
  • Gizlilik sayfası. Ne topladığını, reklamı ve ödemeyi bir adreste yaz. Mağaza o adresi ister.
  • Deneme kullanıcısı. İlk alışı kendi kartınla yapma. Mağazanın lisans denemesi sahte ödemeyle düğmeyi sınamaya izin verir.

Nibras Studio'nun debug APK'sı yoklama içindir. Onunla mağaza ödemesi açılmaz. Sitenin kendisinde ödeme varsa pencere o sayfayı açabilir. Mağazaya koyunca ise release imza, yükselen sürüm ve mağazanın kuralı gerekir.

Neye dikkat etmelisin

Mağaza satışın bir kısmını kendinde tutar, kalanı sana geçer. Kesin pay mağazanın kendi sayfasında yazar ve değişebilir. Gelen tutarın vergisini kendi ülkenin kuralıyla hesaplamak gerekir.

  • Fiyatı gizleme. Düğmenin yanında tutar ve süre görünsün. Abonelikte ne zaman yenilendiği yazılsın.
  • Durdurmak zor olmasın. Kişi aboneliği mağazanın abonelik sayfasından kapatabilmelidir.
  • Reklam sistem düğmesi gibi görünmesin. Kapatma işareti küçük ve sahte olmasın. Ekranın ana düğmesinin üstünü örtme.
  • Çocuklar için ayrı kural vardır. Çocuk uygulamasında reklam ve alış daha sıkı yoklanır. Yaşını bilmiyorsan çocuk için yapılmış gibi doldurma.
  • Sana ait olmayan malı satma. Başkasının dersini, müziğini ya da resmini kendi adına ücretli etme.
  • Gizli anahtarı ve ödeme sırrını APK'nın içine yazma. Onu açan kişi okuyabilir. Yoklama sunucuda kalsın.
  • İlk parayı vadetme. Reklamın geliri gösterime bağlıdır. Kimse açmıyorsa ağ da ödemez.
  • Kuralı bozan uygulamanın hesabı kapanabilir. Yanıltıcı düğme, gizli abonelik ve çalışmayan ödeme buna girer.

Hazır uygulamayı Play Market'e nasıl yüklersin?

Play Market Google Play'dir. Telefonun kendine APK atmak başka iştir. Mağazaya çıkmak için Play Console hesabı, imzalı AAB ve doldurulmuş sayfa gerekir. Nibras Studio'nun debug APK'sı oraya gitmez. Ağustos 2021'den beri yeni uygulama için mağaza APK değil, AAB ister. AAB bir paket dosyasıdır. Mağaza onu telefonun türüne göre küçük APK'ya çevirir.

İş bir günde bitmez. Kimlik yoklaması, metin, resimler ve bazı hesaplarda 14 günlük kapalı test vardır. Önce dosyayı düz derle, sonra sayfayı doldur, en sonda incelemeye gönder.

Adımlar

Sıra önemlidir. Boş uygulama açıp resim yüklemek olur, ama production düğmesi formlar bitmeden açılmaz.

  1. Google hesabıyla Play Console aç. Kişisel hesapta kimlik belgesi, kuruluş hesabında şirket belgesi ve çoğu zaman D-U-N-S numarası sorulur. Açılışta bir kerelik ücret vardır. Tutarı kayıt sayfası gösterir.
  2. Create app bas. Ad, ilk dil, uygulama ya da oyun, ücretsiz ya da ücretli seç. Paket adı ilk AAB ile kilitlenir ve sonra değişmez. Uygulamanın içindeki applicationId ile aynı olmalıdır.
  3. Release AAB derle. Android Studio'da Generate Signed Bundle, ya da projenin kökünde ./gradlew bundleRelease. Dosya genellikle app/build/outputs/bundle/release içinde durur. Anahtarı sakla. Kaybedersen aynı uygulamanın üstüne yenisini koyamazsın.
  4. Play App Signing'e katılınca iki anahtar olabilir. Yükleme anahtarı sende kalır, mağazanın imza anahtarı Google'dadır. Güncelleme ikisinin de kuralına uymalıdır. Debug anahtarıyla derlenen dosya mağazaya gitmez.
  5. 31 Ağustos 2026'dan sonra telefon için yeni uygulama ve güncelleme API 36, yani Android 16, hedeflemelidir. Eski hedef dosyayı kabul etmez. targetSdk build.gradle içinde yazılır.
  6. Mağaza sayfasını doldur. Kısa metin, uzun metin, 512 piksellik ikon, 1024x500 görsel, telefon ekran görüntüleri, kategori ve iletişim e-postası. Gizlilik adresi açılmalıdır.
  7. İçerik formlarını bitir. Reklam var mı, hangi veri toplanıyor, yaş anketi, uygulama kime. Çocuk içinse formlar sıkılaşır. Haber uygulamasıysa ayrı beyan vardır.
  8. Ülkeyi ve fiyatı seç. Ücretsiz koyup içeride ödeme almak olur. Ücretsizi sonradan ücretli kuruluma çevirmek zor olabilir.
  9. Önce internal teste koy. Bu senin e-posta listendir ve 100 kişiye kadardır. Dosyanın açıldığını burada gör. Bu iz 12 kişi kuralına sayılmaz.
  10. Sonra closed test. E-posta listesi ya da Google Group. 13 Kasım 2023'te ya da sonra açılmış kişisel hesap her yeni uygulama için aynı anda en az 12 kişinin 14 gün aralıksız kayıtta kalmasını ister. Biri çıkarsa onun sayımı yeniden başlar. Yeni derleme günü sıfırlamaz. Kuruluş hesabı ve o tarihten önceki kişisel hesap bu duvara çarpmaz.
  11. 14 gün bitince Dashboard'dan production izni iste. Sorulara uygulamanın gerçek işini yaz. İzin çoğu zaman bir haftaya kadar sürer. Open test bu izinden sonra açılır.
  12. İzinden sonra production izinde AAB'yi gönder. İnceleme birkaç gün sürebilir. Ret yanıtı sebebi yazar. Düzeltip daha büyük versionCode ile yeniden gönder.

Güncelleme

Yeni dosya eski uygulamanın yerine ancak üç şey aynıyken geçer. Paket adı değişmemelidir. İmza önceki release ile uyumlu olmalıdır. versionCode büyük olmalıdır. Başka adla yeni uygulama açmak eski kullanıcıyı taşımaz. O, mağazada ikinci program gibi durur.

Ekran görüntüsü uygulamanın kendisinden olmalıdır. Metinde olmayan işi vadetme. İlk ret olabilir. Raporu oku, resmi ya da metni düzelt, yeniden gönder. Yanıltıcı sayfa ve çalışmayan ödeme hesabı kapatabilir.

Hazır uygulamayı Huawei AppGallery'ye nasıl yüklersin?

Huawei'nin mağazası AppGallery'dir. Play Market'ten ayrı hesaptır. Google hesabı orada çalışmaz. Telefonuna attığın APK da kendi kendine mağazaya düşmez. AppGallery Connect'te uygulama açılır, imzalı dosya yüklenir, sayfa doldurulur ve incelemeye gönderilir.

Play'e çıkmak Huawei'ye çıkmak demek değildir. Aynı paket adı olabilir, ama iki hesap, iki sayfa ve iki inceleme vardır. Biri bitince öteki kendi açılmaz.

Adımlar

Hesap doğrulanmadan dosya yüklenmez. Önce kimliği bitir, sonra paketi derle.

  1. developer.huawei.com adresinde Huawei ID aç. Kişi ya da şirket olarak doğrulan. Kişisel hesapta kimlik belgesi, şirkette kayıt belgesi sorulur. Yoklama çoğu zaman bir ya da iki iş günü sürer.
  2. AppGallery Connect'te My apps, sonra yeni uygulama. Platform Android, cihaz telefon. Ad, ilk dil, paket adı ve kategori yaz. Paket adı ilk yüklemeden sonra değişmez ve uygulamanın içindeki applicationId ile aynı olmalıdır.
  3. Dosyayı seç. APK ve AAB ikisi de kabul edilebilir. APK'yı kendi anahtarınla imzalarsın. Bu yolda son imza sende kalır. AAB seçersen Huawei'nin App Signing hizmetine katılmalısın ve son imzayı onlar saklar.
  4. APK yolu şöyledir. Projenin android klasöründe ./gradlew assembleRelease. Dosya app/build/outputs/apk/release içinde durur. Anahtarı kaybetme. Sonraki güncelleme aynı anahtarla imzalanmalıdır.
  5. versionCode ve versionName mağazaya yazdığın sürümle üst üste gelmelidir. Her yeni dosyada versionCode büyür. Aynı sayı eskisinin yerine geçmez.
  6. Her dil için ad, kısa anlatım, uzun anlatım, ikon ve ekran görüntülerini doldur. Resimler uygulamanın kendi ekranı olsun. Boş ya da başka programdan kesilmiş resim ret sebebidir.
  7. Ülkeleri, ücretsiz ya da ücretli olduğunu ve gizlilik adresini yaz. Yaş derecesini anketle seç. Uygulamanın içinde sayısal mal satıyorsan Huawei'nin kendi uygulama içi ödemesi istenebilir.
  8. Göndermeden önce Huawei telefonunda ya da AppGallery'nin bulut testinde aç. Google'lı emülatör Huawei'de duran hatayı gizler.
  9. Sayfayı incelemeye gönder. Birkaç gün sürebilir. Ret yanıtı neyin eksik olduğunu yazar. Düzeltip aynı paket adı ve daha büyük versionCode ile yeniden gönder. İstersen incelemeden geçince hemen ya da seçtiğin saatte açılsın.

Google hizmeti Huawei'de yoktur

2019'un sonundan beri birçok Huawei telefonunda Google Play hizmeti yoktur. Google ile giriş, Google harita, Play Billing ve Firebase bildirimi o telefonlarda açılmaz. Bu parçaları gizle ya da Huawei'nin kendi hizmetiyle değiştir. İncelemeden geçen uygulama telefonda açılıp boş düğme gösterebilir. Bunun için bulut testi ya da gerçek bir Huawei telefonu gerekir.

Uygulama yalnız sitenin penceresiyse ve Google kütüphanesi çağırmıyorsa, aynı sayfa AppGallery'de de açılabilir. Yine de release imzalı APK ya da AAB gerekir. Nibras Studio'nun debug dosyası mağaza dosyası değildir.

İki mağaza iki izleyicidir. Play'deki kişi Huawei'de seni kendi görmez. Sayfanın metni, ikonu ve gizlilik adresi her mağazada ayrı doldurulur. Paket adını ikisinde de aynı tutmak güncellemeyi karıştırmaz, çünkü mağazalar birbirinin imzasını taşımaz. Her mağazada ilk dosyanın anahtarını kendi yerinde sakla.

Uygulama hangi hallerde onaylanmayabilir?

Mağaza dosyayı açıldığı için değil, kurala uymadığı için reddedebilir. Ret her zaman hesabı kapatmaz. Yanıtta sebep yazar. Onu düzeltip aynı paket adı ve daha büyük versionCode ile yeniden göndermek olur. Aynı hatayı ikinci kez göndermek incelemeyi uzatır. Yanıltmak ise hesabı riske koyar.

Play ve Huawei aynı sözü kullanmaz, ama reddin kökü benzerdir. Sayfa yalan söyler, uygulama açılmaz, izin açıklanmaz ya da dosya mağazanın istediği derleme değildir. Aşağıdaki haller en sık görülenlerdir.

Sayfa uygulamayla uyuşmaz

İnceleyen önce mağaza sayfasına bakar, sonra uygulamayı açar. İkisi aynı işi demiyorsa ret gelir. Ekran görüntüsü başka programdan kesildiyse, ikon başka markanın işaretiyse ya da metinde olmayan düğme vadeliyorsa sayfa yalan sayılır.

  • Kısa ve uzun metin boştur, başka uygulamadan kopyalanmıştır ya da yalnız anahtar söz yığınıdır.
  • Ekran görüntüleri uygulamanın kendi ekranı değildir. Ölçü yanlıştır ya da resim bulanıktır.
  • Adında resmi, en iyi ya da başka şirketin adı vardır, sen o şirket değilsin.
  • Gizlilik adresi açılmaz, sayfa boştur ya da uygulamanın topladığı veriyi söylemez.
  • Dil karışıktır. Sayfa bir dildedir, uygulamanın içi başka dildedir ve inceleyen işi anlamaz.
  • Kategori yanlıştır. Oyun araç gibi, çocuk uygulaması ise büyükler için gibi yazılır.

Uygulama açılmaz ya da boştur

İnceleyen birkaç dakika içinde ana işi görmelidir. İlk ekranda çöken, ak kalan ya da düğmesi hiçbir şey yapmayan dosya onaylanmaz. Senin telefonunda açılması yetmez. Onların test cihazında da açılmalıdır.

  • Açılışta hata verir ya da hemen kapanır.
  • Giriş ister, ama inceleyen için deneme adı ve parolası notta yazılmamıştır. Kendi hesabın olmadan içeri bakamaz.
  • Sunucu kapalıdır. Liste boştur, resim gelmez ve sayfa durur.
  • Düğmeye basılınca hiçbir cevap yoktur. Form gönderilmez.
  • İzin isteği gerekçesizdir. Kamera istersin, ama kamerayı kullanan ekran yoktur.

Yalnızca site penceresidir

Google Play yalnızca bir siteyi pencereye koyan uygulamayı sık sık reddeder. İçinde bildirim, telefonda saklanan iş, kamera ya da sayfadan fazla bir düğme yoksa inceleyen bunu ayrı uygulama saymayabilir. Sitenin adresini tarayıcıda açmak aynı işi görüyorsa mağaza dosyayı fazla sayar.

Huawei de boş pencereyi ve açılmayan adresi reddedebilir. Sitenin kendisi doluysa ve telefonda çalışıyorsa şans daha yüksektir, ama söz değildir. Nibras Studio'nun debug APK'sı bu incelemeye gönderilmez. Mağazaya release derleme gerekir.

Pencereyi uygulama yapmak istiyorsan en az bir telefon işi ekle. Son açılan sayfayı sakla, bildirim gönder ya da kameradan bir resim al. Bunu etmeden göndermek ret riskini büyütür.

Veri, reklam ve para

Form ile uygulamanın içi üst üste gelmelidir. Data safety anketinde «hiçbir şey toplamıyorum» deyip hesap ve reklam numarası saklamak ret sebebidir. Gizlilik sayfası o listeyi açık yazmalıdır.

  • Sayısal mal mağazanın kendi ödemesinden geçmez. Play için Play Billing, Huawei için onun uygulama içi ödemesi beklenir.
  • Abonelik gizlidir. Fiyat ve ne zaman yenilendiği düğmenin yanında yoktur.
  • Reklam kapanmaz, sistem uyarısı gibi görünür ya da ana düğmenin üstünü örter.
  • Çocuklar için dersin, ama büyükler için reklam ve alış vardır. Yaş grubu yanlış seçilmiştir.
  • İzleme onayı sorulmaz, oysa reklam ağı bunu ister.

Başkasının adı ve dosyanın kendisi

Sana ait olmayan ad, ikon, müzik, resim ya da metin onayı durdurur. Başka uygulamanın ekranını kendi adına koymak hem ret hem hesap riskidir. Kendi ekranını çek.

  • Debug imza. Mağaza yoklama anahtarını son sürüm olarak kabul etmez.
  • Eski targetSdk. 31 Ağustos 2026'dan telefon uygulaması API 36 hedeflemelidir. Düşük hedef dosyayı geri çevirir.
  • Güncellemede versionCode büyümez ya da paket adı önceki dosyayla uyuşmaz.
  • Anahtar önceki release ile aynı değildir. Mağaza bunu yeni uygulama ya da bozuk güncelleme sayar.
  • Huawei'de Google kütüphanesi açılışı çökertir. Harita, Google girişi ya da Play bildirimi olmayan telefonda boş ya da kapalı ekran kalır.

Ret gelince ne yapmalı

Raporu sonuna kadar oku. Çoğu zaman bir satır değil, birkaç maddedir. Hepsini düzelt, birini bırakıp yeniden gönderme. Ekran görüntüsünü uygulamanın kendisinden yeniden çek. Gizlilik sayfasının telefonda ve bilgisayarda açıldığını yokla. Deneme hesabını not alanına yaz.

Düzeltmeden sonra kendi telefonunda ve bir başka telefonda aç. Huawei içinse Google'suz cihazda ya da bulut testinde aç. Sonra daha büyük versionCode ile gönder. Üç kez aynı sebeple dönerse metnini kısalt ve vadettiğin ama uygulamanın yapmadığı işi çıkar. Olmayan düğmeyi sayfada tutmak sonraki reddi getirir.

Kara ekranda örnekler

Web not
Web not
Sayaç
Sayaç
Sayfa içinde
Sayfa içinde
Üç kart
Üç kart
Gelişmiş
Gelişmiş

Yazıyı değiştir

Hazır uygulama dosyaları

Bu zipin kökünde index.html durur. Yanında css ve js klasörleri vardır. Olduğu gibi Studio'ya verilebilir.

Not zipini indir

Kendi zipini seç

Zip seçilir seçilmez Nibras Studio kendi açılır.