Thuta Learning
How Mobile Apps Work
AdvancedMobile Developmentintermediate

APK နှင့် AAB

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • APK နှင့် AAB concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram/checklist ကို ဖတ်ပြီး mobile architecture/decision ဘယ်လို ဆက်စပ်နေသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် mobile app project အတွက် ဘယ်လို အသုံးချသင့်သလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

APK, Android application package အတိုကောက် ဆိုတာ Android က install အမှန်တကယ်လုပ်တဲ့ format ဖြစ်ပါတယ် - compiled code, resources, manifest ပါဝင်တဲ့ file တစ်ခုတည်းပါ။ context အချို့မှာ device ပေါ် တိုက်ရိုက် install လုပ်နိုင်ပေမယ့် ဒါက Google Play upload အတွက် ပိုနှစ်သက်ဖွယ် artifact ဖြစ်တယ်လို့ မဆိုလိုပါဘူး။

AAB, Android App Bundle ကတော့ install လုပ်ဖို့ format မဟုတ်ဘဲ publishing format တစ်ခုပါ။ support လုပ်တဲ့ store ဆီ upload လုပ်ပြီး store ကိုယ်တိုင်ရဲ့ tooling က screen density, processor, language အလိုက် device တစ်ခုချင်းစီ တကယ်လိုအပ်တဲ့ APK အသေးများအဖြစ် ပြောင်းပေးပါတယ်။

  • APK = install လုပ်နိုင်တဲ့ application package တစ်ခုပါ။
  • AAB = store workflow တစ်ခုက install လုပ်နိုင်တဲ့ package အဖြစ် နောက်ကွယ်မှာ ပြောင်းပေးတဲ့ publishing bundle တစ်ခုပါ။

iOS ကတော့ လုံးဝကွဲပြားတဲ့ model တစ်ခုကို သုံးပါတယ် - Apple ကိုယ်တိုင်ရဲ့ tooling ကနေ build ပြီး sign လုပ်ထားတဲ့ signed build archive ကို distribution အတွက် တင်သွင်းပါတယ်။ APK sideload လုပ်သလို ယေဘူယျအသုံးပြုနိုင်တဲ့ direct-install နည်းလမ်းမျိုး ပုံမှန်အသုံးပြုမှုမှာ မရှိပါဘူး။

Apple ရဲ့ လက်ရှိစည်းမျဉ်းကို စစ်ဆေးပါ

iOS ပေါ်မှာ ဘာလုပ်လို့ရလဲ ဆိုတာက လက်ရှိ platform rule, developer program terms, device setting တွေအပေါ် မူတည်ပြီး အချိန်နဲ့အမျှ ပြောင်းလဲနေပါတယ် - claim တစ်ခုခုကို အားကိုးခင် Apple ရဲ့ လက်ရှိ documentation နဲ့ စစ်ဆေးပါ။

APK
Android application package - Android က install အမှန်တကယ်လုပ်တဲ့ file format ဖြစ်ပြီး compiled code, resources, manifest ပါဝင်ပါတယ်။
AAB
Android App Bundle - supporting store ဆီ upload လုပ်တဲ့ publishing format ဖြစ်ပြီး store က device-specific installable APK များအဖြစ် ပြောင်းပေးပါတယ်။
text
APK VS AAB BUILD OUTPUTS
------------------------
APK VS AAB BUILD OUTPUTS
-------------------------
Android source --> Compiled build
                        |
            +-----------+-----------+
            v                       v
           APK                     AAB
     (installable)           (publishing bundle)
            |                       |
            v                       v
     Install directly         Store generates
     on a device               device-specific APKs

iOS (separate model)
     Signed Build Archive --> Submitted via App Store

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

release တစ်ခု build လုပ်ဖို့ ထိုင်တဲ့အခါ ဦးဆုံးမေးရမယ့်မေးခွန်းက ကိုယ်ကြိုက်တဲ့ format ဘာလဲ မဟုတ်ဘဲ ဘယ်ကိုသွားမလဲဆိုတာပါ။

ဘယ်ကိုပို့မလဲပုံမှန်သုံးလေ့ရှိတဲ့ format
Google Play releaseAAB ကို store console ကနေ upload လုပ်ပါ - တိကျတဲ့ command ကို build tool ရဲ့ release documentation မှာ စစ်ဆေးပါ။
Direct tester/lab installAPK - store မပါဘဲ တိုက်ရိုက် install လုပ်နိုင်တဲ့ file တစ်ခုတည်းပါ။
Ad-hoc test distributionပုံမှန်အားဖြင့် install လုပ်နိုင်တဲ့ APK ဖြစ်ပေမယ့် team အချို့က store ရဲ့ internal testing track ကနေ ရွှေ့ပို့ကြပါတယ်။
iOS distributionsigned archive တစ်ခုတည်းအတွင်း build-and-sign path ကို official Apple channel တွေကနေ တင်သွင်းပါတယ်။

iOS sideloading ရနိုင်တယ်လို့ မယူဆပါနဲ့

