APK hazırla
APK nədir?
APK Android telefonun quraşdırdığı fayldır. İçində ekran, şəkil, yazı və tətbiqin işləməsi üçün lazım olan kod durur. Mağaza bu faylı çox vaxt sənin yerinə açır. Faylı özün saxlayıb açanda telefon əlavə icazə istəyə bilər.
APK proqramlaşdırma dili deyil. O, hazırlanmış tətbiqin paketidir. Eyni tətbiqin içi Kotlin, Java, Flutter və ya sadəcə bir veb səhifə ola bilər. Çöldən hamısı .apk adı ilə bitir.
Tanımadığın səhifədən gələn APK tətbiqin əsl nüsxəsi olmaya bilər. Öz saytından və ya öz zipindən yığdığın fayl başqadır. Adın içində apk yazılması faylın təhlükəsiz olduğunu göstərmir.
APK necə düzəldilir?
Əvvəl tətbiqin nə edəcəyi yazılır. Sonra ekran qurulur. Sonra həmin ekran fayllara çevrilir. Axırda bir proqram bu faylları bir APK-ya yığır. Telefon həmin bir faylı quraşdırır.
Ən qısa yol veb səhifədir. index.html olan bir zip götürülür və Nibras Studio onu APK-ya çevirir. Android Studio, hesab və kod dərsliyi bu yol üçün lazım deyil. Səhifə telefonda tətbiq pəncərəsində açılır.
Daha böyük yol telefonda özü işləyən proqram yazmaqdır. Onda qovluqlar, manifest və imza addımı gəlir. APK yenə sonda bir fayldır, amma ora çatmaq üçün daha çox alət lazımdır.
Nələr lazımdır?
Hər növ eyni aləti istəmir. Saytı tətbiqə çevirirsənsə, brauzer, bir mətn redaktoru və zip kifayətdir. Telefonun özü yoxlamadır. Yığımı Nibras Studio görür.
Kotlin və ya Java ilə native tətbiq üçün Android Studio, JDK və Android SDK lazımdır. Gradle paketi yığır. Capacitor üçün Node və npm də gəlir, çünki səhifə əvvəl veb qovluğunda durur, sonra android qovluğuna keçir. Flutter üçün ayrıca Flutter SDK lazımdır.
- Veb APK: redaktor, brauzer, zip, Nibras Studio
- Native: Android Studio, JDK, Android SDK, Gradle
- Capacitor: Node, npm, Android SDK, android qovluğu
- Flutter: Flutter SDK, android qovluğu
Düzəltmə mərhələləri
Mərhələni atlamaq sonda boş tətbiq verir. Əvvəl bir ekranı bitir, sonra ikincini əlavə et. Hər mərhələnin öz faylı var.
- İşi bir cümlə ilə yaz: tətbiq nəyi saxlayır və ya nəyi göstərir.
- Ekranı kağızda və ya bu səhifədəki qara nümunədə gör. Başlıq, sətir və düymə bəs edir.
- Faylları növün qovluğuna qoy. Veb üçün index.html kökdə durmalıdır.
- Öz kompüterində aç. Veb səhifəni brauzerdə, native tətbiqi isə emulator və ya telefonda yoxla.
- APK-nı yığ. Veb zipdirsə, Studio-ya ver. Native-dirsə, Gradle assemble çağırır.
- Telefonda quraşdır və düyməni bas. İşləməyən yazını düzəlt, yenidən yığ.
APK növləri
Veb APK
Bu, saytın telefon pəncərəsinə qoyulmasıdır. İçəri HTML, CSS və JavaScript-dir. Serverdə işləyən Python burada özü açılmır. Zipin kökündə index.html olmalıdır. css və js qovluqları onun yanındadır. Şəkil img qovluğuna düşür. Nibras Studio bu zipi və ya saytın ünvanını alır, ad, ikon və paket adı seçilir, APK yığılır.
qeyd/ index.html css/app.css js/app.js img/icon.png
Hazır nümunə bu quruluşdadır. Aşağıdan zipi endir, yazını dəyişmək istəsən index.html-ə bax, sonra Studio-ya ver.
Native APK
Kotlin və ya Java ilə yazılır. Ekran res/layout içindəki xml faylındadır. Düymənin işi java və ya kotlin faylındadır. İkon mipmap qovluqlarındadır. AndroidManifest.xml tətbiqin adını, paketini və açılış ekranını deyir. Android Studio bu qovluqları özü açır. Yığım Gradle ilə gedir. Bu növ kamera, sensor və telefonda dərin iş üçün seçilir. Kiçik bir qeyd səhifəsi üçün 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 xəttini yadda saxla. Manifest, ekran və ikon həmin xəttin altındadır.
Capacitor APK
Səhifə www qovluğunda qalır. capacitor.config.json saytın tətbiqə necə girəcəyini deyir. android qovluğu native qabıqdır. Əvvəl səhifəni www-də bitir, sonra capacitor android qovluğunu yeniləyir, APK isə həmin android layihəsindən yığılır. Node və Android SDK ikisi də lazımdır. Bu, veb APK-dan bir addım artıqdır: telefona öz plagini ilə toxunmaq olar.
www/ index.html capacitor.config.json android/app/src/main/ AndroidManifest.xml
www saytdır. android qabıqdır. Birini dəyişib o birini unutmaq köhnə ekranı telefona qoyur.
Flutter APK
Ekran lib/main.dart içində Dart dili ilə yazılır. pubspec.yaml paketlərin siyahısıdır. android qovluğu yenə qabıqdır, amma səhifəni HTML saxlamır. Flutter özü ekranı çəkir. SDK qurulmadan layihə açılmır. Qovluq az görünür, amma alət ayrıca öyrənilir.
lib/main.dart pubspec.yaml android/app/src/main/ AndroidManifest.xml
lib ekranın özüdür. android yalnız telefonun qabığıdır. APK flutter build apk ilə çıxır.
APK-nın içində nə dayanır?
APK əslində başqa adlı bir arxivdir. Adı .apk ilə bitir, amma içi qovluq və fayllardan ibarətdir. Telefon həmin bir faylı açır, imzanı yoxlayır, sonra içindəki proqramı işə salır. İçini dəyişib yenidən bağlamaq tətbiqi sənin etmir. İmza pozulur və telefon faylı rədd edir.
Çöldən iki APK eyni görünə bilər. Biri içində bir səhifə saxlayır, o biri isə çox ekran, şəkil və kitabxana. Ölçü yazının uzunluğundan yox, şəkillərdən və əlavə olunmuş alətlərdən böyüyür.
- AndroidManifest.xml tətbiqin adını, paketini, açılış ekranını və istəyə biləcəyi icazələri deyir.
- classes.dex telefonun işlətdiyi proqramdır. Kotlin və Java yığılanda buna çevrilir. Veb APK-da öz məntiqi az olur, səhifə ayrıca durur.
- res qovluğu şəkil, yazı və ekran düzümünü saxlayır.
- resources.arsc hansı adın hansı şəkilə və yazıya bağlandığını deyən cədvəldir.
- META-INF imzadır. İçəridə bir fayl dəyişsə və imza yenilənməsə, quraşdırma dayanır.
- Veb APK-da saytın özü assets və ya buna bənzər qovluqda durur. Pəncərə həmin faylları açır.
İcazələr nə üçündür?
APK telefonda durur deyə kamera, rehber və ya yer öz-özünə açılmır. Manifest yalnız tətbiqin nə istəyə biləcəyini yazır. Adam razılığı çox vaxt həmin ekran ilk dəfə açılınca verir. Razılıq yoxdursa, həmin iş getmir, tətbiqin qalanı isə qala bilər.
Yalnız ekranın işlətdiyini istə. Qeyd tətbiqinə mikrofon lazım deyil. Xəritə yer istəyir. Serverlə danışan ekran internet istəyir. Artıq icazə adamı qorxudur və mağaza baxışında da sual doğurur.
Veb APK saytı açırsa, internet lazımdır. Kamera öz-özünə gəlmir. Həm qabıq, həm səhifə kameranı istəməli, adam da razı olmalıdır. İcazəni ilk açılışa yox, kameranın durduğu ekrana saxla.
Debug, release və AAB
Debug APK yoxlama üçündür. Nibras Studio-nun yığdığı APK debug imzalıdır. Onu öz telefonuna quraşdırıb düyməni sınamaq olar. Mağaza bu faylı adətən son buraxılış kimi qəbul etmir. Dostuna test üçün vermək olar, telefon isə tanınmayan mənbə barədə xəbərdarlıq göstərə bilər.
Release APK sənin öz açarınla imzalanır. Həmin açar növbəti yeniləmənin səndən gəldiyini göstərir. Açarı itirsən, eyni tətbiqin üstünə yenisini qoya bilməzsən. Yeni paket adı başqa tətbiq sayılır və köhnəsinin yanında ayrıca durur.
versionCode tam ədəddir. Hər yeni faylda bu ədəd böyüməlidir. versionName adamın gördüyü addır, məsələn 1.2. Ədəd artmasa, telefon yenini köhnənin yerinə qoymur.
AAB mağazanın çox vaxt istədiyi bağlamadır. APK telefonun quraşdırdığı fayldır. Mağaza AAB-ni telefonun növünə görə kiçik APK-lara bölə bilər. Özün birbaşa quraşdırırsansa, əlində APK olmalıdır.
İnkişaf etmiş APK nədir?
Sadə APK bir ekrandır. Bir sətri telefonda saxlayır. Adamın kim olduğunu bilmir. Bağlayıb açanda sətir yerindədir və bu bəs edir. Qeyd, sayğac və bir düyməlik səhifə bu növdür. Onu bir gündə yığmaq olar.
İnkişaf etmiş APK çox ekrandır. Hesab var. Məlumat başqa telefonda da görünməlidir. Siyahı internetdən gəlir. Şəkil göndərilir. Tətbiq bağlı olanda bildiriş gələ bilər. İki adam eyni dəyişikliyi görür. Bu artıq bir faylın içinə sıxılmış səhifə deyil. Telefon, server və saxlanan məlumat birlikdə işləyir.
İnkişaf etmiş tətbiq birinci gün böyük başlamır. Əvvəl sadə ekran bitir. Sonra ikinci ekran gəlir. Sonra saxlama serverə keçir. Sonra giriş. Hamısını ilk gündə yazmaq boş qabıq verir: düymələr var, iş yoxdur.
Veb yolunda çətin hissə çox vaxt saytın özüdür. Giriş, siyahı və server saytda olur. APK yalnız pəncərədir. Nibras Studio həmin saytı tətbiqə çevirə bilər. Kameranın, faylın və arxa planda işin səhifədən dərin olması lazımdırsa, native və ya Flutter seçilir. Pəncərə bəs edirsə, ikinci proqram yazmaq vaxt itkisidir.
İnkişaf etmiş APK necə düzəldilir?
Böyük tətbiq bir cümlə ilə başlamır. «Hər şeyi edən proqram» yazısı heç bir ekranı bitirmir. Əvvəl işi kiçik cümlələrə böl. Məsələn: adam girir, öz qeydlərini görür, birini əlavə edir, həmin qeyd ikinci telefonda da görünür. Bu dörd cümlə dörd işdir. Hər birinin ekranı və faylı var.
- Ekranları ayır. Siyahı, bir qeydin içi, yazma forması və giriş. Hər ekranın bir işi olsun.
- Məlumatın yerini seç. Yalnız bu telefona lazım olan sətir telefonda qala bilər. Başqa telefon görməlidirsə, server lazımdır.
- Telefon serverə qısa sorğu göndərir. Server məlumat qaytarır. Baza APK-nın içində durmur.
- Şifrəni və gizli açarı koda yazma. APK-nı açan adam onu oxuya bilər. Server yoxlayır, telefon yalnız icazə nişanı saxlayır.
- Giriş ayrı ekrandır. Server nişan verir. Nişan şifrənin özü deyil.
- İcazəni işin durduğu ekrana qoy. Kamera kamera ekranında istənilir, birinci açılışda yox.
- İnternet kəsiləndə nəyin açıq qalacağına qərar ver. Son siyahının surəti görünə bilər. Yeni yazı gözləyib sonra gedə bilər. Bunu düşünməsən, ekran sadəcə dayanır.
- Dar telefonda yoxla. Sənin ekranına sığan düymə başqa telefonda kənara çıxa bilər.
- versionCode-u artır. Köhnə release ilə eyni açarla imzala. Paket adı eyni qalmalıdır.
- Mağaza səhifəsi APK-dan ayrıdır. Ad, şəkillər, qısa mətn və məxfilik ünvanı faylın özündə bitmir.
Gradle qovluqları
Sadə tətbiqdə bir ekran activity_main içində durur. İnkişaf etmiş layihədə hər ekranın öz faylı olur və Gradle onları bir APK-ya yığır. Kökdə settings.gradle hansı modulun olduğunu deyir, adətən app. build.gradle yığımın qaydasıdır. gradle/wrapper və gradlew Gradle-ın özünü layihə ilə birlikdə saxlayır ki, başqa kompüterdə eyni versiya işləsin. gradle.properties kiçik ayarlardır.
Əsas kod app qovluğundadır. app/build.gradle kitabxanaları və SDK versiyasını yazır. src/main/java altında paket qovluqları durur: siyahı, bir qeydin içi və giriş ayrı fayllardır. res/layout ekranın düzümüdür, res/mipmap ikondur, assets içinə qoyulan səhifə və ya şriftdir. app/build və .gradle qovluqları yığım zamanı özü yaranır. Onları əlinlə yazmırsan və Git-ə qoymursan.
Server qovluğu telefon layihəsinin içində olmaya bilər. O, başqa ünvanda işləyir. APK yalnız ona sorğu göndərir. Aşağıdakı qara ekran bu qovluqların verdiyi tətbiqdir: siyahı, şəkil yeri və alt menyu.
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)Əvvəl bir ekranı telefonda gör. Sonra ikincini əlavə et. Serveri lap sonda, ikinci telefon eyni sətri görməlidirsə, bağla. Tərsinə başlasan, düyməsiz bir baza və boş bir APK qalır.
Yeniləmə və tez-tez verilən suallar
Telefon köhnə tətbiqi ancaq üç şey üst-üstə düşəndə əvəz edir. Paket adı eyni olmalıdır. İmza eyni açardan gəlməlidir. versionCode böyük olmalıdır. Biri çatışmırsa, yeni fayl ya qurulmur, ya da köhnəsinin yanında ikinci tətbiq kimi durur.
Öz tətbiqini qur. Başqasının APK-sını açıb içinə öz ekranını qoymaq sənin tətbiqin olmur. İmza pozulur, fayl qurulmur və o proqram sənə aid deyil.
APK ilə AAB eynidirmi?
Xeyr. APK telefonun açdığı fayldır. AAB mağazaya verilən bağlamadır. Mağaza onu telefona uyğun APK-ya çevirə bilər.
APK iPhone-da açılır?
Xeyr. iPhone başqa fayl və başqa qayda istifadə edir. Android üçün yığılan APK orada qurulmur.
Fayl niyə böyükdür?
Ekrandakı bir cümlə faylı böyütmür. Şəkillər, şriftlər və əlavə kitabxanalar böyüdür. Lazım olmayan şəkli içəri qoyma.
Veb APK internetsiz işləyir?
Zipin içinə qoyduğun səhifə telefonda qalır və aça bilər. Ünvandan yüklənən səhifə isə internet istəyir. Şəkil də çöldən gəlirsə, şəbəkə kəsiləndə boş qalır.
Debug faylı mağazaya qoyulur?
Xeyr. O, yoxlama üçündür. Mağaza üçün release imzası, böyüyən versiya və çox vaxt AAB lazımdır.
APK telefona necə qurulur?
APK-nı qurmaq onu mağazaya qoymaq deyil. Fayl telefonda açılır, telefon icazə istəyir, sonra tətbiq siyahıya düşür. Mağaza bu addımı sənin yerinə gizlədir. Öz yığdığın və ya saytdan endirdiyin faylda addımı özün görürsən.
Hər .apk ilə bitən fayl qurulmur. Yarımçıq endirmə, başqa adlı sənəd və başqa imza ilə yığılmış yeniləmə telefonu dayandırır. Əvvəl faylın haradan gəldiyini bil, sonra aç.
Qurmazdan əvvəl
Yalnız öz yığdığın, öz saytından və ya müəllifin öz səhifəsindən gələn faylı aç. Mesajda gəzən, adı məşhur tətbiqə bənzəyən və heç bir səhifəsi olmayan APK başqa proqram ola bilər. Adın içində apk yazılması təhlükəsizlik demək deyil.
Nibras Studio-nun verdiyi fayl yoxlama üçündür. Onu öz telefonuna qurub düyməni sınamaq olar. Mağaza buraxılışı deyil. Qurulanda telefon «naməlum tətbiq» deyə bilər. Bu, faylın Play-dən gəlmədiyini bildirir.
Quraşdırma pəncərəsi tətbiqin istəyə biləcəyi icazələri göstərir. Siyahını oxu. Qeyd tətbiqi kamera, rehber və yer istəyirsə, faylı bağla. Öz düzəltdiyin tətbiqdə isə bu siyahı sənin manifestdə yazdığındır.
Addımlar
Android 8 və sonrakı telefonlarda icazə ümumi düymə deyil. Faylı açan hər tətbiqə ayrı icazə verilir. Chrome-a vermək Fayllar tətbiqinə keçmir.
- Faylı tam endir. Ölçü sıfırdırsa və ya gözlədiyindən çox kiçikdirsə, endirmə bitməyib. Həmin faylı sil və yenidən götür.
- Endirmələr qovluğundan və ya fayl tətbiqindən .apk faylına bas. Brauzerin altındakı bitmiş endirməyə basmaq da olar.
- Telefon «bu mənbədən quraşdırma bağlıdır» desə, açılan ayara keç. Həmin tətbiqin yanında «naməlum tətbiqləri quraşdır» və ya buna bənzər sətri aç. Geri qayıdıb faylı yenidən bas.
- Köhnə Android-də yol başqadır. Ayarlar, təhlükəsizlik, naməlum mənbələr. Qurulandan sonra həmin sətri yenidən bağla.
- İcazə siyahısını oxu. Razısansa Quraşdır bas. Bitəndə Aç görünür.
- Eyni tətbiq artıq telefonda varsa və imza uyğundursa, düymə Yenilə olur. Paket adı eyni, imza eyni, versionCode isə böyük olmalıdır.
- Aç və əsas düyməni bir dəfə bas. Ağ ekran və ya dərhal bağlanma quraşdırmanın yox, içinın işləmədiyini göstərir.
- İcazəni işin bitməsindən sonra bağlaya bilərsən. Ayarlarda həmin brauzerin və ya fayl tətbiqinin naməlum quraşdırma sətrini söndür. Artıq qurulmuş tətbiq silinmir.
Markaya görə fərq
Təmiz Android-də yol qısadır. Faylı açanda telefon özü icazə səhifəsinə aparır. Pixel və bəzi Nokia telefonları belədir.
Samsung-da Ayarlar, Təhlükəsizlik və məxfilik, naməlum tətbiqləri quraşdır. Bəzi modellərdə Avtomatik əngəl və ya tətbiq mühafizəsi faylı kəsir. Xəbərdarlığı oxu. Öz yığdığın fayldırsa, yalnız bu dəfəyə icazə ver, mühafizəni həmişəlik söndürmə.
Xiaomi, Redmi və Poco-da icazə çox vaxt Ayarlar, Məxfilik, xüsusi icazələr, naməlum tətbiqlər yolundadır. Əlavə olaraq Təhlükəsizlik tətbiqi faylı skan edir və quraşdırmanı saxlayır. Skan bitəndə yenidən Quraşdır basmaq lazım gəlir. Kompüterdən kabel ilə atırsansa, tərtibatçı seçimlərində USB ilə quraşdırma da açıq olmalıdır.
Huawei və Honor-da Ayarlar, Təhlükəsizlik, daha çox ayar, naməlum mənbələrdən quraşdırma. Bəzi modellərdə xarici mənbəni kəsən rejim var. AppGallery-dən gəlməyən fayl üçün həmin rejimi yalnız bu quraşdırmaya aç, sonra bağla.
Nəyə diqqət et
Bu yol mağaza yoxlamasını əvəz etmir. Dostuna test faylını belə verirsan, o da eyni addımları görür. Hamıya açıq yayım üçün Play və ya AppGallery lazımdır.
- Play Protect xəbərdarlıq göstərə bilər. Öz test faylını tanımır. Mətni oxu. Tanımadığın müəllifin faylını «hər halda quraşdır» ilə keçmə.
- Uşaq hesabı və iş profili quraşdırmanı kəsə bilər. Belə telefonda adi istifadəçi icazəsi bəs etmir.
- Faylı quran tətbiq ilə icazə verdiyin tətbiq eyni olmalıdır. Telegram-dan açırsansa, icazə Telegram üçündür. Sonra Fayllar-dan açırsansa, icazəni bir də Fayllar üçün ver.
- Quraşdırma bitəndə tətbiq menyuda görünür. Görünmürsə, axtarışa paket adını və ya ekrandakı başlığı yaz. Bəzən qovluğun içinə düşür.
- Silmək ayarlardan və ya ikonu basıb saxlamaqla olur. Silinəndə tətbiqin içində saxladığı sətir də gedə bilər.
Qurulmayan və açılmayan APK
Telefon çox vaxt qısa bir cümlə göstərir. Həmin cümlənin altında bir neçə səbəb ola bilər. Əvvəl faylın özünə bax, sonra telefonda duran köhnə nüsxəyə, axırda telefonun növünə. Səhv yeri silib yenidən qurmaq bəzən köhnə məlumatı da silir. Buna görə səbəbi ayır.
Paket təhlil olunmadı
«Paket təhlil edilərkən xəta oldu» və ya «fayl etibarlı paket deyil» yarımçıq və ya başqa fayl deməkdir. Brauzer səhifəni .apk adı ilə saxlayıb. Ölçü bir neçə kilobaytdırsa, içində proqram yox, mətn var.
Faylı sil. Saytı və ya Studio-nu yenidən aç və endirmənin faizinin bitməsini gözlə. Şəbəkə kəsilibsə, qırıq fayl qalır. Zip-i APK adlandırıb göndərmək də bu xətanı verir. APK ayrıca yığılır, zip onun xammalıdır.
İmza uyğun gəlmir
«Paket mövcud paketlə ziddiyyət təşkil edir» və ya «imzalar uyğun gəlmir» o deməkdir ki, telefonda eyni adda tətbiq var, amma bu fayl başqa açarla yığılır. Telefon köhnənin üstünə başqa açarın faylını qoymur.
İki çıxış yolu var. Köhnə tətbiqi silib yenisini qur. Bu, içindəki saxlanmış sətiri aparır. Və ya yeni faylı köhnə açarla yenidən yığ. Test üçün bir dəfə debug açarı, mağaza üçün başqa açar işlədibsənsə, telefon onları eyni tətbiq saymır. Nibras Studio-nun debug faylı ilə öz release açarını qarışdırmaq bu xətanı verir.
Versiya köhnədir
«Versiya aşağı düşə bilməz» və ya yeniləmə düyməsinin əvəzinə xəta gəlirsə, yeni faylın versionCode-u telefonda duran nüsxədən kiçikdir və ya eynidir. Telefon geriyə getmir.
build.gradle içində versionCode-u böyüt, yenidən yığ və həmin yeni faylı qur. Ədədi böyütmədən faylın adını dəyişmək kifayət etmir. Köhnəni silmək də qurur, amma istifadəçinin məlumatı gedir. Öz test telefonunda silmək olar. Başqasının telefonunda ədədi böyüt.
Telefon uyğun deyil
«Bu versiya cihazınızla uyğun deyil» və ya quraşdırma düyməsi passivdirsə, tətbiqin minSdk-si telefonun Androidindən yüksəkdir. Köhnə telefon yeni hədəfi açmır. Əksinə, çox köhnə hədəfli faylı yeni Android özü kəsə bilər.
İkinci səbəb prosessor uyğunsuzluğudur. Yalnız bir növ telefon üçün yığılmış split fayl başqa telefonda açılmır. Tam APK və ya həmin telefonun növünə uyğun fayl lazımdır. AAB-ni birbaşa telefona atmaq olmur. Əvvəl onu APK-ya çevirmək lazımdır. Mağaza bu çevirməni özü edir, əl ilə quraşdırma isə APK istəyir.
Yaddaş və test faylı
«Yaddaş kifayət deyil» açıq səbəbdir. Şəkilləri və lazımsız tətbiqi sil, sonra yenidən bas. Faylın özü böyükdürsə, quraşdırma üçün faylın ölçüsündən artıq boş yer lazımdır, çünki telefon onu açıb köçürür.
«Yalnız test üçündür» Android Studio-nun bəzi yoxlama yığımlarında olur. Həmin fayl mağaza və adi quraşdırma üçün deyil. Release yığım götür. Nibras Studio-nun debug APK-sı bu cümlə ilə gəlmir, onu adi yolla qurmaq olar. Android Studio-nun testOnly bayrağı isə fayl tətbiqindən quraşdırmanı dayandırır.
Play Protect və mühafizə kəsdi
Quraşdırma düyməsi görünür, sonra «zərərli tətbiq» və ya mühafizə pəncərəsi gəlir. Tanımadığın faylda bu xəbərdarlığı keçmə. Öz yığdığın test faylında mətn sənin paket adını demirsə, faylı qarışdırmısan.
Öz faylındırsa, həmin pəncərədə yalnız bu quraşdırmaya yol ver. Mühafizəni bütün telefon üçün söndürmə. Xiaomi və Samsung skanı bitmədən düyməni basmaq xətanı təkrarlayır. Skanın bitməsini gözlə.
İş profili, ailə nəzarəti və bəzi şirkət telefonları xarici faylı bütünlüklə kəsir. Belə cihazda ayar sənin əlində olmaya bilər. Şəxsi telefonunda yoxla.
Quruldu, amma açılmır
İkon görünür, basanda ağ ekran qalır və ya tətbiq dərhal bağlanır. Bu, artıq quraşdırma xətası deyil. İçindəki səhifə, icazə və ya kitabxana işləmir.
- Veb tətbiq ünvandan açılırsa, interneti yoxla. Ünvan səhvdirsə, ekran boş qalır. Zipin içinə qoyulmuş səhifə ünvansız da açılmalıdır.
- Huawei və Google xidməti olmayan telefonda Google giriş, xəritə və ya Play bildirişi açılışı çökdürə bilər. Həmin hissəni gizlət və ya telefonda olmayan xidməti çağırma.
- İcazə rədd edilibsə, düymə ölür. Ayarlardan tətbiqin icazəsinə gir və kameranı və ya bildirişi aç.
- Köhnə qırıq məlumat qalıbsa, tətbiqin yaddaşını təmizlə. Silib eyni açarla yenidən qurmaq da olar. Başqa açarla qurmaq imza xətasına qayıdır.
- Yalnız səndə açılır, başqasında yoxdursa, sən emulatorun və ya öz Android versiyanın fərqinə baxmırsan. Bir köhnə və bir yeni telefonda yoxla.
Sıranı belə yoxla
Bir neçə səbəb üst-üstə düşəndə əvvəl faylı, sonra köhnə nüsxəni, axırda telefonu dəyiş.
- Faylın ölçüsünə bax. Çox kiçikdirsə, yenidən endir.
- Telefonda eyni tətbiq varsa, imza və versionCode-u yoxla. Uyğunsuzdursa, sil və ya ədədi böyüdüb eyni açarla yığ.
- Telefonun Android versiyası tətbiqin istədiyindən aşağıdırsa, başqa telefon və ya aşağı minSdk lazımdır.
- Boş yerə bax. Sonra mühafizə pəncərəsini oxu, mühafizəni həmişəlik söndürmə.
- Qurulub açılmırsa, interneti, icazəni və Google xidmətini ayır. Ağ ekran çox vaxt səhv ünvandır.
İkon, ad və paket adı
Tətbiqin üç adı var və onlar eyni işi görmür. Ekranın altındakı qısa ad adamın gördüyüdür. Mağaza səhifəsindəki ad daha uzun ola bilər. Paket adı isə adamın oxuduğu söz deyil. Telefon və mağaza tətbiqi bununla tanıyır. Birini dəyişmək o birini özü dəyişmir.
İkon da ayrıdır. Telefonun menyusundakı şəkil ilə mağazanın 512 ölçülü şəkli eyni rəsm ola bilər, amma ayrı fayldır. Başqasının nişanını və ya məşhur tətbiqin adını götürmək həm rədd, həm də sənin tətbiqin sayılmır.
Ekranın altındakı ad
Bu ad ikonun altında görünür. Uzun olsa, telefon kəsir. İki və ya üç qısa söz bəs edir. «Mənim ən yaxşı qeyd tətbiqim» menyuda sığmır.
Native layihədə ad res/values/strings.xml içində app_name sətrində durur. AndroidManifest.xml onu android:label="@string/app_name" ilə çağırır. Sözü birbaşa manifestə yazmaq da olar, amma sonra hər dildə ayrı sətir saxlamaq çətinləşir. Başqa dil üçün res/values-tr və res/values-ru qovluğunda eyni app_name təkrarlanır.
Nibras Studio yığımda ad soruşur. Həmin ad pəncərənin başlığına düşür. Saytın içindəki böyük başlıq isə index.html-də qalır. İkisini eyni etmək istəyirsənsə, həm Studio-dakı adı, həm də səhifədəki başlığı dəyiş.
Mağaza adı ayrıca formadadır. Orada bir az uzun yaza bilərsən, amma içində olmayan işi vəd etmə. Menyudakı ad «Qeyd», mağazadakı ad «Qeyd — gündəlik sətir» ola bilər. Paket adı heç birində görünməyə bilər.
İkon
Telefon şəkli bir ölçüdə saxlamır. Eyni rəsmin bir neçə ölçüsü qovluqlara düzülür. Biri çatışmasa, telefon böyük şəkli kiçildir və ikon bulanıq görünür.
- mipmap-mdpi içində 48×48
- mipmap-hdpi içində 72×72
- mipmap-xhdpi içində 96×96
- mipmap-xxhdpi içində 144×144
- mipmap-xxxhdpi içində 192×192
- Mağaza üçün ayrıca 512×512 PNG. Bu, telefon qovluğuna yox, mağaza formasına qoyulur.
Yeni layihədə ikon çox vaxt dairə və ya yumru kvadrat içində kəsilir. Yazını və vacib xətti kənara qoyma. Ortada bir işarə qalsın. Kənardakı hərf kəsilir.
Faylın adı adətən ic_launcher.png olur. Dairəvi ikon ayrıca ic_launcher_round.png ola bilər. Android Studio-nun Image Asset pəncərəsi bu ölçüləri bir şəkildən özü düzəldir. Əl ilə yalnız bir qovluğa böyük şəkil atmaq kifayət etmir.
Veb APK-da Nibras Studio ikonu yığım addımında alır. Saytın favicon-u həmişə telefon ikonu olmur. Studio-ya verdiyin şəkil kvadrat olsun və kənarında başqa markanın işarəsi olmasın.
Paket adı
Paket adı tətbiqin daimi nömrəsidir. Adam onu menyuda görməyə bilər, amma telefon iki faylın eyni tətbiq olub-olmadığını bununla bilir. Adətən tərs domen yazılır: az.studio.qeyd. Hər parça kiçik hərfdir. Boşluq, böyük hərf və defis olmaz. Rəqəm parçanın əvvəlində durmur.
Yeri layihənin növünə görə dəyişir. Native və Flutter üçün app/build.gradle içində applicationId sətridir. Capacitor üçün capacitor.config içindəki appId həmin sətirlə eyni olmalıdır. Manifestin köhnə package sətri bəzi layihələrdə qalır. applicationId fərqlidirsə, telefon applicationId-ə baxır.
com.example və com.test ilə mağazaya getmə. Bu, nümunə adıdır. Öz domenin yoxdursa, sabit bir ad seç və onu hər yerdə eyni yaz: az.adın.qeyd. İlk yükləmədən sonra Play və AppGallery bu adı dəyişdirməyə qoymur.
Adı dəyişmək yeni tətbiq açır. Köhnə telefonda köhnə paket qalır, yenisi yanında durur. Yeniləmə keçmir. İçindəki saxlanmış sətir köhnə tətbiqdə qalır. Buna görə adı lap əvvəl, ilk release-dən qabaq qərarlaşdır.
Nəyi qarışdırma
Üçünü bir kağıza yaz: menyu adı, paket adı, açarın harada durduğu. İlk AAB-dən sonra paket kağızdan dəyişmir.
- Menyu adını dəyişmək paketi dəyişmir. Yalnız söz dəyişir və yeniləmə eyni tətbiqin üstünə keçir.
- Paketi dəyişmək menyu adını özü düzəltmir. İki ayrı işdir.
- İkonu dəyişmək açarı dəyişmir. Eyni açarla yeni ikonlu fayl köhnənin yerinə keçir.
- Mağaza adı ilə menyu adı eyni olmaya bilər. Yalan olmayan qısa fərq normaldır.
- Başqa tətbiqin ikonunu və paketini köçürmək sənin tətbiqin etmir. Mağaza rədd edir, telefon isə imza uyğun gəlməyəndə qurmur.
Açar necə yaradılır?
Açar tətbiqin imzasıdır. Faylı bu açarla bağlayırsan. Telefon və mağaza növbəti faylda eyni açarı axtarır. Eyni paket, eyni açar və daha böyük versionCode varsa, köhnə tətbiq yenilənir. Açar başqadırsa, telefon bunu başqa müəllif sayır və üstünə qoymaz.
Açar bir parol deyil. Keystore adlı fayldır, içində bir və ya bir neçə açar durur. Hər açarın ləqəbi, yəni alias-ı var. Həm faylın parolu, həm də açarın parolu soruşulur. İkisini də itirsən, fayl əlində olsa da aça bilməzsən.
Əmrlə yaratmaq
Kompüterdə Java qurulubsa, keytool əmri açarı yaradır. Layihənin yanında boş bir qovluq aç və açarı ora qoy. Layihənin Git qovluğuna qoyma. Əmr soruşanda ad, təşkilat və şəhər yazılır. Bilmədiyin sətri boş buraxmaq olar. Parolu terminalın ekranında saxlama.
keytool -genkeypair -v \ -keystore qeyd.keystore \ -alias qeyd \ -keyalg RSA \ -keysize 2048 \ -validity 10000
qeyd.keystore faylın özüdür. qeyd ləqəbdir. 2048 ölçülü RSA bugünkü yığım üçün kifayətdir. 10000 gün uzun müddətdir. Qısa müddət seçsən, açar köhnəlir və yeniləmə dayanır. Əmr bitəndə faylı iki yerdə saxla: birini öz diskində, birini ayrı bir yaddaşda.
Nə yaratdığını görmək üçün keytool -list -v -keystore qeyd.keystore yaz. Parolu soruşur və sertifikatın barmaq izini göstərir. Google giriş və ya xəritə qoşanda həmin barmaq izi lazım ola bilər. Onu da açarla birlikdə saxla.
Yığıma bağlamaq
Açar faylı tək duranda APK imzalanmır. Release yığım onu çağırmalıdır. Android Studio-da Generate Signed Bundle və ya Generate Signed APK pəncərəsi faylı, ləqəbi və parolu soruşur. Yolu yadda saxlamaq olar, parolu isə hər kəsin gördüyü fayla yazmaq olmaz.
Gradle ilə bağlayanda parolu layihənin içinə düz mətn qoyma. Ayrıca bir faylda saxla və həmin faylı Git-ə əlavə etmə. Nümunə yalnız yerini göstərir. ACARIN yazan yeri öz parolunla dəyiş, faylı isə anbardan kənarda saxla.
// app/build.gradle — şifrəni repoya yazma
signingConfigs {
release {
storeFile file("qeyd.keystore")
storePassword "ACARIN"
keyAlias "qeyd"
keyPassword "ACARIN"
}
}Sonra release yığım bu konfiqurasiyanı çağırır. ./gradlew bundleRelease AAB verir. ./gradlew assembleRelease APK verir. Debug yığım bu açarı işlətmir. O, kompüterin öz debug açarı ilə bağlanır.
Debug açarı başqadır
Android Studio ilk yoxlamada sənin açarını istəmir. Kompüterdə gizli bir debug.keystora var. Həmin açarla qurulan fayl yalnız sənin maşınındakı yoxlamaya bənzəyir. Başqa kompüterin debug açarı fərqlidir. Buna görə bir kompüterdə qurduğun debug faylın üstünə o biri kompüterin debug faylı keçmir və imza xətası verir.
Nibras Studio-nun APK-sı da debug imzalıdır. Onu dostun telefonunda sınamaq olar. Play və AppGallery həmin faylı son buraxılış kimi qəbul etmir. Mağazaya gedən ilk fayldan etibarən öz release açarın olmalıdır. Bir dəfə debug ilə mağazaya çıxmaq olmur.
Harada saxlanır və itəndə nə olur
Açarı layihə qovluğunda, poçtda və ümumi diskdə saxlama. Ayrıca yaddaşda və yalnız sənin açdığın yerdə dursun. Parolu açarın yanındakı açıq mətn faylına yazma. Parolu başqa yerdə saxla. İkisini bir yerdə itirmək asandır, bir yerdə oğurlamaq da asandır.
Öz imzaladığın APK-nın açarı itibsə, həmin tətbiqin üstünə yenisini qoya bilməzsən. Köhnəni silib yeni paket adı ilə başlamaq olar. Mağazadakı köhnə səhifə və istifadəçinin məlumatı yeni tətbiqə keçmir.
Play App Signing-də iki açar ola bilər. Yükləmə açarı səndədir, mağazanın imza açarı Google-dadır. Yükləmə açarını itirsən, Play Console-dan sıfırlama istəmək olar. Bu, bir neçə gün çəkə bilər. Mağazanın öz imza açarını itirmək sənin əlinə deyil, onu Google saxlayır. Bu xidmətə qoşulmadan, açarı yalnız səndə olan köhnə tətbiqdə itki son olur.
Huawei-də APK-nı özün imzalayırsansa, eyni qayda var. Açarı itirsən, AppGallery-dəki həmin tətbiqin yeniləməsi dayanır. AAB seçib Huawei-nin imza xidmətinə qoşulmusansa, son imza onlardadır. Yenə də yüklədiyin faylın açarını saxla, çünki növbəti yükləmə onu istəyə bilər.
Mobil tətbiqdən pul necə qazanılır?
Pul tətbiqin içində özü yaranmır. Əvvəl adamın işinə yarayan bir ekran olmalıdır. Sonra o işin bir hissəsini ödənişli edirsən və ya reklam göstərirsən. Boş tətbiqə ödəniş düyməsi qoymaq pul gətirmir. Adam səbəbi görmürsə, basmır.
Qazanc adətən az başlayır. Əvvəl on nəfər tətbiqi açıb işini bitirməlidir. Sonra ödəniş və ya reklam əlavə olunur. İlk gündə reklam şəbəkəsi, mağaza hesabı və bank qoşmaq olar, amma gələn pul istifadəçidən asılıdır.
Pullu yollar
Bir neçə düz yol var. Hamısını eyni vaxtda doldurmaq ekranı korlayır. Birini seç, işlədiyini gör, sonra ikincini əlavə et.
- Ödənişli quraşdırma. Adam tətbiqi mağazadan alanda bir dəfə ödəyir. Kiçik və bitmiş alət üçün uyğundur.
- Tətbiqin içində bir dəfəlik alış. Əlavə səhifə, reklamsız rejim və ya bir paket. Rəqəmsal mal mağazada satılırsa, mağazanın öz ödənişindən keçməlidir.
- Abunə. Hər ay və ya hər il yenilənir. Adam nə vaxt bitəcəyini və necə dayandıracağını görməlidir.
- Reklam. Baner ekranın kənarında durur. Tam ekran reklam işin arasını kəsməməlidir. Mükafatlı reklamda adam özü baxır və qarşılığında bir şey alır.
- Öz xidmətin. Tətbiq saytının pəncərəsidir. Dərs, yer bronu və ya səndən kənarda görülən iş saytda ödənilə bilər. Tətbiqin içində sərf olunan rəqəmsal mal üçün mağaza çox vaxt öz ödənişini istəyir.
Nəyi qoşmalısan
Pulun sənə çatması üçün tətbiqdən kənar hesablar da lazımdır. Onlar APK-nın qovluğunda durmur. Sən saytda qeydiyyatdan keçirsən, tətbiq isə həmin hesabın nömrəsini saxlayır.
- Mağaza hesabı. Google Play-ə çıxarmaq üçün Play Console lazımdır. Açılışında bir dəfəlik ödəniş olur.
- Satıcı profili və bank. Mağaza pulu hara köçürəcəyini bilməlidir. Vergi məlumatı da soruşulur.
- Rəqəmsal alış üçün Play Billing. Tətbiqin içinə kitabxana qoşulur. Qiymət mağazada məhsul kimi açılır, kodun içinə gizli qiymət yazılmır.
- Reklam üçün reklam şəbəkəsinin hesabı. Tətbiqə reklam vahidinin nömrəsi verilir. Avropa istifadəçisi varsa, razılıq pəncərəsi də lazımdır.
- Məxfilik səhifəsi. Nə yığdığını, reklam və ödənişi bir ünvanda yaz. Mağaza həmin ünvanı istəyir.
- Yoxlama istifadəçisi. Öz kartınla ilk alış etmə. Mağazanın lisenziya yoxlayıcısı saxta ödənişlə düyməni sınamağa imkan verir.
Nibras Studio-nun debug APK-sı yoxlama üçündür. Onunla mağaza ödənişi açılmır. Saytın özündə ödəniş varsa, pəncərə həmin səhifəni aça bilər. Mağazaya qoyanda isə release imza, böyüyən versiya və mağazanın qaydası lazımdır.
Nəyə diqqət etməlisən
Mağaza satışın bir hissəsini özündə saxlayır, qalanı sənə keçir. Dəqiq pay mağazanın öz səhifəsində yazılır və dəyişə bilər. Gələn məbləğdən vergini öz ölkənin qaydası ilə hesablamaq lazımdır.
- Qiyməti gizlətmə. Düymənin yanında məbləğ və müddət görünsün. Abunədə nə vaxt yeniləndiyi yazılsın.
- Dayandırma çətin olmasın. Adam abunəni mağazanın abunə səhifəsindən bağlaya bilməlidir.
- Reklam sistem düyməsi kimi görünməsin. Bağlamaq işarəsi kiçik və yalançı olmasın. Ekranın əsas düyməsinin üstünü örtmə.
- Uşaqlara xüsusi qayda var. Uşaq tətbiqində reklam və alış daha sərt yoxlanılır. Yaşını bilmirsənsə, uşaq üçün hazırlamış kimi doldurma.
- Sənə aid olmayan malı satma. Başqasının kursunu, musiqisini və ya şəklini öz adına ödənişli etmə.
- Gizli açarı və ödəniş sirrini APK-nın içinə yazma. Onu açan adam oxuya bilər. Yoxlama serverdə qalsın.
- İlk pulu vəd etmə. Reklamın gəliri göstərişdən asılıdır. Heç kim açmırsa, şəbəkə də ödəmir.
- Qaydanı pozan tətbiqin hesabı bağlana bilər. Yanıltıcı düymə, gizli abunə və işləməyən ödəniş buna aiddir.
Hazır tətbiqi Play Marketə necə yükləmək olar?
Play Market Google Play-dir. Telefonun özünə APK atmaq başqa şeydir. Mağazaya çıxarmaq üçün Play Console hesabı, imzalı AAB və doldurulmuş səhifə lazımdır. Nibras Studio-nun debug APK-sı bu yerə getmir. 2021-ci ilin avqustundan yeni tətbiq üçün mağaza APK yox, AAB istəyir. AAB bağlama faylıdır. Mağaza onu telefonun növünə görə kiçik APK-ya çevirir.
İş bir gündə bitmir. Şəxsiyyət yoxlaması, mətn, şəkillər və bəzi hesablarda 14 günlük qapalı test var. Əvvəl faylı düz yığ, sonra səhifəni doldur, axırda nəzərdən keçirməyə göndər.
Addımlar
Sıra vacibdir. Boş tətbiq açıp şəkil yükləmək olar, amma production düyməsi formalar bitmədən açılmır.
- Google hesabı ilə Play Console aç. Şəxsi hesabda kimlik sənədi, təşkilat hesabında şirkət sənədi və çox vaxt D-U-N-S nömrəsi soruşulur. Açılışda bir dəfəlik haqq var. Məbləği qeydiyyat səhifəsi göstərir.
- Create app bas. Ad, ilkin dil, tətbiq və ya oyun, pulsuz və ya pullu seç. Paket adı ilk AAB ilə bağlanır və sonra dəyişmir. Tətbiqin içindəki applicationId ilə eyni olmalıdır.
- Release AAB yığ. Android Studio-da Generate Signed Bundle, ya da layihənin kökündə ./gradlew bundleRelease. Fayl adətən app/build/outputs/bundle/release içində durur. Açarı saxla. İtirsən, eyni tətbiqin üstünə yenisini qoya bilməzsən.
- Play App Signing-ə qoşulanda iki açar ola bilər. Yükləmə açarı səndə qalır, mağazanın imza açarı Google-dadır. Yeniləmə hər ikisinin qaydasına uymalıdır. Debug açarı ilə yığılan fayl mağazaya getmir.
- 31 avqust 2026-dan telefon üçün yeni tətbiq və yeniləmə API 36, yəni Android 16, hədəfləməlidir. Köhnə hədəf faylı qəbul etmir. build.gradle içində targetSdk yazılır.
- Mağaza səhifəsini doldur. Qısa mətn, uzun mətn, 512 piksellik ikon, 1024x500 ölçü şəkil, telefonun ekran şəkilləri, kateqoriya və əlaqə e-poçtu. Məxfilik ünvanı açılmalıdır.
- Məzmun formalarını bitir. Reklam varmı, hansı məlumat yığılır, yaş anketi, tətbiq kimə üçündür. Uşaq üçündürsə, formalar sərtləşir. Xəbər tətbiqidirsə, ayrıca bəyan var.
- Ölkəni və qiyməti seç. Pulsuz qoyub içəridə ödəniş etmək olar. Pulsuzu sonradan pullu quraşdırmaya çevirmək çətin ola bilər.
- Əvvəl internal testə qoy. Bu, sənin e-poçt siyahındır və 100 nəfərə qədərdir. Faylın açıldığını burada gör. Bu iz 12 nəfər qaydasına sayılmır.
- Sonra closed test. E-poçt siyahısı və ya Google Group. 13 noyabr 2023-də və ya ondan sonra açılmış şəxsi hesab hər yeni tətbiq üçün eyni vaxtda ən azı 12 nəfərin 14 gün ardıcıl qeydiyyatda qalmasını istəyir. Biri çıxsa, onun sayğısı yenidən başlayır. Yeni yığım günü sıfırlamır. Təşkilat hesabı və o tarixdən əvvəlki şəxsi hesab bu divara düşmür.
- 14 gün bitəndə Dashboard-dan production icazəsi istə. Suallara tətbiqin həqiqi işini yaz. İcazə çox vaxt bir həftəyə qədər çəkir. Open test bu icazədən sonra açılır.
- İcazədən sonra production izində AAB-ni göndər. Nəzərdən keçirmə bir neçə gün çəkə bilər. Rədd cavabı səbəbi yazır. Düzəldib daha böyük versionCode ilə yenidən göndər.
Yeniləmə
Köhnə tətbiqin yerinə yeni fayl ancaq üç şey eyni olanda keçir. Paket adı dəyişməməlidir. İmza əvvəlki release ilə uyğun olmalıdır. versionCode böyük olmalıdır. Başqa adla yeni tətbiq açmaq köhnə istifadəçini daşımır. O, mağazada ikinci proqram kimi durur.
Ekran şəkli tətbiqin özündən olmalıdır. Mətndə olmayan işi vəd etmə. İlk rədd ola bilər. Hesabatı oxu, şəkli və ya mətni düzəlt, yenidən göndər. Hesabı yanıltıcı səhifə və işləməyən ödəniş bağlaya bilər.
Hazır tətbiqi Huawei AppGallery-yə necə yükləmək olar?
Huawei-nin mağazası AppGallery-dir. Play Marketdən ayrı hesabdır. Google hesabı orada işləmir. Telefonun özünə atdığın APK da özü mağazaya düşmür. AppGallery Connect-də tətbiq açılır, imzalı fayl yüklənir, səhifə doldurulur və yoxlamaya göndərilir.
Play-ə çıxarmaq Huawei-yə çıxarmaq demək deyil. Eyni paket adı ola bilər, amma iki hesab, iki səhifə və iki yoxlama var. Biri bitəndə o biri özü açılmır.
Addımlar
Hesab yoxlanmadan fayl yüklənmir. Əvvəl kimliyi bitir, sonra paketi yığ.
- developer.huawei.com ünvanında Huawei ID aç. Şəxsi və ya şirkət kimi yoxlan. Şəxsi hesabda kimlik sənədi, şirkətdə qeydiyyat sənədi soruşulur. Yoxlama çox vaxt bir və ya iki iş günü çəkir.
- AppGallery Connect-də My apps, sonra yeni tətbiq. Platforma Android, cihaz telefon. Ad, ilkin dil, paket adı və kateqoriya yaz. Paket adı ilk yükləmədən sonra dəyişmir və tətbiqin içindəki applicationId ilə eyni olmalıdır.
- Faylı seç. APK və AAB ikisi də qəbul oluna bilər. APK-nı öz açarınla imzalayırsan. Bu yolda son imza səndə qalır. AAB seçsən, Huawei-nin App Signing xidmətinə qoşulmalısan və son imzanı onlar saxlayır.
- APK yolu belədir. Layihənin android qovluğunda ./gradlew assembleRelease. Fayl app/build/outputs/apk/release içində durur. Açarı itirmə. Növbəti yeniləmə eyni açarla imzalanmalıdır.
- versionCode və versionName mağazaya yazdığın versiya ilə üst-üstə düşməlidir. Hər yeni faylda versionCode böyüyür. Eyni ədəd köhnənin yerinə keçmir.
- Hər dil üçün ad, qısa izah, uzun izah, ikon və ekran şəkillərini doldur. Şəkillər tətbiqin öz ekranı olsun. Boş və ya başqa proqramdan kəsilmiş şəkil rədd səbəbidir.
- Ölkələri, pulsuz və ya pullu olduğunu və məxfilik ünvanını yaz. Yaş dərəcəsini anketlə seç. Tətbiqin içində rəqəmsal mal satırsansa, Huawei-nin öz tətbiq içi ödənişi soruşula bilər.
- Göndərməzdən əvvəl Huawei telefonunda və ya AppGallery-nin bulud testində aç. Google-lu emulyator Huawei-də sınır xətanı gizlədir.
- Səhifəni yoxlamaya göndər. Bir neçə gün çəkə bilər. Rədd cavabı nəyin əskik olduğunu yazır. Düzəldib eyni paket adı və daha böyük versionCode ilə yenidən göndər. İstəsən yoxlamadan keçəndən dərhal sonra və ya seçdiyin saatda açılsın.
Google xidməti Huawei-də yoxdur
2019-cu ilin sonundan bir çox Huawei telefonunda Google Play xidməti yoxdur. Google ilə giriş, Google xəritə, Play Billing və Firebase bildirişi həmin telefonlarda açılmır. Bu hissələri gizlət və ya Huawei-nin öz xidməti ilə əvəz et. Yoxlamadan keçən tətbiq telefonda açılıb boş düymə göstərə bilər. Buna görə bulud testi və ya əsl Huawei telefonu lazımdır.
Tətbiq yalnız sənin saytının pəncərəsidirsə və Google kitabxanası çağırmırsa, eyni səhifə AppGallery-də də aça bilər. Yenə də release imzalı APK və ya AAB lazımdır. Nibras Studio-nun debug faylı mağaza faylı deyil.
İki mağaza iki tamaşaçıdır. Play-də olan adam Huawei-də özü səni görmür. Səhifənin mətni, ikonu və məxfilik ünvanı hər mağazada ayrıca doldurulur. Paket adını hər ikisində eyni saxlamaq yeniləməni qarışdırmır, çünki mağazalar bir-birinin imzasını daşımır. Hər mağazada ilk faylın açarını öz yerində saxla.
Hansı hallarda tətbiq təsdiqlənməyə bilər?
Mağaza faylı açıldığı üçün yox, qaydaya uyğun olmadığı üçün rədd edə bilər. Rədd həmişə hesabı bağlamır. Cavabda səbəb yazılır. Onu düzəldib eyni paket adı və daha böyük versionCode ilə yenidən göndərmək olar. Eyni səhvi ikinci dəfə göndərmək yoxlamanı uzadır. Yanıltmaq isə hesabı riskə qoyur.
Play və Huawei eyni sözü işlətmir, amma rəddin kökü oxşardır. Səhifə yalan danışır, tətbiq açılmır, icazə izah olunmur və ya fayl mağazanın istədiyi yığım deyil. Aşağıdakı hallar ən çox rast gələnlərdir.
Səhifə tətbiqlə uyğun gəlmir
Yoxlayan əvvəl mağaza səhifəsinə baxır, sonra tətbiqi açır. İkisi eyni işi demirsə, rədd gəlir. Ekran şəkli başqa proqramdan kəsilibsə, ikon başqa markanın işarəsidirsə və ya mətndə olmayan düymə vəd olunursa, səhifə yalan sayılır.
- Qısa və uzun mətn boşdur, başqa tətbiqdən köçürülüb və ya yalnız açar söz yığınıdır.
- Ekran şəkilləri tətbiqin öz ekranı deyil. Ölçü səhvdir və ya şəkil bulanıqdır.
- Adda «rəsmi», «ən yaxşı» və ya başqa şirkətin adı var, sən həmin şirkət deyilsən.
- Məxfilik ünvanı açılmır, boş səhifədir və ya tətbiqin yığdığı məlumatı demir.
- Dil qarışıqdır. Səhifə bir dildədir, tətbiqin içi başqa dildədir və yoxlayan işi başa düşmür.
- Kateqoriya səhvdir. Oyun alət kimi, uşaq tətbiqi isə böyük üçün kimi yazılır.
Tətbiq açılmır və ya boşdur
Yoxlayan bir neçə dəqiqə içində əsas işi görməlidir. İlk ekranda çökən, ağ qalan və ya düyməsi heç nə etməyən fayl təsdiqlənmir. Sənin telefonunda açılması bəs etmir. Onların test cihazında da açılmalıdır.
- Açılışda xəta verir və ya dərhal bağlanır.
- Giriş istəyir, amma yoxlayan üçün test adı və şifrəsi qeyddə yazılmayıb. Öz hesabın olmadan içəri baxa bilmir.
- Server sönükdür. Siyahı boşdur, şəkil gəlmir və səhifə dayanır.
- Düymə basılanda heç bir cavab yoxdur. Forma göndərilmir.
- İcazə sorğusu əsassızdır. Kamera istəyirsən, amma kameradan istifadə edən ekran yoxdur.
Yalnız sayt pəncərəsidir
Google Play sadəcə bir saytı pəncərəyə qoyan tətbiqi tez-tez rədd edir. İçində bildiriş, telefonda saxlanan iş, kamera və ya səhifədən artıq bir düymə yoxdursa, yoxlayan bunu ayrıca tətbiq saymaya bilər. Saytın ünvanını brauzerdə açmaq eyni işi görürsə, mağaza faylı artıq sayır.
Huawei də boş pəncərəni və açılmayan ünvanı rədd edə bilər. Saytın özü doludursa və telefonda işləyirsə, şans daha yüksəkdir, amma zəmanət deyil. Nibras Studio-nun debug APK-sı bu yoxlamaya göndərilmir. Mağazaya release yığım lazımdır.
Pəncərəni tətbiq etmək istəyirsənsə, ən azı bir telefon işi əlavə et. Son açılan səhifəni saxla, bildiriş göndər və ya kameradan bir şəkil al. Bunu etmədən göndərmək rədd riskini böyüdür.
Məlumat, reklam və pul
Forma ilə tətbiqin içi üst-üstə düşməlidir. Data safety anketində «heç nə yığmıram» deyib hesab və reklam nömrəsi saxlamaq rədd səbəbidir. Məxfilik səhifəsi həmin siyahını açıq yazmalıdır.
- Rəqəmsal mal mağazanın öz ödənişindən keçmir. Play üçün Play Billing, Huawei üçün onun tətbiq içi ödənişi gözlənilir.
- Abunə gizlidir. Qiymət və nə vaxt yeniləndiyi düymənin yanında yoxdur.
- Reklam bağlanmır, sistem xəbərdarlığı kimi görünür və ya əsas düymənin üstünü örtür.
- Uşaqlar üçün deyirsən, amma böyüklər üçün reklam və alış var. Yaş qrupu səhv seçilib.
- İzləmə razılığı soruşulmur, halbuki reklam şəbəkəsi bunu istəyir.
Başqasının adı və faylın özü
Sənə aid olmayan ad, ikon, musiqi, şəkil və ya mətn təsdiqi dayandırır. Başqa tətbiqin ekranını öz adına qoymaq həm rədd, həm də hesab riskidir. Öz ekranını çək.
- Debug imza. Mağaza yoxlama açarını son buraxılış kimi qəbul etmir.
- Köhnə targetSdk. 31 avqust 2026-dan telefon tətbiqi API 36 hədəfləməlidir. Aşağı hədəf faylı geri qaytarır.
- Yeniləmədə versionCode böyümür və ya paket adı əvvəlki faylla uyğun gəlmir.
- Açar əvvəlki release ilə eyni deyil. Mağaza bunu yeni tətbiq və ya pozulmuş yeniləmə sayır.
- Huawei-də Google kitabxanası açılışı çökdürür. Xəritə, Google giriş və ya Play bildirişi olmayan telefonda boş və ya qapalı ekran qalır.
Rədd gələndə nə etməli
Hesabatı axıra qədər oxu. Çox vaxt bir sətir deyil, bir neçə bənd olur. Hamısını düzəlt, birini buraxıb yenidən göndərmə. Ekran şəklini tətbiqin özündən yenə çək. Məxfilik səhifəsini telefonda və kompüterdə açılıb-açılmadığını yoxla. Test hesabını qeyd sahəsinə yaz.
Düzəlişdən sonra öz telefonunda və bir başqa telefonda aç. Huawei üçündürsə, Google-suz cihazda və ya bulud testində aç. Sonra daha böyük versionCode ilə göndər. Üç dəfə eyni səbəblə qayıdırsa, mətnini qısalt və vəd etdiyin işi tətbiqdən çıxar. Olmayan düyməni səhifədə saxlamaq növbəti rəddi gətirir.
Qara ekranda nümunələr





Yazını dəyiş
Hazır tətbiq faylları
Bu zipin kökündə index.html durur. Yanında css və js qovluqları var. Onu olduğu kimi Studio-ya vermək olar.
Öz zipini seç
Zip seçilən kimi Nibras Studio özü açılır.