အထက္က ပံုကေတာ့ Android phone တစ္လံုး ကို အလႊာခြဲပီး နားလည္လြယ္ေအာင္ဆြဲျပထားတာပါ၊
Hardware အလႊာ
အထက္က ပံုရဲ့ ျမားျပထားတဲ့ အစိတ္အပိုင္းကေတာ့ ဖုန္း Hardwares ေတြကိုေဖာ္ညြန္းထားပါတယ္၊ အတိအက်တူညီမွာမဟုတ္ေပးမယ့္ နားလည္လြယ္ေအာင္ ဆြဲထားေပးတာပါ၊ Hardware အပိုင္းထဲမွာ ဖုန္း မ်က္ႏွာျပင္၊ အသံအနိမ့္အျမင့္ Button, Camera, CPU စသျဖင့္ ထိေတြ႔ကိုင္တြယ္လို႔ရတဲ့ ပစၥည္းေတြအားလံုးပါပါမယ္၊ ဒီလို Hardware ပိုင္းဆိုင္ရာ ေရြးခ်ယ္ တည္ေဆာက္မွူ က ကုမၼဏီတစ္ခုနဲ႔ တစ္ခု မတူပါဘူး၊ ဒီလိုဘဲ ဖုန္းတစ္လံုးထဲမွာေတာင္ အသံုးျပဳတဲ့ Hardware ေတြတစ္ခုနဲ႔ တစ္ခု ထုတ္လုပ္တဲ့ ကုမၼဏီ မတူပါဘူး၊ ဥပမာ CPU မွာ Exynos သံုးတဲ့ ဖုန္းရွိသလို Snapdragon သံုးတဲ့ဖုန္းလဲရွိပါတယ္၊ Radios အတြက္ CDMA သံုးတဲ့ဖုန္း GSM သံုးတဲ့ ဖုန္း LTE သံုးတဲ့ဖုန္း ႏွစ္ခုတြဲသံုးတဲ့ဖုန္း ဆိုပီးရွိပါတယ္၊
Libraries
အကယ္၍ မိတ္ေဆြ Application တစ္ခုေရးခ်င္တယ္၊ ေရးတဲ့ Application က camera အသံုးျပဳျပီး ဓါတ္ပံုရိုက္ႏိုင္တဲ့ Application ျဖစ္မယ္၊ ဓါတ္ပံု ရိုက္မယ့္ Application ျဖစ္တဲ့ အတြက္ LED Flash ကို ဖြင့္ႏိုင္တဲ့ Function တစ္ခုပါေအာင္ေရးရမယ္၊ ေရးတဲ့ အခါလဲ Hardware ျဖစ္တဲ့ Camera component နားလည္ေအာင္ machine code နဲ႔ ေရးရမယ္၊ ေရးပီးပီပဲထားပါေတာ့၊ အားလံုးလဲ အဆင္ေျပေျပအလုပ္လုပ္ေနပီပဲထားပါေတာ့၊ ျပသနာ တစ္ခုက မိတ္ေဆြေရးတဲ့ Application မွာ camera သံုးပီး ဓါတ္ပံုရိုက္နိုင္တဲ့ Function ပါသလို သူမ်ားေတြေရးထားတဲ့ Application ေတြမွာလဲ Camera သံုးတဲ့ Function ေတြပါလာႏိုင္ပါတယ္၊ ဒီလို Camera သံုးတဲ့ Application 5 ခုရွိတယ္ဆိုရင္ machine code လဲ ငါးခုစာရွိေနမယ္၊ ဒီေတာ့ camera ဖြင့္တယ္ ဆိုတဲ့ အလုပ္တစ္ခုထဲ အတြက္ ကုတ္က ငါးခုစာရွိေနမယ္ဆိုတဲ့ သေဘာေပါ့၊ ဒီကုတ္ေတြမ်ားတာက applications ေတြ အလုပ္လုပ္တဲ့ အခါ မွာ အရမ္းကိုေႏွး သြားေစပါတယ္၊
အထက္ကလို ရည္ရြယ္ခ်က္တူညီ လုပ္ရပ္တူညီတဲ့ အလုပ္တစ္ခုကို လုပ္တဲ့ Application တစ္ခုစီက machine code တစ္မ်ိဳးစီေရးတဲ့ ျပသနာကို ေျဖရွင္းဖို႔ အတြက္ Android မွာ Libraries ေတြပါလာပါတယ္၊ Libraries ေတြထဲမွာ Android Action တစ္ခုစီတိုင္း Intent တစ္ခုစီတိုင္း အတြက္ machine code ေတြ ႀကိဳေရးထားပါတယ္၊ သေဘာက Application Developer ေတြက Camera Application တစ္ခုကိုေရးခ်င္တယ္ဆိုရင္ Camera Hardware ကို အလုပ္ခိုင္းဖို႔ machine code ေတြကို သီးသန္႔ေရးေနစရာ မလိုေတာ့ပဲနဲ႔ Library ထဲမွာရွိတဲ့ သက္ဆိုင္တဲ့ Camera အတြက္ Machine code ကို ေခၚလိုက္ရံုပဲလိုေတာ့တယ္၊ ဒီလို Library ထဲမွာရွိပီးသား Machine Code ကိုေခၚသံုးႏိုင္ပီျဖစ္တဲ့ အတြက္ အတြက္ Camera သံုးတဲ့ Applications ေတြအားလံုးက Library ထဲက ရွိပီးသား Machine Code ကိုပဲ ေခၚသံုးရံု မွ်သံုးရံုပဲ၊ တစ္ခု အတြက္ သီးသန္႔ တစ္ခါျပန္ေရးစရာမလိုေတာ့ဘူး၊ သံုးခ်င္ရင္ ေခၚသံုးတတ္ဖို႔ပဲလိုတယ္၊ ေခၚသံုးဖို႔က Java မွာ Class ေတြအမ်ား အမ်ား ႀကီးရွိတယ္၊
Windows OS မွာသံုးတဲ့ libraries ဖိုင္ေတြကို .dll ( Dynamic Linked Libraries ) ေတြ အေနနဲ႔ ေတြ႔ရမွာျဖစ္ပီး Linux OS နဲ႔ Android မွာေတာ့ os ( Shared Object ) ဖိုင္ေတြ အေနနဲ႔ ေတြ႔ ရမွာပါ၊ Java မွာ ကုတ္ေရးရင္ .jar libraries ေတြကို Class အေနနဲ႔ import လုပ္ရပါတယ္၊ Adnroid phone မွာလဲ မျဖစ္မေန အျမဲသံုးရတဲ့ libraries ေတြရွိပါတယ္၊ မျဖစ္မေနဆိုမွာ တကယ့္ မျဖစ္မေနပါ၊ သူတို႔ကို မသံုးရင္ ROM က Boot တက္မွာ မဟုတ္ေတာ့ ပါဘူး၊
Kernel အလႊာ
Kernel အေၾကာင္းကို အျခား ပိုစ့္ေတြမွာရွင္းထားတာ ရွိပါတယ္၊ သြားဖတ္ေပးပါ၊
Dalvik Virtual Machine
Dalvik Virtual Machine က Java ဘာသာရပ္နဲ႔ ေရးထားတဲ့ code ေတြ application ေတြကို Run ေပးပါတယ္၊ Java compiler က text ဖိုင္မွာေရးထားတဲ့ ဖိုင္ေတြကို Bytecode အျဖစ္ေျပာင္းေပးတယ္၊ ရလာတဲ့ Bytecode ေတြကို .dex ဖိုင္ေတြျဖစ္ေအာင္ compile လုပ္တယ္၊ Dalvik VM က .dex ဖိုင္ေတြကို ဖတ္ႏိုင္တယ္၊
Eclipe သို႔ Java IDE နဲ႔ ေရးထားတဲ့ class ဖိုင္ေတြကို .dex ဖိုင္ေတြျဖစ္ေအာင္ javac (java compiler) နဲ႔ compile လုပ္တယ္ (.dex ဖိုင္ေတြက .jar ဖိုင္ေတြန႔ဲတူတယ္)၊ .dex ဖိုင္ေတြကို Dalvik VM က Run ပီး .obj ဖိုင္ အျဖစ္ေျပာင္းေပးတယ္၊ ဒီ Object ဖိုင္ေတြကိုေတာ့ Kernel က နားလည္ပီး ေနာက္ပိုင္း အလုပ္ဆက္လုပ္တယ္၊ (တကယ္ေတာ့ Dalvik VM အေၾကာင္းကို အေသးစိတ္ေျပာရင္ စိတ္၀င္စားစရာ အလြန္႔အလြန္ေကာင္း သလို Java ကို Sun ကုမၼဏီ က ၀ယ္လိုက္တဲ့ Oracle နဲ႔ Google ၾကား Dalvik VM အေၾကာင္း အျငင္းပြားမူကလဲ တကယ့္ကို စိတ္၀င္စားစရာေကာင္းပါတယ္၊ Java Virtual Machine ကို Mobile နဲ႔ သင့္ေတာ္ေအာင္ Develop လုပ္လိုက္ရာမွ ပိုျမန္ပီးပိုေကာင္းလားတဲ့ ရလဒ္ျဖစ္တဲ့ Dalvik Virtual Machine ရဲ့ Apache Harmony project က စပီး ကုတ္ေတြနဲ႔ တည္ေဆာက္ပံုကိုပါေနာက္ပိုင္း အေသးစိတ္ေရးမယ္၊)
Application Framework
Application Framework ရဲ့ အေပၚမွာေတာ့ Applications Layer ပါရွိပါတယ္၊ အခ်ိဳ႕ Application ေတြကေတာ့ System Applicatoins ေတြျဖစ္ပီး မူတူညီတဲ့ ၀င္ေဆာင္မွဴ ေတြကိုေပးႏိုင္ပါတယ္၊ ဥပမာ အားျဖင့္ Applications တိုင္းရဲ့ Manifast ထဲမွာ မပါမျဖစ္ပါရတဲ့ Launcher ပါ၊ framework နဲ႔ System ui apks ေတြလဲရွိပါေသးတယ္၊ System ui apks ကေတာ့ Icon နဲ႔ dialog box style ေတြကို ဖန္တီးေပးပါတယ္၊
Applications
အေပၚဆံုးက ကၽြန္ေတာ္တို႔ရဲ့ applications ေတြပဲ၊
1. မျဖစ္မေနသံုးရတဲ့ Libraries ေတြက ဘာေတြလဲ၊
2. Bootloader ကို ဘယ္လို Develop လုပ္မလဲ၊
3. ဖုန္း ကုမၼဏီေတြက Android OS ကို ဘယ္လို အဆင့္ဆင့္ စိတ္ႀကိဳက္
Develop လုပ္ၾကလဲ၊
4. Java ဖိုင္ Run တဲ့ ေနာက္ကြယ္က အဆင့္ဆင့္ ျဖစ္စဥ္၊
5. imei ကို ဘယ္မွာ သိမ္းလဲ၊ imei နံပါတ္ကို ရွာတဲ့ Application ကို ဘယ္လို ေရးလဲ၊
6. System Font ေတြအေၾကာင္း ေလ့လာျခင္း ( ျမန္မာစာ အတြက္ )
7. ဖုန္းတစ္ခုလံုး Hardware အဆင့္ပဲထားပီး sofrware program ေတြအားလံုး ဘယ္လို ထည့္သြင္းတည္ေဆာက္မလဲ၊
8. low-level ( assambler )၊ mid-level ( Java, C#)၊ Height Level (C,C++) တို႔ႏွင့္ Android ဆက္စပ္ ပံု၊
9. embedded Program အေၾကာင္း၊
10. Microcontroller ေတြကို ဘယ္လို ထိန္းခ်ဳပ္လဲ၊
ဒီပိုုစ့္ကိုု pdf ဖိုုင္ အျဖစ္ ေဒါင္းလုုဒ္လုုပ္လိုု ပါက ေအာက္ပါ လင့္တြင္း ေဒါင္းလုုပ္ရယူႏုုိင္ပါသည္
http://goo.gl/KKvV3c
အကယ္၍ မိတ္ေဆြ Application တစ္ခုေရးခ်င္တယ္၊ ေရးတဲ့ Application က camera အသံုးျပဳျပီး ဓါတ္ပံုရိုက္ႏိုင္တဲ့ Application ျဖစ္မယ္၊ ဓါတ္ပံု ရိုက္မယ့္ Application ျဖစ္တဲ့ အတြက္ LED Flash ကို ဖြင့္ႏိုင္တဲ့ Function တစ္ခုပါေအာင္ေရးရမယ္၊ ေရးတဲ့ အခါလဲ Hardware ျဖစ္တဲ့ Camera component နားလည္ေအာင္ machine code နဲ႔ ေရးရမယ္၊ ေရးပီးပီပဲထားပါေတာ့၊ အားလံုးလဲ အဆင္ေျပေျပအလုပ္လုပ္ေနပီပဲထားပါေတာ့၊ ျပသနာ တစ္ခုက မိတ္ေဆြေရးတဲ့ Application မွာ camera သံုးပီး ဓါတ္ပံုရိုက္နိုင္တဲ့ Function ပါသလို သူမ်ားေတြေရးထားတဲ့ Application ေတြမွာလဲ Camera သံုးတဲ့ Function ေတြပါလာႏိုင္ပါတယ္၊ ဒီလို Camera သံုးတဲ့ Application 5 ခုရွိတယ္ဆိုရင္ machine code လဲ ငါးခုစာရွိေနမယ္၊ ဒီေတာ့ camera ဖြင့္တယ္ ဆိုတဲ့ အလုပ္တစ္ခုထဲ အတြက္ ကုတ္က ငါးခုစာရွိေနမယ္ဆိုတဲ့ သေဘာေပါ့၊ ဒီကုတ္ေတြမ်ားတာက applications ေတြ အလုပ္လုပ္တဲ့ အခါ မွာ အရမ္းကိုေႏွး သြားေစပါတယ္၊
အထက္ကလို ရည္ရြယ္ခ်က္တူညီ လုပ္ရပ္တူညီတဲ့ အလုပ္တစ္ခုကို လုပ္တဲ့ Application တစ္ခုစီက machine code တစ္မ်ိဳးစီေရးတဲ့ ျပသနာကို ေျဖရွင္းဖို႔ အတြက္ Android မွာ Libraries ေတြပါလာပါတယ္၊ Libraries ေတြထဲမွာ Android Action တစ္ခုစီတိုင္း Intent တစ္ခုစီတိုင္း အတြက္ machine code ေတြ ႀကိဳေရးထားပါတယ္၊ သေဘာက Application Developer ေတြက Camera Application တစ္ခုကိုေရးခ်င္တယ္ဆိုရင္ Camera Hardware ကို အလုပ္ခိုင္းဖို႔ machine code ေတြကို သီးသန္႔ေရးေနစရာ မလိုေတာ့ပဲနဲ႔ Library ထဲမွာရွိတဲ့ သက္ဆိုင္တဲ့ Camera အတြက္ Machine code ကို ေခၚလိုက္ရံုပဲလိုေတာ့တယ္၊ ဒီလို Library ထဲမွာရွိပီးသား Machine Code ကိုေခၚသံုးႏိုင္ပီျဖစ္တဲ့ အတြက္ အတြက္ Camera သံုးတဲ့ Applications ေတြအားလံုးက Library ထဲက ရွိပီးသား Machine Code ကိုပဲ ေခၚသံုးရံု မွ်သံုးရံုပဲ၊ တစ္ခု အတြက္ သီးသန္႔ တစ္ခါျပန္ေရးစရာမလိုေတာ့ဘူး၊ သံုးခ်င္ရင္ ေခၚသံုးတတ္ဖို႔ပဲလိုတယ္၊ ေခၚသံုးဖို႔က Java မွာ Class ေတြအမ်ား အမ်ား ႀကီးရွိတယ္၊
Windows OS မွာသံုးတဲ့ libraries ဖိုင္ေတြကို .dll ( Dynamic Linked Libraries ) ေတြ အေနနဲ႔ ေတြ႔ရမွာျဖစ္ပီး Linux OS နဲ႔ Android မွာေတာ့ os ( Shared Object ) ဖိုင္ေတြ အေနနဲ႔ ေတြ႔ ရမွာပါ၊ Java မွာ ကုတ္ေရးရင္ .jar libraries ေတြကို Class အေနနဲ႔ import လုပ္ရပါတယ္၊ Adnroid phone မွာလဲ မျဖစ္မေန အျမဲသံုးရတဲ့ libraries ေတြရွိပါတယ္၊ မျဖစ္မေနဆိုမွာ တကယ့္ မျဖစ္မေနပါ၊ သူတို႔ကို မသံုးရင္ ROM က Boot တက္မွာ မဟုတ္ေတာ့ ပါဘူး၊
Kernel အလႊာ
Kernel အေၾကာင္းကို အျခား ပိုစ့္ေတြမွာရွင္းထားတာ ရွိပါတယ္၊ သြားဖတ္ေပးပါ၊
Dalvik Virtual Machine
Dalvik Virtual Machine က Java ဘာသာရပ္နဲ႔ ေရးထားတဲ့ code ေတြ application ေတြကို Run ေပးပါတယ္၊ Java compiler က text ဖိုင္မွာေရးထားတဲ့ ဖိုင္ေတြကို Bytecode အျဖစ္ေျပာင္းေပးတယ္၊ ရလာတဲ့ Bytecode ေတြကို .dex ဖိုင္ေတြျဖစ္ေအာင္ compile လုပ္တယ္၊ Dalvik VM က .dex ဖိုင္ေတြကို ဖတ္ႏိုင္တယ္၊
Eclipe သို႔ Java IDE နဲ႔ ေရးထားတဲ့ class ဖိုင္ေတြကို .dex ဖိုင္ေတြျဖစ္ေအာင္ javac (java compiler) နဲ႔ compile လုပ္တယ္ (.dex ဖိုင္ေတြက .jar ဖိုင္ေတြန႔ဲတူတယ္)၊ .dex ဖိုင္ေတြကို Dalvik VM က Run ပီး .obj ဖိုင္ အျဖစ္ေျပာင္းေပးတယ္၊ ဒီ Object ဖိုင္ေတြကိုေတာ့ Kernel က နားလည္ပီး ေနာက္ပိုင္း အလုပ္ဆက္လုပ္တယ္၊ (တကယ္ေတာ့ Dalvik VM အေၾကာင္းကို အေသးစိတ္ေျပာရင္ စိတ္၀င္စားစရာ အလြန္႔အလြန္ေကာင္း သလို Java ကို Sun ကုမၼဏီ က ၀ယ္လိုက္တဲ့ Oracle နဲ႔ Google ၾကား Dalvik VM အေၾကာင္း အျငင္းပြားမူကလဲ တကယ့္ကို စိတ္၀င္စားစရာေကာင္းပါတယ္၊ Java Virtual Machine ကို Mobile နဲ႔ သင့္ေတာ္ေအာင္ Develop လုပ္လိုက္ရာမွ ပိုျမန္ပီးပိုေကာင္းလားတဲ့ ရလဒ္ျဖစ္တဲ့ Dalvik Virtual Machine ရဲ့ Apache Harmony project က စပီး ကုတ္ေတြနဲ႔ တည္ေဆာက္ပံုကိုပါေနာက္ပိုင္း အေသးစိတ္ေရးမယ္၊)
Application Framework
Application Framework ရဲ့ အေပၚမွာေတာ့ Applications Layer ပါရွိပါတယ္၊ အခ်ိဳ႕ Application ေတြကေတာ့ System Applicatoins ေတြျဖစ္ပီး မူတူညီတဲ့ ၀င္ေဆာင္မွဴ ေတြကိုေပးႏိုင္ပါတယ္၊ ဥပမာ အားျဖင့္ Applications တိုင္းရဲ့ Manifast ထဲမွာ မပါမျဖစ္ပါရတဲ့ Launcher ပါ၊ framework နဲ႔ System ui apks ေတြလဲရွိပါေသးတယ္၊ System ui apks ကေတာ့ Icon နဲ႔ dialog box style ေတြကို ဖန္တီးေပးပါတယ္၊
Applications
အေပၚဆံုးက ကၽြန္ေတာ္တို႔ရဲ့ applications ေတြပဲ၊
1. မျဖစ္မေနသံုးရတဲ့ Libraries ေတြက ဘာေတြလဲ၊
2. Bootloader ကို ဘယ္လို Develop လုပ္မလဲ၊
3. ဖုန္း ကုမၼဏီေတြက Android OS ကို ဘယ္လို အဆင့္ဆင့္ စိတ္ႀကိဳက္
Develop လုပ္ၾကလဲ၊
4. Java ဖိုင္ Run တဲ့ ေနာက္ကြယ္က အဆင့္ဆင့္ ျဖစ္စဥ္၊
5. imei ကို ဘယ္မွာ သိမ္းလဲ၊ imei နံပါတ္ကို ရွာတဲ့ Application ကို ဘယ္လို ေရးလဲ၊
6. System Font ေတြအေၾကာင္း ေလ့လာျခင္း ( ျမန္မာစာ အတြက္ )
7. ဖုန္းတစ္ခုလံုး Hardware အဆင့္ပဲထားပီး sofrware program ေတြအားလံုး ဘယ္လို ထည့္သြင္းတည္ေဆာက္မလဲ၊
8. low-level ( assambler )၊ mid-level ( Java, C#)၊ Height Level (C,C++) တို႔ႏွင့္ Android ဆက္စပ္ ပံု၊
9. embedded Program အေၾကာင္း၊
10. Microcontroller ေတြကို ဘယ္လို ထိန္းခ်ဳပ္လဲ၊
ဒီပိုုစ့္ကိုု pdf ဖိုုင္ အျဖစ္ ေဒါင္းလုုဒ္လုုပ္လိုု ပါက ေအာက္ပါ လင့္တြင္း ေဒါင္းလုုပ္ရယူႏုုိင္ပါသည္
http://goo.gl/KKvV3c
ေက်းဇူးျပဳ၍
ဒီပို႔စ္ကို BrighterMyanmar အဖြဲ႔႕ ေရးတာျဖစ္ပီး အကယ္၍ ပို႔စ္ မွာ အမွား ပါေနတာေတြ႔ရင္ ေက်းဇူးျပဳၿပီး brightermyanmar@gmail.com ကို ေၾကာင္းၾကားေပးပါခင္ဗ်ာ၊ ကၽြန္ေတာ္တို႔ ေသခ်ာ ျပန္စီစစ္ပီး ျပင္ပါ့မယ္
0 comments:
Post a Comment
Download link ကိုႏွိပ္ျပီး ေနာက္ tab တစ္ခုနဲ႕ page တစ္ခုေပၚလာပါလိမ့္မယ္။ ငါး စကၠန္႕ေလာက္ ေစာင့္ေပးလိုက္ပါ။ ညာဘက္ေထာင့္မွာ Skip ဆိုတဲ့ button ေလးေပၚလာပါလိမ့္မယ္။ အဲဒီ skip ဆိုတဲ့ button ကိုႏွိပ္လုိက္ရင္ download ဆြဲလိုရတဲ့ page တစ္ခုက်လာပါလိမ့္မယ္။ အဲ့ဒီမွာ download လုပ္ႏိုင္ပါၿပီဗ်ာ