EAS Build — APK va AAB yasash, development build
Muammodan boshlaylik
Ilova Expo Go da ishlaydi. Endi:
- Do'stingizga ilovani yuborish kerak — u Expo Go ni o'rnatmasligi kerak
- Push bildirishnomalar (42-dars), ba'zi native kutubxonalar Expo Go da ishlamaydi
- Google Play va App Store ga chiqarish kerak
- iOS ilova yasash uchun Mac va Xcode kerak... sizda esa Windows
EAS (Expo Application Services) — Expo ning bulut xizmati: ilovani ularning serverlarida yasaydi (Android ham, iOS ham), imzolaydi va do'konlarga yuboradi. Mac shart emas.
O'rnatish va sozlash
npm install -g eas-cli
eas login # expo.dev hisobi (bepul)
eas build:configure
eas build:configure loyihani Expo hisobingizga bog'laydi (app.json ga projectId yoziladi) va eas.json yaratadi:
{
"cli": { "version": ">= 16.0.0", "appVersionSource": "remote" },
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {}
}
}
Uchta profil — uch xil maqsad.
Ilova identifikatorlari
Birinchi build dan oldin app.json da — noyob ID lar (4-dars):
{
"expo": {
"name": "Do'kon",
"version": "1.0.0",
"ios": { "bundleIdentifier": "uz.dokon.app" },
"android": { "package": "uz.dokon.app" }
}
}
[!WARNING]
packagevabundleIdentifierdo'konga birinchi marta yuklangandan keyin o'zgartirib bo'lmaydi. Teskari domen formatida:uz.kompaniya.ilova. Faqat kichik harflar, raqamlar va nuqta.
1. Development build — Expo Go o'rniga
Expo Go — barcha ilovalar uchun umumiy konteyner, faqat Expo SDK modullari bilan. Development build — sizning ilovangizning o'z "Expo Go" si: sizning barcha native kutubxonalaringiz bilan, lekin baribir hot reload va debug bilan.
npx expo install expo-dev-client
eas build --profile development --platform android
Build tugagach (10-20 daqiqa) — QR kod va havola. Telefonda ochib, APK ni o'rnatasiz. Keyin:
npx expo start
Endi QR — Expo Go emas, sizning development build ingizda ochiladi.
| Expo Go | Development build | |
|---|---|---|
| O'rnatish | Do'kondan | O'zingiz yasaysiz |
| Native kutubxonalar | Faqat Expo SDK dagilar | Istalgan |
| Push (Android), keyboard-controller, vision-camera | ❌ | ✅ |
| Hot reload, debug | ✅ | ✅ |
| Qayta build kerak | Hech qachon | Native kutubxona qo'shilganda |
Qoida: o'rganish va prototip — Expo Go. Haqiqiy loyiha — development build dan boshlang. JavaScript o'zgarishlari uchun qayta build kerak emas; faqat native kutubxona qo'shilganda yoki app.json dagi plaginlar o'zgarganda.
2. Preview — sinovchilar uchun APK
eas build --profile preview --platform android
Natija — oddiy APK fayl. Havolani do'stlaringiz yoki buyurtmachiga yuborasiz — ular telefonga o'rnatadi ("Noma'lum manbalar" ruxsati bilan). Dev menyusiz, haqiqiy ilova kabi.
iOS uchun "internal distribution" — sinovchi qurilmalarning UDID lari ro'yxatdan o'tkaziladi (eas device:create). Yoki osonrog'i — TestFlight (50-dars).
3. Production — do'konlar uchun
eas build --profile production --platform android # AAB — Google Play uchun
eas build --profile production --platform ios # IPA — App Store uchun
eas build --profile production --platform all # ikkalasi
- Android: AAB (Android App Bundle) — Google Play talab qiladi; Play har bir qurilmaga mos kichik APK yasaydi
- iOS: IPA — Apple Developer hisobi kerak (yiliga $99)
autoIncrement: true — har bir production build da versionCode (Android) / buildNumber (iOS) avtomatik oshadi. Do'kon bir xil raqamli build ni qabul qilmaydi.
Imzolash (signing)
Har bir ilova kriptografik imzo bilan imzolanadi — do'kon va telefon ilova haqiqatan sizdan ekanini shu bilan tekshiradi.
EAS buni o'zi boshqaradi: birinchi build da kalitlarni yaratadi va xavfsiz saqlaydi. Siz faqat savollarga "Ha" deysiz.
[!WARNING] Android imzo kaliti (keystore) yo'qolsa — ilovangizga hech qachon yangilanish chiqara olmaysiz (Play App Signing yoqilmagan bo'lsa). EAS uni saqlaydi, lekin zaxira nusxasini oling:
eas credentials→ Android → Download keystore. Xavfsiz joyda saqlang.
Muhit o'zgaruvchilari
Development da — mahalliy API, production da — haqiqiy:
"build": {
"development": { "env": { "EXPO_PUBLIC_API_URL": "http://192.168.1.10:3000" } },
"production": { "env": { "EXPO_PUBLIC_API_URL": "https://api.dokon.uz" } }
}
Yoki expo.dev saytida — eas env:create. Maxfiy server kalitlari — baribir ilovada emas (31-dars).
Build jarayonini kuzatish
eas build:list
Yoki https://expo.dev → loyiha → Builds. Xato bo'lsa — to'liq log: ko'pincha mos kelmagan kutubxona versiyasi (npx expo-doctor, 5-dars) yoki app.json dagi xato.
Bepul reja — oyiga cheklangan build lar, navbatda kutish bilan. Kichik loyiha uchun yetarli. Tez-tez build kerak bo'lsa — pullik reja yoki o'z kompyuteringizda: eas build --local (Android — istalgan OS da; iOS — faqat macOS da).
Mahalliy build (EAS siz)
npx expo run:android # Android Studio va SDK kerak
npx expo run:ios # macOS + Xcode kerak
android/ va ios/ papkalarini yaratadi (prebuild, 4-dars) va mahalliy yasaydi.
Nima uchun shunday?
Nima uchun iOS ilovani yasash uchun Mac kerak va EAS bu muammoni qanday hal qiladi?
Apple iOS ilovalarini yasash vositalarini (Xcode, kompilyator, imzolash) faqat macOS uchun chiqaradi. Bu Apple ning qarori va texnik jihatdan aylanib o'tib bo'lmaydi. EAS esa Mac kompyuterlarni bulutda ijaraga beradi: siz kodni yuborasiz, ular Mac da yasab, imzolab, tayyor faylni qaytaradi. Windows yoki Linux dagi dasturchi uchun bu iOS ilova chiqarishning eng oddiy yo'li.
Xulosa
Eslab qoling:
eas-cli,eas login,eas build:configure→eas.jsonpackage/bundleIdentifier— noyob, keyin o'zgarmaydi- development — o'z Expo Go ingiz, native kutubxonalar bilan
- preview — APK, sinovchilarga havola
- production — AAB (Play), IPA (App Store);
autoIncrement - Imzolashni EAS boshqaradi; Android keystore zaxirasini oling
- Har profil uchun o'z
envi - Mac siz iOS — EAS bulutda
Keyingi dars
49-dars: Google Play ga chiqarish