App Store အပြင်ဘက်က install လုပ်တာနဲ့ ပတ်သက်တဲ့ platform rule တွေဟာ concept ကိုယ်တိုင်ထက် ပိုမကြာခဏ ပြောင်းလဲနေတတ်ပါတယ် - option တစ်ခုခု ရနိုင်တယ်လို့ ယူဆမနေဘဲ လက်ရှိ Apple documentation ကို စစ်ဆေးပါ။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function recommendPackageFormat(scenario) {
  if (scenario.isGooglePlayUpload) {
    return {
      format: "AAB",
      reason: "Google Play's publishing workflow is built around App Bundles; the store generates device-specific APKs from it."
    };
  }
  if (scenario.isDirectInstallOutsideStore) {
    return {
      format: "APK",
      reason: "A direct install outside a store needs a package that installs on its own, which is what an APK is for."
    };
  }
  if (scenario.isTestDistribution) {
    return {
      format: "APK",
      reason: "Ad-hoc test distribution to a handful of devices commonly uses a directly installable APK."
    };
  }
  return { format: "depends", reason: "Specify the distribution channel to get a recommendation." };
}

const playUpload = { isGooglePlayUpload: true, isDirectInstallOutsideStore: false, isTestDistribution: false };
const sideloadTest = { isGooglePlayUpload: false, isDirectInstallOutsideStore: true, isTestDistribution: false };

console.log("Google Play upload:", recommendPackageFormat(playUpload));
console.log("Direct install:", recommendPackageFormat(sideloadTest));
You should see
Google Play upload scenario က { format: 'AAB' } ကို reason အတူ ပြန်ပေးပြီး AAB ရဲ့ publishing workflow အကြောင်း ရှင်းပြပါတယ်။ direct-install scenario ကတော့ { format: 'APK' } ကို ပြန်ပေးပြီး store အပြင်ဘက် တိုက်ရိုက် install ဖို့ APK လိုအပ်ကြောင်း ရှင်းပြပါတယ်။

၅ မိနစ် စမ်းကြည့်

သင့် app ကြုံနိုင်တဲ့ distribution scenario သုံးခု (store release၊ internal QA build၊ client demo) ကို list လုပ်ပါ။ တစ်ခုချင်းစီအတွက် recommendPackageFormat-စတိုင် function ကို run ပြီး အကြံပြုတဲ့ format က သင်အမှန်တကယ်ရွေးမယ့်အရာနဲ့ ကိုက်ညီမလား စစ်ဆေးပါ။

သတိလေးတစ်ချက်

Google Play အတွက် အမှန်တကယ် release upload မှာ APK ကသာ မှန်ကန်တဲ့ ဒါမှမဟုတ် ပိုကောင်းတဲ့ artifact ဖြစ်တယ်လို့ ယူဆလိုက်တာ။

Apple ရဲ့ လက်ရှိ documentation ကို မစစ်ဆေးဘဲ iOS sideloading ဒါမှမဟုတ် installation method အကြောင်း အတည်ပြုပြောလိုက်တာ။

Android App Bundle overview - developer.android.comHow Mobile Apps Work

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Google Play အတွက် အမှန်တကယ် release upload မှာ APK ကသာ မှန်ကန်တဲ့ ဒါမှမဟုတ် ပိုကောင်းတဲ့ artifact ဖြစ်တယ်လို့ ယူဆလိုက်တာ။
  • Apple ရဲ့ လက်ရှိ documentation ကို မစစ်ဆေးဘဲ iOS sideloading ဒါမှမဟုတ် installation method အကြောင်း အတည်ပြုပြောလိုက်တာ။
  • ဒီ course က Android Development, Flutter, iOS Development, React Native tutorial တွေကို ထပ်မသင်ပါ — framework hands-on depth အတွက် အဲဒီ course တွေဆီ ဆက်သွားပါ။ ဒီ course က framework-neutral mobile architecture, decision-making, build/deployment/security concept တွေကိုသာ သင်ပေးပါတယ်။

လေ့ကျင့်ခန်း

သင့် app ကြုံနိုင်တဲ့ distribution scenario သုံးခု (store release၊ internal QA build၊ client demo) ကို list လုပ်ပါ။ တစ်ခုချင်းစီအတွက် recommendPackageFormat-စတိုင် function ကို run ပြီး အကြံပြုတဲ့ format က သင်အမှန်တကယ်ရွေးမယ့်အရာနဲ့ ကိုက်ညီမလား စစ်ဆေးပါ။

You'll know it worked when: Google Play upload scenario က { format: 'AAB' } ကို reason အတူ ပြန်ပေးပြီး AAB ရဲ့ publishing workflow အကြောင်း ရှင်းပြပါတယ်။ direct-install scenario ကတော့ { format: 'APK' } ကို ပြန်ပေးပြီး store အပြင်ဘက် တိုက်ရိုက် install ဖို့ APK လိုအပ်ကြောင်း ရှင်းပြပါတယ်။