Bosh sahifa Wiki APK

APK

APKAndroid applicationni qurilmaga o‘rnatish va tarqatish uchun ishlatiladigan package fayl formati. To‘liq nomi Android Package Kit yoki amaliyotda Android application package sifatida izohlanadi. APK ichida compiled code, resource, manifest, native library, certificate va boshqa application fayllari saqlanadi.

APK ZIP container formatiga asoslangan, ammo Android platformasi kutadigan aniq directory va metadata tuzilishiga ega.

Asosiy tarkib

APK ichida quyidagi elementlar bo‘lishi mumkin:

  • AndroidManifest.xml;
  • classes.dex;
  • resources.arsc;
  • res/;
  • assets/;
  • lib/;
  • META-INF/;
  • signature block;
  • boshqa metadata.

Build konfiguratsiyasiga qarab fayllar soni farq qiladi.

AndroidManifest

Manifest package va application componentlarini e’lon qiladi:

APK ichidagi manifest binary XML ko‘rinishida bo‘lishi mumkin.

Build tool source manifestlarni merge qiladi.

DEX

Kotlin va Java kodi compile jarayonidan keyin Dalvik Executable formatiga aylantiriladi.

APK bir yoki bir nechta:

classes.dex
classes2.dex

faylga ega bo‘lishi mumkin.

Method soni va multidex konfiguratsiyasi eski platformalarda alohida ahamiyatga ega.

Native library

C yoki C++ orqali build qilingan .so fayllar architecture bo‘yicha joylashtiriladi:

lib/arm64-v8a/
lib/armeabi-v7a/
lib/x86_64/

Qurilmaga mos ABI tanlanadi.

Universal APK barcha architecture librarylarini saqlab, hajmni oshiradi.

Resource

res/ ichida layout, drawable, string va boshqa compiled resource mavjud.

resources.arsc resource table’ni saqlaydi.

Android device til, screen density va configurationga mos resource variantini tanlaydi.

Unused resource buildda olib tashlanishi mumkin.

Assets

assets/ raw fayllarni original nom va directory bilan saqlaydi.

Application AssetManager orqali o‘qiydi.

Resource system ularga automatic ID yoki localization bermaydi.

Katta asset APK hajmini oshiradi.

Signing

Android APK o‘rnatilishidan oldin digital signature bilan imzolanadi.

Signature:

  • application identity;
  • update continuity;
  • integrity

uchun ishlatiladi.

Yangi update oldingi o‘rnatilgan application bilan mos signing keyga ega bo‘lishi kerak.

Debug va release APK

Debug APK development key bilan avtomatik imzolanishi mumkin.

U debugging flag va qo‘shimcha loggingga ega bo‘lishi ehtimoli bor.

Release APK production key, optimization va minification bilan build qilinadi.

Debug artifact public tarqatish uchun mos emas.

APK Signature Scheme

Android versionlari turli signing scheme’larni qo‘llashi mumkin:

  • v1;
  • v2;
  • v3;
  • v4ga oid scheme.

Yangi scheme butun APK integrity’sini samaraliroq tekshiradi.

Eski qurilmalar bilan compatibility uchun bir nechta scheme birga ishlatilishi mumkin.

Zip alignment

zipalign uncompressed resource’larni memoryga samarali map qilish uchun APK ichidagi data offsetlarini tekislaydi.

Alignment signing va build pipeline’ning to‘g‘ri tartibida bajariladi.

Zamonaviy build tool bu jarayonni avtomatlashtiradi.

Package name

Application ID qurilmada package’ni unique aniqlaydi:

uz.uzbekdevs.app

Store listing va update shu identityga bog‘liq.

Package nomini keyin o‘zgartirish yangi application sifatida ko‘rilishi mumkin.

Version

APK:

  • version code;
  • version name

ga ega.

Version code update tartibini numeric belgilaydi.

Yangi update oldingisidan yuqori codega ega bo‘lishi kerak.

Version name userga ko‘rinadigan semantik matn.

Universal APK

Barcha architecture, density va til resource’larini bitta faylda saqlaydi.

Sideload uchun sodda.

Fayl hajmi katta.

Store optimized split APKlarni tarqatishi mumkin.

Split APK

Application bir base va bir nechta configuration yoki feature APKga bo‘linadi.

Qurilma faqat kerakli qismlarni oladi.

Splitlar birgalikda bitta applicationni tashkil qiladi.

Faqat bitta splitni o‘rnatish yetarli bo‘lmasligi mumkin.

APK va AAB

APK qurilmaga o‘rnatiladigan format.

AAB store uchun publish format bo‘lib, undan optimized APK set yaratiladi.

Developer storega AAB yuborib, testing yoki sideload uchun alohida APK build qilishi mumkin.

O‘rnatish

APK:

  • app store;
  • adb;
  • browser download;
  • enterprise management;
  • file manager

orqali o‘rnatilishi mumkin.

Noma’lum manbadan o‘rnatish user ruxsati va security ogohlantirishiga ega.

Sideload xavfi

Internetdan olingan APK:

saqlashi mumkin.

Signature va source tekshiriladi.

Fayl nomi yoki icon haqiqiy publisherni isbotlamaydi.

Reverse engineering

APK ichidagi DEX, resource va manifest tool bilan tahlil qilinishi mumkin.

Obfuscation class nomlarini qiyinlashtiradi, ammo client code secret emas.

API key va private credential APK ichiga joylashtirilmaydi.

Server authorization clientga tayanmaydi.

Hajmni kamaytirish

Usullar:

Hajm faqat download emas, install storage va update trafikiga ham ta’sir qiladi.

Installation conflict

Qurilmada ayni package ID bilan boshqa signing keydagi application mavjud bo‘lsa update o‘rnatilmaydi. User oldingi applicationni o‘chirishi kerak bo‘lishi mumkin, bunda local data yo‘qoladi. Release signing key lifecycle’i shu sababli uzoq muddatli.

Minimum SDK

APK manifest minimal API levelni belgilaydi. Qurilma versioni past bo‘lsa package install qilinmaydi. Native library kerakli ABIga ega bo‘lmasa application o‘rnatilishi yoki ishga tushishi mumkin emas.

Reproducible build

Bir xil source va dependency’dan bir xil artifact olish supply-chain tekshiruvini yengillashtiradi. Timestamp va nondeterministic file order nazorat qilinadi.

Bog‘liq tushunchalar

Android Package, APK, AndroidManifest.xml, DEX, Native library, APK signing, Split APK, AAB, Sideloading, Android application