±à¼ÍƼö: |
±¾½ÚÖ÷Òª×ܽáÁË
»ªÎªºèÃÉOSÓÐʲô´´Ð£¬ÊÇ·ñ×ÔÖ÷Ñз¢ÍêÈ«¿ªÔ´£¬±¾ÎÄ´øÄãÉîÈëºèÃɵÄÊÀ½ç¡£
±¾ÎÄÀ´×ÔÓÚÌÚѶ¼¼Êõ¹¤³Ì£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢³õʶºèÃÉ
¹úÄÚÔÚ¼ÆËã»ú»ù´¡ºËÐÄÁìÓòȱ·¦½¨Ê÷£¬Ò»Ö±Ã»ÓÐ×ÔÖ÷֪ʶ²úȨµÄ²Ù×÷ϵͳ¡£Ö®Ç°ÓÖ³ö¹ý¶àÆðÖîÈç ººÐ¾ £¬ ºìоä¯ÀÀÆ÷ µÈÔì¼Ùʼþ£¬ÓÌÈçÏÖʵÊÀ½çµÄ¡°ÀÇÀ´ÁË¡±£¬Ê¹¹úÈ˶ÔÈκδò×Å×ÔÖ÷֪ʶ²úȨÐû´«µÄ²úÆ·¶¼»á´÷×Å·Å´ó¾µÈ¥¿´£¬ÄÇôºèÃɵ½µ×ÊDz»ÊǸöÀýÍ⣿
ºèÃÉÊǸöºÜ·ºµÄ¸ÅÄºèÃɲ»½öÒ»¸ö²Ù×÷ϵͳ£¬»¹ÊÇÒ»¸öÉú̬¡£ºèÃÉÕâ¸ö´ÊÔÚ²»Í¬µÄ³¡¾°ÏÂÖ¸´ú²»Í¬µÄ¶«Î÷¡£¸ù¾Ý»ªÎª¹Ù·½IDE DevEco Studio µÄÓ¦ÓÃÄ£°å¿ÉÒÔ¿´³ö£¬Ä¿Ç°ºèÃÉÖ§³ÖµÄÉ豸ÓÐÊÖ»ú£¬Æ½°å£¬µçÊÓ£¬ÊÖ±í£¬Æû³µ£¬ÒÔ¼°Ïà»úµÈС¼ÒµçµÈµÈ£¬²»Í¬µÄ¼¼ÊõÕ»¿ª·¢µÄÓ¦ÓÃÖ§³ÖµÄÉ豸ÖÖÀàÒ²²»Í¬¡£ÆäÖÐJavaÀàÐ͵ÄÓ¦ÓÃÖ§³ÖµÄÉ豸ÀàÐÍ×îΪ·á¸»£¬JSÀàÐ͵ÄÓ¦ÓÃÆä´Î£¬C++Ó¦ÓÃÖ§³ÖµÄÀàÐÍ×îÉÙ¡£

ÕâЩÉ豸´óÌåÉÏ¿ÉÒÔ·ÖΪǶÈëʽºÍ·ÇǶÈëʽÁ½ÖÖ¡£¸ù¾ÝÓ¦ÓÃËùÐèÄÚ´æ´óСÓÖ¿ÉÒÔ·ÖΪL0-L5Áù¸ö¼¶±ð£º

ÔÚǶÈëʽÁìÓò£¬ ºèÃÉÖ¸ÊÇÒ»¿îǶÈëʽ²Ù×÷ϵͳ£¬ºèÃɵĺËÐÄΪLiteOS£¬ÏµÍ³Ö»ÄÜÔÚÅäÌ×µÄÓ²¼þ£¨¿ª·¢°å£©ÉÏÔËÐУ¬²¢·ÇͨÓõIJÙ×÷ϵͳ£¬OpenHarmonyÊÇÆä¶ÔÍ⿪ԴµÄ°æ±¾£¬ÔÚ2020Äê9ÔÂÔÚgiteeÉÏ¿ªÔ´OpenHarmony 1.0£¬¹ØÓÚÕâ¿îϵͳ»ªÎª×ÔÉíµÄÎĵµ±È½ÏǷȱ£¬ÕâÀïÓнÏΪÏêϸµÄ ¿ª·¢ÕßÎĵµ ¡£
ÔÚ·ÇǶÈëʽÁìÓò£¬ ºèÃÉÖ¸µÄÊÇÒ»¿î½ÐºèÃɵÄÊÖ»ú²Ù×÷ϵͳ£¬×î½üÍøÉÏÈÈÒéµÄ ¡°´ËÓ¦ÓÃרΪ¾É°æºèÃÉ´òÔ족 ÁîÈËÒÉñ¼´ÔÉú¡£

ÒòΪ½ØÖÁĿǰºèÃÉÖ»·¢²¼ÁËÒ»¸ö°æ±¾£¬¸ù±¾²»´æÔÚËùνµÄ¾É°æºèÃÉ¡£ÓÉÓÚºèÃɵÄÊÖ»ú°æ²Ù×÷ϵͳ²¢Î´¿ªÔ´£¬ÌáʾÓïÓÖÓëandroidÈç´ËÀàËÆ£¬²»µÃ²»ÁîÈË»³ÒÉÊÇ×Ö·û´®ÅúÁ¿Ìæ»»¡£ÄÇôÊÂÊµÕæÊÇ×Ö·û´®Ìæ»»Èç´Ë¼òµ¥Âð£¿ÏÂÎĽ«»áÓèÒÔ·ÖÎö¡£
×ܵÄÀ´Ëµ£¬ºèÃɾø²»½ö½öÖ¸µÄÊDzÙ×÷ϵͳ£¬»ªÎªµÄÒ°ÐÄÒ²¾ø²»Ö¹ÓÚ´Ë£¬»ªÎªÊÇÒª´òÔìÒ»¸ö½ÐºèÃɵÄÉú̬£¬ÎÒÃDz»ÅųýδÀ´»áÓкèÃÉSDKÖ²ÈëÆäËü³§É̵ÄÉ豸£¬Ê¹ÕâЩÉ豸Ҳ¾ß±¸ÔËÐкèÃÉÓ¦ÓõÄÄÜÁ¦£¬ÉõÖÁÊÇÔËÐÐÔÚ´«Í³µÄWindows¡¢LinuxÉϵÄÉ豸£¬ÄÇôÕâЩÉ豸Ҳ¿ÉÒÔ˵ÊÇÒ»¸öºèÃÉÉ豸£¬ÊǺèÃÉÉú̬µÄÒ»²¿·Ö¡£
¶þ¡¢ºèÃɺËÐÄ
¾µ÷ÑУ¬ÎÒÃÇÈÏΪºèÃÉÉú̬µÄºËÐÄÊÇÒÔÏÂËĵ㣺
1¡¢¶àÉ豸¼æÈÝ
¼´¿ª·¢³öÀ´µÄÓ¦Ó㬿ÉÒÔ¸²¸Ç¶àÖÖÀàÐ͵ÄÉ豸£¬ÆÁ±Îµ×²ãOSµÄ²îÒ죬ÀàËÆÄ¿Ç°»ðÈ鵀 Flutter Ëù½â¾öµÄÎÊÌâ¡£

2¡¢¿¨Æ¬Ê½Ó¦ÓÃ
ÔÚ¶àÉ豸¼æÈݵĻù´¡ÉÏ´øÀ´Ò»Öµģ¬¸ßÐÔÄܵĽ»»¥ÌåÑé¡£¿ÉÒÔÀí½âΪ¿çÉ豸£¬¿çƽ̨£¬¿çÍøÂçµÄÇáÁ¿Widget¡£


3¡¢Èí×ÜÏß
ÔÚÒÔÉÏÁ½µãµÄ»ù´¡ÉÏ£¬½µµÍÉ豸¼ä»¥Áª»¥Í¨µÄÃż÷¡£Ö÷Òª»ùÓÚÒÔÏÂÈýµã¸Ä½ø£º

£¨1£©É豸¼äµÄ·¢ÏÖºÍÁ¬½Ó£º´ÓÊÖ¶¯·¢ÏÖ£¬½ø»¯³É×Ô·¢ÏÖ£º

£¨2£©¶àÉ豸»¥ÁªºóµÄ×éÍø¼¼Êõ£ºÈí×ÜÏß×éÍø-Òì¹¹ÍøÂç×éÍø£º

£¨3£©¶àÉ豸¶àÐÒé¼äµÄ¸ßЧ´«Êä¼¼Êõ£º

4¡¢Í¨ÐŰ²È«
ҪʵÏÖÉ豸¼äµÄ»¥Áª»¥Í¨£¬ÄÇô°²È«ÎÞÒÉÊÇÌØ±ðÖØÒªµÄ»·½Ú¡£ÕâÀïµÄÎÊÌâÊÇÈçºÎ±£Ö¤ÕýÈ·µÄÈËʹÓÃÕýÈ·µÄÉ豸£¬Ïû·ÑÕýÈ·µÄÊý¾Ý¡£¼´Òª½â¾öÈçÏÂÈý¸öÎÊÌ⣺
£¨1£© ÈçºÎ±£Ö¤Ïû·ÑÕß¶ÔÉ豸µÄ¼øÈ¨Êǰ²È«µÄ£¬±£Ö¤É豸ÊÇÔ³§Éú²ú£¬Ã»Óб»´Û¸ÄµÄ£¿£¨ÕýÈ·µÄÉ豸£©
£¨2£© ÈçºÎ±£Ö¤Ïû·ÑÕß²Ù×÷É豸Êý¾ÝÊǰ²È«µÄ£¿(ÕýÈ·µÄÈË)
£¨3£©ÈçºÎ±£Ö¤Ïû·ÑÕßÊý¾Ý°²È«?£¨ÕýȷʹÓÃÊý¾Ý£©
ºèÃÉÔÚϵͳºÍÊý¾ÝͨÐŰ²È«·½ÃæÓнÏΪÍêÉÆµÄ¿¼ÂÇ¡£



Èý¡¢ÏµÍ³²ã·ÖÎö
»ùÓÚºèÃÉÒѾ¿ªÔ´µÄ openharmony Ô´Âëͳ¼Æ£¬openharmony°üº¬C´úÂë2KWÐУ¬C++ 500WÐС£

1¡¢Äں˲¿·Ö
ºèÃÉÐû´«µÄ΢Äںˣ¬²¢Î´ËµÃ÷ÊÇÄĸöºèÃÉ£¬»ªÎªÄ¿Ç°ÒѾ·¢²¼µÄÄں˰üÀ¨£º
1¡¢Linux ÃæÏòÊÖ»ú (L5¼¶±ðÉ豸)
2¡¢LiteOS-a ÃæÏòÓÐMMUµÄÉ豸 (>=L1¼¶±ð)
3¡¢LiteOS-m ÃæÏòÎÞMMUµÄǶÈëʽÉ豸 (L0¼¶±ð)
ĿǰÐÐÒµÄÚ¶ÔÄں˽øÐзÖÀàÖ÷ÒªÊÇ£º

΢ÄÚºËÓŵ㣺
1¡¢´úÂëÁ¿Ð¡£¬¿ÉÒÔÐÎʽ»¯ÑéÖ¤£¬¿ÉÒÔ¼õÉÙbugÁ¿£¬¼¸ºõ¿ÉÒÔ0 bug£¬ÁíÍâ¸ü¼Ó·½±ãÒÆÖ²¡£
2¡¢¸÷¸öϵͳ×é¼þ»òÕß·þÎñÈç¹û´æÔÚÎÊÌâ¿ÉÒÔÖ±½ÓÖØÆô·þÎñ£¬¼õÉÙºËÐÄ×é¼þÒì³£¶ÔÕû¸öϵͳµÄÆÆ»µ£¬²¢°´Ðè×é֯ϵͳ·þÎñ¡£
3¡¢¸÷×é¼þ¿ÉÒÔ°´Ðè¼ÓÔØ£¨ÏÖÔÚºêÄÚºËÒ²Ö§³ÖÄ£¿é¶¯Ì¬¼ÓÔØÐ¶ÔØ£©¡£
4¡¢¿ÉÒÔ¹æ±ÜGPLÐÒé¡£
΢ÄÚºËȱµã£º
1¡¢ËùÓÐ×ÊÔ´»ñÈ¡¶¼ÐèҪͨ¹ýIPC£¬IPCÓÖ±ØÐëÏÝÈëÄںˣ¬ËùÒԻᵼÖÂÆµ·±µÄÏÝÈëÄںˣ¬»òÕß¶à´Î¿½±´£¬µ¼ÖÂÐÔÄÜϽµ¡£µ±È»IPCͨÐÅЧÂÊËæ×ÅÉîÈëÑо¿Óë¼¼Êõ·¢Õ¹Öð²½Ìá¸ß¡£
2¡¢¶ÔÓÚÖжÏÏìÓ¦£¬ÐèÒªÓ³Éäµ½Óû§¿Õ¼äÔÙ´¦Àí£¬Ð§Âʽϵ͡£
3¡¢´óÁ¿Ê¹ÓÃijЩϵͳ·þÎñµÄʱºò£¬»áµ¼Ö½ø³ÌÉÏÏÂÎÄÇл»£¬Ôö¼Óϵͳ¸ºµ£¡£

¶øÄ¿Ç°¿ªÔ´³öÀ´µÄºèÃÉ´úÂë LiteOS-a°´ÕÕÒµ½ç¶ÔÄں˷ÖÀàÒÀ¾ÉÊǺêÄںˡ£ÖÁÓÚ»ªÎªÊÇ·ñ´æÔÚ΢Äں˵«Ã»ÓпªÔ´£¬»¹ÊÇÔÚʵÏÖºèÃɹý³ÌÖУ¬ÓÖÖØÐÂÑ¡ÔñÁ˺êÄںˣ¬ÎÒÃDz»µÃ¶øÖª¡£
1.1 LiteOS-M
LiteOS-MºÍHWÒÔǰ¿ªÔ´µÄLite OS»ù±¾Ïàͬ£¬½øÐв¿·Ö½á¹¹ÐÔµ÷Õû£¬µ±Ç°Ö»ÊÊÓÃÓÚcortex-m3¡¢cortex-m4¡¢cortex-m7¡¢risc-vоƬ¼Ü¹¹£¬ÊÇ´¿´âµÄRTOSϵͳ£¬Í¨¹ýKALÓëÉϲã·þÎñÆ¥Åä¡£

1.2 LiteOS-A
LiteOS-AÊÇHW»ùÓÚLiteOS½øÐÐÑݽøµÄ£¬½øÐÐ ¶à½ø³Ì£¬¶àºË£¬ÐéÄâÄڴ棬IPCµÈÖØÐ·â×°£¬¾¡Á¿ÀàËÆÓÚLinux£¬µ«ÊǾ¡Á¿¼ò»¯ÄÚºËʵÏÖ¡£OpenHarmony LiteOS-AÄں˼ܹ¹Í¼£º

LiteOS-AÊÇHW»ùÓÚLiteOS½øÐÐÑݽøµÄ£¬½øÐÐ ¶à½ø³Ì£¬¶àºË£¬ÐéÄâÄڴ棬IPCµÈÖØÐ·â×°£¬¾¡Á¿ÀàËÆÓÚLinux£¬µ«ÊǾ¡Á¿¼ò»¯ÄÚºËʵÏÖ¡£
LiteOS-AÏà¶ÔÓÚ´¿´âµÄRTOSÔöÇ¿¹Ø¼üÌØÐÔ¼ò½é£º ¶à½ø³Ì£º »ùÓÚtask½øÐзâ×°£¬½ÏΪ¼òµ¥µÄ½ø³ÌÓëÏ̵߳÷¶È£¨Ö§³Öʱ¼äƬºÍFIFOµ÷¶È£©£»
¶àºË£º È«¾ÖÁ´±í¡¢ËùÓÐCPU¹²Ïí£¬Ö§³Ö¿ÕÏÐÂÖѯµ÷¶È£¨²»Ö§³Ö¸ºÔؾùºâ£©£¬¿ÉÖ§³ÖÇ׺ÍÉèÖ㬿ɰ󶨺ËÔËÐС£
ÐéÄâÄÚ´æ £ºÄں˾²Ì¬Ó³É䣬¾²Ì¬Ó³ÉäÌáÉýÐéʵת»»Ð§ÂÊ£¬×îÓÐÇø¼ä·Ö²¼£¨£°££±GÓû§¿Õ¼ä£¬£±££´GÄں˿ռ䣬¼õÉÙÓû§Ì¬½ø³ÌÒ³±íÏ£¬Óû§Ì¬Í¨¹ýȱҳÒì³£°´Ðè»ñÈ¡ÄÚ´æ¡£ ¶¯Ì¬Á´½Ó£º °´Ðè¼ÓÔØ£¬¶àÓ¦Óù²Ïí´úÂë¶Î£¬¼ÓÔØ×îСµ¥ÔªÎªÒ³£¬·ûºÅ°ó¶¨£¬Ö§³ÖÁ¢¼´ºÍÑÓʱ°ó¶¨£¬¼ÓÔØµØÖ·Ëæ»ú»¯£¬½ø³Ì´úÂë¶Î£¬Êý¾Ý¶Î£¬¶ÑÕ»¶ÎµØÖ·Ëæ»ú»¯¡£²¢ÇÒÔËÐбê×¼ELFÎļþ¡£
½ø³ÌͨÐÅ£¨IPC£©£º Ö§³Ö±ê×¼µÄposix½ø³Ì¼äͨÐÅ£¬ÈçMqueue,pipe,fifo.signal¡£Í¬Ê±Ìí¼ÓÁËLite IPC£¨ÀàËÆÓëAndroid binderµ«ÊǼòµ¥µÃ¶à£©£¬ROMºÍRAMÕ¼Óò»³¬¹ý30K£¬´ïµ½ÇáÁ¿£¬»ùÓÚ°×Ãûµ¥¿ØÖƵķþÎñ·ÃÎÊȨÏÞ£¬ÌáÉý°²È«£¬Í¨¹ýÄÚ´æÓ³ÉäʵÏÖµ¥´Î¿½±´£¬ÊµÏÖ¸ßЧ¡£
ϵͳµ÷Ó㺠ͨ¹ýMUSLʵÏÖϵͳµ÷ÓÃÖ§³Ösyscall APIºÍVDSO API¡£VDSOÊǼõÉÙϵͳµ÷ÓÿªÏúµÄ·½Ê½£¬LinuxÒ²Ö§³Ö¡£±£Ö¤·þÎñÓëÄں˷ÖÀë¡£²¢ÇÒ·þÎñºÍÓ¦Óò»ÄÜËæÒâ·ÃÎÊÄںˡ£
ȨÏÞ¹ÜÀí£º ½ø³ÌÁ£¶ÈµÄȨÏÞ»®·ÖÓë¹ÜÀí£¬Íê³ÉDAC·ÃÎÊ¿ØÖÆ£¬ÒÔ½ø³ÌUIDµÄÅäÖã¬Áé»î»®·ÖÎļþ×ÊÔ´¹éÊôÓë¹Ü¿Ø£¬ÌṩUGO£¨user,group,other£©µÄȨÏÞ·ÖÅ䣬Âú×ã»ù±¾µÄÎļþ¹²ÏíÐèÇóºÍPosix¹æ·¶¡£
ÐéÄâÎļþϵͳ£º VFS¹ÜÀí¸ùĿ¼£¬¹ÒÔØµãÄÚĿ¼ÓÐFS¹ÜÀí¡£Í¨¹ýBCacheºÍPCacheÌáÉýÎļþϵͳ¶ÁдËÙ¶È¡£
POSIX±ê×¼¿â£º »ùÓÚMusl CµÄposix±ê×¼¿â£¬µ±Ç°Ö§³Ö1000+µÄ±ê×¼Posix½Ó¿Ú¡£Óû§Ì¬Ê¹ÓÃÈ«Á¿Musl£¬C++ʹÓÃlibC++£¬ÄÚºËʹÓò¿·ÖMusl¡£
ÒÔÉÏÌØÐÔ¶¼»ù±¾ÉÏ»ùÓÚLinuxµÄ¼ò»¯°æ±¾£¬±£³ÖÄÚºËСÐÍ»¯£¬²¢ÇÒ¾¡Á¿ÓµÓÐLinuxµÄ¹¦ÄÜÌØÐÔ¡£

1.3 Linux
ºèÃÉOS LinuxÄں˻ùÓÚLinux 4.19°æ±¾Äںˣ¬Ìí¼ÓÈçϹ¦ÄÜ¡£
²¹¶¡ËùÉæ¼°µÄCVE(Common Vulnerabilities and Exposures)°²È«Â©¶´ÊÇͨ¹ýNVD (https://nvd.nist.gov/)¹Ù·½»ú¹¹ÊÕ¼¯£¬ÇÒ²¹¶¡ÒѾ½øÈëLTS 4.19.y·ÖÖ§»òÖ÷Ïߣ¬Ö÷񻃾¼°´æ´¢(btrfs/scsi/)¡¢ÍøÂç(net/bpf/mwifiex) ¡¢Çý¶¯(xen/nfc)£¬¶ÔÓ¦CVEÁбí²Î¿¼commitÐÅÏ¢ÖÐCVE×Ö¶ÎÐÅÏ¢¡£
HDFÇý¶¯¡¢binder ipcת·¢¹¦ÄܵÈÌØÐÔÖ§³Ö¡£
- ÌØ¶¨Ð¾Æ¬¼Ü¹¹Çý¶¯²¹¶¡£¨±ÈÈçHi3516DV300£©
vendor³§ÉÌÌṩµÄÌØ¶¨Ð¾Æ¬¼Ü¹¹Çý¶¯´úÂ룺
hisi_linux-4.19_hos_l2.patch: ÔÚHi3516DV300оƬÉÏÖ§³Öarm¼Ü¹¹µÄÄÚºËÆô¶¯£¨DTSµÈ£©¼°¶ÔÓ¦µÄdrm/mmcµÈÇý¶¯µÄÖ§³Ö¡£
2¡¢×Óϵͳ
openharmony LiteOS-A°üº¬ÈçÏÂ×Óϵͳ£º
- ϵͳ»ù±¾ÄÜÁ¦×Óϵͳ¼¯£ºÎª·Ö²¼Ê½Ó¦ÓÃÔÚ¶àÉ豸ÉϵÄÔËÐС¢µ÷¶È¡¢Ç¨ÒƵȲÙ×÷ÌṩÁË»ù´¡ÄÜÁ¦£¬ÓÉ·Ö²¼Ê½Èí×ÜÏß¡¢·Ö²¼Ê½Êý¾Ý¹ÜÀí¡¢·Ö²¼Ê½ÈÎÎñµ÷¶È¡¢¹«¹²»ù´¡¿â¡¢¶àÄ£ÊäÈ롢ͼÐΡ¢°²È«¡¢AIµÈ×Óϵͳ×é³É¡£
- »ù´¡Èí¼þ·þÎñ×Óϵͳ¼¯£ºÌṩ¹«¹²µÄ¡¢Í¨ÓõÄÈí¼þ·þÎñ£¬ÓÉʼþ֪ͨ¡¢µç»°¡¢¶àýÌå¡¢DFX£¨Design For X£© µÈ×Óϵͳ×é³É¡£
- ÔöÇ¿Èí¼þ·þÎñ×Óϵͳ¼¯£ºÌṩÕë¶Ô²»Í¬É豸µÄ¡¢²îÒ컯µÄÄÜÁ¦ÔöÇ¿ÐÍÈí¼þ·þÎñ£¬ÓÉÖÇ»ÛÆÁרÓÐÒµÎñ¡¢´©´÷רÓÐÒµÎñ¡¢IoTרÓÐÒµÎñµÈ×Óϵͳ×é³É¡£
- Ó²¼þ·þÎñ×Óϵͳ¼¯£ºÌṩӲ¼þ·þÎñ£¬ÓÉλÖ÷þÎñ¡¢ÉúÎïÌØÕ÷ʶ±ð¡¢´©´÷רÓÐÓ²¼þ·þÎñ¡¢IoTרÓÐÓ²¼þ·þÎñµÈ×Óϵͳ×é³É¡£
¸ù¾Ý²»Í¬É豸ÐÎ̬µÄ²¿Êð»·¾³£¬»ù´¡Èí¼þ·þÎñ×Óϵͳ¼¯¡¢ÔöÇ¿Èí¼þ·þÎñ×Óϵͳ¼¯¡¢Ó²¼þ·þÎñ×Óϵͳ¼¯ÄÚ²¿¿ÉÒÔ°´×ÓϵͳÁ£¶È²Ã¼ô£¬Ã¿¸ö×ÓϵͳÄÚ²¿ÓÖ¿ÉÒÔ°´¹¦ÄÜÁ£¶È²Ã¼ô¡£
3¡¢¶àÄÚºËÖ§³Ö

ÈçÉÏͼËùʾ£¬¶ÔÓÚºèÃÉOS£¬Æä¿ÉÒÔÖ§³Ö¸÷ÖÖÄںˣ¨Ä¿Ç°Ö§³ÖLiteos-m,LiteOS-a,Linux£©¡£Æäͨ¹ýKAL²ã¶ÔÉϲãÌṩͳһµÄAPI½Ó¿ÚÄÜÁ¦¡£
ÎÒÃÇ¿ÉÒÔÇå³þµÄ¿´µ½KAL Ö§³ÖͳһÊÇͨ¹ýÖ§³ÖPOSIXºÍCMSIS£¨Õë¶Ôarm Cotex-m µÄ³éÏó£¬×öµ½ÔÚRTOS²ãÃæµÄ¾¡Á¿Í³Ò»£©¶Ôµ×²ãÄں˽øÐÐͳһ·â×°¡£×öµ½»ùÓÚÉϲãAPIµÄ³ÌÐò¿ÉÒÔÔÚÏàÓ¦µÄCPUϱàÒëͨÓã¬Ç¿µ÷Ö»ÄÜ ±àÒëͨÓà ¡£
ÆäÖмæÈÝPOSIXµÄ¿âÊÇMusl-libc¡£¸Ã¿âÊÇÒ»¸öÇáÁ¿¼¶µÄC±ê×¼¿â£¬Éè¼Æ×÷ΪGNU C library (glibc)¡¢ uClibc»òAndroid BionicµÄÌæ´úÓÃÓÚǶÈëʽ²Ù×÷ϵͳºÍÒÆ¶¯É豸¡£Ëü×ñÑPOSIX 2008¹æ¸ñºÍ C99 ±ê×¼£¬²ÉÓÃMITÐí¿ÉÖ¤ÊÚȨ£¬Ê¹ÓÃMuslµÄLinux·¢ÐаæºÍÏîÄ¿°üÀ¨sabotage£¬bootstrap-linux£¬LightCube OSµÈµÈ£¬È»ºóͨ¹ýHDFÀ´Í³Ò»Çý¶¯Ä£¿éµÄ±àдµ÷ÊÔ¹ý³Ì¡£ÒÔ´ËÀ´¼æÈÝÇý¶¯É豸¡£
POSIX±íʾ¿ÉÒÆÖ²²Ù×÷ϵͳ½Ó¿Ú£¨Portable Operating System Interface of UNIX£¬ËõдΪ POSIX £©£¬POSIX±ê×¼¶¨ÒåÁ˲Ù×÷ϵͳӦ¸ÃΪӦÓóÌÐòÌṩµÄ½Ó¿Ú±ê×¼¡£POSIX±ê×¼ÒâÔÚÆÚÍû»ñµÃÔ´´úÂë¼¶±ðµÄÈí¼þ¿ÉÒÆÖ²ÐÔ¡£»»¾ä»°Ëµ£¬ÎªÒ»¸öPOSIX¼æÈݵIJÙ×÷ϵͳ±àдµÄ³ÌÐò£¬Ó¦¸Ã¿ÉÒÔÔÚÈÎºÎÆäËüµÄPOSIX²Ù×÷ϵͳ£¨¼´Ê¹ÊÇÀ´×ÔÁíÒ»¸ö³§ÉÌ£©ÉϱàÒëÖ´ÐС£
CMSIS£¨Cortex Microcontroller Software Interface Standard£©±ê×¼£¬ËüÊÇARMͬ¸÷¸ö΢¿ØÖÆÆ÷¹©Ó¦ÉÌ¡¢¹¤¾ß¹©Ó¦É̺ÍÈí¼þ½â¾ö·½°¸Ò»Æð¿ª·¢µÄCortex΢¿ØÖÆÆ÷Èí¼þ½Ó¿Ú±ê×¼¡£ËüʹµÃ΢¿ØÖÆÆ÷ºÍÈí¼þ¹©Ó¦ÉÌ¿ÉÒÔʹÓÃÒ»ÖµÄÈí¼þ½á¹¹À´¿ª·¢Cortex΢¿ØÖÆÆ÷µÄÈí¼þ¡£
CMSIS-RTOSÊÇCMSISµÄÒ»²¿·Ö£¬Ëü±¾ÉíÊÇÒ»ÖÖAPI¹æ·¶£¬¸÷³§ÉÌ¿ÉÒÔ»ùÓÚCMSIS-RTOS¹¹½¨×Ô¼ºµÄʵʱ²Ù×÷ϵͳ£¨RTOS£©¡£ÓÉÓÚ»ùÓÚCMSIS-RTOSµÄAPIÊDZê×¼»¯µÄ£¬ËùÒÔ»ùÓÚÕâЩAPI¿ª·¢µÄÓ¦ÓÃÈí¼þ£¬²»ÐèÒª½øÐжîÍâµÄÒÆÖ²¿ª·¢¹¤×÷£¬¾Í¿ÉÅÜÔÚÈκÎÖ§³ÖCMSIS-RTOSµÄOSÉÏ¡£Ëæ×Å»ùÓÚCMSIS-RTOSµÄÖмä¼þÔ½À´Ô½¶à£¬Ö§³ÖCMSIS-RTOSºóµÄOSÒ²»áÒò´Ë»ñµÃ¸ü¶àµÄÖмä¼þ¡£
4¡¢HDFÇý¶¯¼Ü¹¹
OpenHarmonyÇý¶¯Ö÷Òª²¿ÊðÔÚÄÚºË̬£¬µ±Ç°Ö÷Òª²ÉÓþ²Ì¬Á´½Ó·½Ê½£¬ËæÄÚºË×Óϵͳ±àÒëºÍϵͳ¾µÏñ´ò°ü¡£

Çý¶¯¿ò¼Ü½»»¥Á÷³Ì

ÈçÉÏͼËùʾ£¬·¢²¼É豸·þÎñ£¬¼´ÔÚVFS´´½¨¹Ì¶¨µÄĿ¼»òÕßÉ豸½Úµã£¬²¢ÇÒͨ¹ýHDI½øÐгéÏó¡£
ÏÂÁÐÊÇÏà¹ØÏµÍ³µÄÊÊÅä²ã£¬ÈÃÏàÓ¦µÄÄÚºËÖ§³ÖHDFÄÜÁ¦¡£È»ºóÇý¶¯¿ª·¢¹¤³Ìʦͨ¹ý¡¡drivers_framework¡¡ÌṩµÄÏà¹Ø¿ò¼ÜÄÜÁ¦£¬±àдHDFÖ§³ÖµÄ¸÷ÖÖÇý¶¯£¬ËùÒÔHDFͳһÇý¶¯£¬Êǽ¨Á¢ÔÚ¶Ô¸÷ÖÖÄں˼¯³ÉµÄHDF¡¡ÄÚºËÖ§³ÖÇý¶¯×÷Ϊת»»²ã¡£ËùÒÔÈç¹ûÓÐеÄÄÚºËÐèÒªÊÊÅ䣬ÄÇôkhdfÐèÒª¸ù¾ÝÏàÓ¦µÄÄںˣ¬½øÐÐÒÆÖ²£¬¾ßÓнϴó¹¤×÷Á¿¡£
Ïà¹ØÔ´ÂëĿ¼ÊÇ£º

ÏÂͼÊÇHDF-Framework²ã¡£ÓÃÓÚÖ§³ÖHDFͳһÇý¶¯µÄ¿ª·¢£¬¼ÓÔØÉúЧ»òÕßÐ¶ÔØ¡£

ͨ¹ý´úÂëÖеÄuhdf/uhdf2¿ÉÒÔ¿´µ½£¬ºèÃÉOSÒ²ÔÚ³¢ÊÔ½«²¿·ÖÇý¶¯·ÅÈëÓû§¿Õ¼ä£¬Ò²¾ÍÊÇÏò΢Äںˣ¨»òÕß»ìºÏÄںˣ©·½ÏòÑݽø¡£µ«Èç¹ûÊÇʹÓÃLinuxÄںˣ¬Í¨³£Ò²¿ÉÒÔʹÓñê×¼µÄLinuxÄÚºËÇý¶¯Ä£ÐͱàдÇý¶¯¡£Ö»ÊDz»·½±ãÒÆÖ²µ½ÆäËûµÄºèÃÉ·ÇLinuxÄں˵ÄÉ豸¡£²»¹ý²»Í¬µÄÉ豸£¬ÆäCPUÓëÍâÉè¿ÉÄܲ¢²»Ïàͬ£¬·Ö±ð±àдҲ¿ÉÄÜ¡£
ËÄ¡¢Èí×ÜÏß·ÖÎö
ºèÃÉÌṩµÄ±ê×¼Èí¼þ×ÜÏß¿ò¼Üͼ£º

Ö÷Òª´úÂëĿ¼ÈçÏÂͼ£¬liteºÍstandardÓÐÒ»¶¨²îÒì¡£Õë¶ÔliteÉ豸£¬Ö»Óз¢ÏÖ£¬ÈÏÖ¤´«Êä¡£

Õë¶Ô±ê׼ϵͳ£¬ÔòÌí¼ÓÁË×éÍø£¬²¢ÇÒÒÔclient(SDKĿ¼)+Server(coreĿ¼)µÄ·½Ê½Éè¼Æ¡£

ÏÖÔÚ¿ªÔ´³öÀ´µÄopenharmony·½°¸×ÜÌåÔ¼ÊøÎªÔÚͬһ¾ÖÓòÍøÏ½øÐÐÈí×ÜÏß»¥Í¨¡£Ä¿Ç°¿ªÔ´³öÀ´µÄ»¹ÊÇTCP/IPÐÒ齨Á¢µÄ¾ÖÓòÍø¡£ºèÃÉ·¢²¼»áÃèÊöµÄ¼«¼òÐÒéͳһ²ã£¬ÎÒÃDz¢Ã»Óп´µ½¡£
Èí×ÜÏßµÄʱÐòͼÈçÏ£¬Module¿ÉÒÔ¿´³É·Ö²¼Ê½µ÷¶È·þÎñµÈ£¬¼´ÆäËûʹÓÃÈí×ÜÏßµÄÄ£¿é¡£

¶ÔÓÚpubulicService ¶Ô·þÎñ½øÐз¢²¼£¬Êµ¼Êͬʱ¶Ô Èí×ÜÏß½øÐгõʼ»¯¡££¨Ç°ÌáÊÇWiFiÒѾ½ÓÈëÁËWiFiµÄ¾ÖÓòÍø£©

´«ÊäÔÚÉÏÃæµÄpublicService¹ý³ÌÖд´½¨µÄ»á»°·þÎñ CreateSessionServer£¨£©¾ÍÊǺóÐø½øÐлùÓÚsession»á»°·þÎñµÄ»ù´¡¡£µ÷ÓÃÕß²¢²»ÐèÒª¹ØÐÄIPµÈ£¬Ö»ÐèҪʹÓô´½¨µÄsessionID ½øÐÐͨÐż´¿É¡£
- g_sessionMgr->serverListenerMap[i] ÓÃÓÚ´æ´¢session¡£SessionListenerMap½á¹¹ÖУ¬×îÖØÒªµÄÊÇlistener³ÉÔ±£ºonSessionOpened£¬ÊÇÔڻỰ´´½¨Ê±±»»Øµ÷µÄº¯Êý¡£
- onSessionClosed£ºÊÇÔڻỰ½áÊøÊ±±»»Øµ÷µÄº¯Êý¡£
- onBytesReceived£ºÊǻỰµÄÊý¾Ýµ½´ïµÄ»Øµ÷º¯Êý£¬×¢²áµÄÄ£¿é¿ÉÒÔͨ¹ýÕâ¸öº¯Êý½ÓÊջỰµÄ±¨ÎÄ£¬°´ÕÕ×Ô¼ºµÄ¸ñʽ½øÐнâÎö£¬²¢Ö´ÐлỰҪÇóµÄ¶¯×÷¡£ÀýÈ磺ÔÚ·Ö²¼Ê½µ÷¶ÈÄ£¿éÖУ¬½ÓÊÕµÄÊý¾Ý½âÎöºó£¬¿ÉÄÜÊÇSTART_FAµÄÃüÁî¡£
Ïà¹ØµÄ´úÂ룺

ÔÚStartBus()º¯Êý»áµ÷ÓÃStartSession()º¯Êý´´½¨»ùÓÚTCPµÄsocketµÄ»á»°¹ÜÀí·þÎñ¡£

Ñ»·¼àÌý·þÎñÀ´Á¬½Ó£¬Êý¾Ý´«Êä¡£

¼òµ¥×ܽᣬ¾ÍÊÇÈí×ÜÏߵĴ«Ê䣬ÊÇ»ùÓÚCOAP·¢²¼·þÎñ£¬µÈ´ý³¬¼¶ÖÕ¶Ëͨ¹ýsoftbusµÄsession½øÐд«Êä¡£µ±clientÒª·ÃÎÊij¸öÉ豸£¨¿ÉÒÔÊÇÔ¶³Ì£¬¿ÉÒÔÊDZ¾µØ£©µÄ·þÎñ£¬Ê×ÐÐÁ¬½ÓÔ¶³Ì·þÎñµÄsession·þÎñÆ÷£¬²¢·¢ËÍÊý¾Ý¡£Ô¶³ÌµÄsession·þÎñͨ¹ýonBytesRecived½ÓÊÕµ½Êý¾Ý£¬²¢»Øµ÷¸ømodule¡£¶øÊÇÓÃmoduleµÄÄ¿µÄ¡£·¢ËÍÊý¾Ýµ÷ÓÃSendBytes£¬¾Í¿ÉÒÔ»ùÓÚsessionID·¢ËÍ¡£

Õâ¸ö¹ý³ÌÖУ¬moduleÒ²ºÃ£¬»¹ÊÇÔ¶³ÌclientµÄÓ¦ÓÃÒ²ºÃ£¬¶¼²»ÐèÒªÖªµÀ·þÎñÔÚÄĸöµØ·½£¬ÓÐÈí¼þ×ÜÏß½øÐд¦Àí¼´¿É£¬Ä¿Ç°·þÎñµÄ·¢²¼Ö»Ö§³ÖWiFiϵÄCOAP¡£
ÔÚ´úÂëÖпÉÒÔ¿´µ½£¬Î´À´Ö§³ÖµÄÈí×ÜÏßÉ豸ÓÐBLE£¬COAP£¬USBÈýÖÖÀàÐÍ¡£

ÎÒÃÇÍÆ²âÈí¼þ×ÜÏßÖ®ÏÂÓ¦¸Ã»¹ÓÐÒ»¸öÕë¶Ô¸´ÔÓÉ豸֧³Ö¶à²ãÁ¬½ÓµÄÊÊÅä²ã£¬ÒÔ±ãÆÁ±Îµ×²ã²îÒ죨µ±Ç°Ö»¿ªÔ´ÁËWiFiºÍBT£©£¬°üÀ¨Ö§³ÖÉÏÊöÉ豸µÄ×éÍø£¬Â·ÓÉÒԱ㹹½¨Ò»ÕžÖÓòÍø¡£¸ù¾Ýµ±Ç°µÄ¿ªÔ´´úÂëÀ´¿´£¬Ö÷Òª»¹ÊÇ»ùÓÚwifiµÄ¾ÖÓòÍøÁ¬½Ó£¬ÆäËûÐÎʽ×Ô×éÍø»¹Î´¿´µ½£¬µ«»ªÎªÔÚͨÐÅÕâ¿éÓкÜÉîµÄ¹¦µ×£¬ÎÒÃÇÕâÀïÏàÐÅÕâ¸öÄ¿±ê¿ÉÒÔ´ï³É¡£
»ùÓÚĿǰ¹«¿ªµÄÐÅÏ¢£¬Èí×ÜÏ߼ܹ¹ÍƲâÈçÏÂͼ£º

ÆäÖеײãÁ¬½ÓÐÒé°üÀ¨ÒÔÌ«Íø¡¢ºìÍâÏß¡¢4G/5G/WiFi¡¢BT¡¢NFCµÈ¸÷ÖÖͨÐÅÄÜÁ¦¡£Ä¿Ç°NFCÖ÷ÒªÓÃÓÚ»ªÎªCardµÄÈÏÖ¤£¬ÐÖú¶àÉ豸֮¼äµÄÈÏÖ¤¡£

Îå¡¢Ó¦Óòã·ÖÎö
ÎÒÃÇ·Ö±ð±àдÁ˺èÃɵÄJS¼°JavaÓ¦Ó㬽áºÏ¿ª·Å³öÀ´µÄ²¿·ÖÔ´Âë¼°Îĵµ£¬¶ÔApp°²×°°ü½øÐÐÁ˼òµ¥µÄÄæÏò·ÖÎö¡£
1¡¢¿ª·¢»·¾³
¹Ù·½IDE DevEco StudioÊÇ»ùÓÚ¿ªÔ´µÄintellijµÄ¸ÄÔ죬Äܹ»ÓÃÓÚ±¾µØµ÷ÊÔµÄÄ£ÄâÆ÷Ö»Ö§³ÖJSÓ¦Óá£JavaÓ¦ÓýØÖ¹Ä¿Ç°Ö»Ö§³ÖÔ¶³ÌÄ£ÄâÆ÷£¨Ëùν·Ö²¼Ê½Ä£ÄâÆ÷£©²»Ö§³Ö±¾µØÄ£ÄâÆ÷¡£ÔËÐÐÔ¶³ÌÄ£ÄâÆ÷¶¼ÐèÒªÕ˺ÅÃÜÂëµÇ¼£¬Õ˺ÅÃÜÂëÐèҪע²á»ªÎªID²¢ÊµÃûÈÏÖ¤£¬¶øÊµÃûÈÏÖ¤ÐèÒªÉÏ´«Éí·ÝÖ¤ÕÕÆ¬»òÕßÒøÐп¨×ÊÁÏ£¬Ô¶³Ìµ÷ÊÔÓÉÓÚÍøÂçºÍ×ÊÔ´·ÖÅäÔÒò²¢²»Á÷³©£¬Á÷³©¶ÈºÍ»ÖÊ·½Ãæ²»¾¡ÈËÒ⣬¿ª·¢ÌåÑéÓеã¶ùÔã¸â¡£
µ±È»Èç¹ûÓÐÕæ»ú£¬Ò²¿ÉÒÔʹÓÃÕæ»ú½øÐпª·¢µ÷ÊÔ£¬µ«»ªÎªÕâÀïÓÖÉèÁËÁ½µÀÃż÷£¬¿ª·¢ºèÃÉÓ¦ÓÃÐèÒªË«ÖØÇ©ÃûÈÏÖ¤£¬³ýÁËÓ¦Óñ¾ÉíµÄÇ©Ãû£¬»¹Òª¶ÔÓ¦Óù¤³Ì½øÐÐÇ©Ãû¡£ÕâÁ½¸öÇ©Ãû¶¼ÐèÒªÔÚºèÃÉ¿ª·¢ÕßÍøÕ¾ÉÏ×¢²á£¬Éú³ÉÏàÓ¦Ö¤Êéºó·½¿É°²×°µ½Õæ»ú£¬²½ÖèÏ൱·±Ëö¡£±ÊÕ߸ãÕâ¸öÇ©Ãû×߸÷ÖÖ×¢²áÁ÷³ÌǰºóºÄʱһСʱ£¬¶Ô¿ª·¢Õß²»ÊǺÜÓѺ㬺ÃÔÚÅäÖÃÍê³Éºó£¬ºóÐø¿ÉÒÔÖ±½ÓʹÓã¬ËãÊÇÒ»´ÎÐÔÀͶ¯¡£
´ÓĿǰµÄÓ¦Óÿª·¢Á÷³ÌÉÏ¿´£¬ÒԺ󿪷¢ºèÃÉÓ¦ÓÃÓпÉÄÜ»á¶ÔÇ©Ãû·þÎñ½øÐÐÊÕ·Ñ£¬±ÊÕß²»½û»ØÏëÆðÁËŵ»ùÑÇ£¬Ä¦ÍÐÂÞÀʱ´ú£¬J2MEÓ¦ÓÃÖ¤ÊéÇ©ÃûÍâ°ü¸øµÚÈý·½¹«Ë¾£¬Ò»¸öÓ¦ÓÃÇ©ÃûÊÕ·Ñ2000Ôª·ñÔòÎÞ·¨°²×°µ½Óû§ÊÖ»ú£¬¸ãËÀÉú̬µÄÊÂÇé¡£Éú̬»¹Ã»ÆðÀ´£¬Ó¦Óÿª·¢Á÷³Ì¸ãµÄÈç´Ë¸´ÔÓ£¬Ï£Íû»ªÎª½è¼øÕâ¸öÀúÊ·½Ìѵ¡£
2¡¢Ó¦Óÿò¼Ü
ºèÃÉÓ¦ÓÃUI¿ò¼ÜÓÐÁ½Ì×£¬Ö§³ÖJava¡¢JS£¬IDEÀïÓÐĬÈϵÄÄ£°å¡£ÕâÁ½Ì׿ò¼ÜµÄÇø±ðÊÇ£¬Java¿ò¼ÜÖ»Ö§³ÖºèÃÉAndroidϵͳ£¬JSÓ¦ÓüÈÖ§³ÖºèÃÉAndroidϵͳ£¬Ò²Ö§³ÖºèÃÉǶÈëʽϵͳ¡£ºèÃÉJSÓ¦ÓÃÔÚºèÃÉAndroidÉÏÊÇÌ×Á˸öAndroidÓ¦ÓõĿǣ¬Õâ¸ö¿Ç»á¹¹½¨Ò»¸öÀàËÆÐ¡³ÌÐòµÄäÖȾ»·¾³£¬×ª»»ÎªAndroidµÄÔÉú¿Ø¼þäÖȾ£¬ÏÂÎÄÓÐÕ¹¿ª·ÖÎö¡£JSÓ¦ÓÃÏà±ÈJavaÓ¦Óã¬ÔÚÅŰæÄÜÁ¦£¬À©Õ¹ÐÔ£¬¼æÈÝÐÔ·½Ãæ´æÔÚÒ»¶¨µÄ¾ÖÏÞÐÔ£¬¸üÊʺÏ×öÐÅϢչʾÀàµÄÓ¦Óá£
¶ÔÓ¦µÄÒ²ÓУ¬JavaºÍJSÁ½Ì×SDK£¬ºèÃÉϵͳÌṩµÄÃûΪAbilityµÄÓ¦Óÿò¼ÜÒ²·Ö±ðÓÐJavaºÍJSµÄʵÏÖ¡£Ó¦ÓÃÖ§³ÖÄÄЩÉ豸£¬¿ÉÒÔÔÚÓ¦ÓõÄconfig.jsonÖÐÉùÃ÷¡£

3¡¢ Ó¦Óøñʽ
ÎÞÂÛÊÇjsÓ¦Óû¹ÊÇjavaÓ¦Ó㬴úÂë×îÖÕ±àÒë³öÀ´°ü¾ùΪhapºó׺£¬Õâ¸öhapÊÇδ¾hackµÄzip¸ñʽ£¬¿ÉÒÔʹÓñê×¼µÄzip½âѹ¹¤¾ß½øÐнâѹ¡£
¾ßÌåhap°üµÄ¾ßÌ尲װʹÓÃÉÏ£¬SDKÌṩÃüÁîÐй¤¾ß hdc£º
3.1¡¢JavaÓ¦ÓÃ
javaÓ¦ÓÃÔÚ¿ª·¢Ê±ÒÀÀµÒÔÏÂSDK°ü£¬Ö»ÄÜÓÃÀ´±àÒë´úÂ룬SDK·´±àÒë¿´²»µ½Ô´Â룬Ҳδ¿ªÔ´¡£

¸ù¾ÝÎļþÃüÃû£¬¶ÔÆä¹¦ÄÜÍÆ²âÈçÏ£º
 JavaÓ¦ÓýâѹºóµÄ²úÎïÈçÏ£º

ÕâЩÎļþµÄ×÷ÓÃÈçÏ£º

JavaÓ¦ÓÃÆðÀ´ºóÓÃMainAbilityShellActivity³ÐÔØ£¬¸ù¾Ý·´±àÒëºóµÄ¿Ç´úÂë·ÖÎö£¬Ö÷ÒªÓÉHarmonyApplicationÍê³É¶ÔabilityÓ¦ÓÃÔËÐл·¾³µÄ³õʼ»¯¡£

JavaÓ¦Óò¼¾ÖÎļþ¼°ÏÔʾЧ¹ûÈçÏÂͼ£º

dump³öUIµÄ»æÖÆ·½Ê½(adb shell uiautomator dump)£¬¿ÉÒÔ¿´µ½ºèÃÉËäÈ»¶¨ÒåÁËÒ»Ì×Ó¦Óÿª·¢µÄDSL£¬µ«»æÖƲ¿·Ö»¹ÊÇÓÃAndroidµÄUI¿Ø¼þÀ´³ÐÔØ£¬·Ç×Ô»æUI¡£
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
< hierarchy rotation = "0" >
< node index = "0" text = "" resource-id = "" class = "android.widget.FrameLayout" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,0][1176,2328]" >
< node index = "0" text = "" resource-id = "android:id/decor_content_parent" class = "android.view.ViewGroup" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,0][1176,2328]" >
< node index = "0" text = "" resource-id = "android:id/action_bar_container" class = "android.widget.FrameLayout" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,72][1176,240]" >
< node index = "0" text = "" resource-id = "android:id/action_bar" class = "android.view.ViewGroup" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,72][1176,240]" >
< node index = "0" text = "entry_MainAbility" resource-id = "" class = "android.widget.TextView" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[48,115][528,196]" /></ node >
</ node >
< node index = "1" text = "" resource-id = "android:id/content" class = "android.widget.FrameLayout" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,240][1176,2328]" >
< node index = "0" text = "" resource-id = "" class = "android.view.ViewGroup" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,240][1176,2328]" >
< node index = "0" text = "ÄãºÃ£¬ÊÀ½ç" resource-id = "" class = "android.widget.TextView" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[288,1160][888,1320]" />
< node index = "1" text = "javaApp" resource-id = "" class = "android.widget.TextView" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[366,1320][809,1480]" /></ node >
</ node >
</ node >
< node index = "1" text = "" resource-id = "android:id/statusBarBackground" class = "android.view.View" package = "com.michalliu.myapplication" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,0][1176,72]" /></ node >
</ hierarchy > |
ÓÉ´Ë¿ÉÒÔ¿´³ö£¬ºèÃÉAndroid°æÒªÍÑÀëAndroidÌåϵÄѶȻ¹±È½Ï¸ß£¬±Ï¾¹ºËÐĵÄUI²¿·Ö·Ç×Ի档
JavaÓ¦ÓõÄÔËÐл·¾³Ê¾Òâͼ£º

ÎÒÃÇÀí½âºèÃÉAndroid´ÓÉè¼ÆÉϸüÀàËÆQT¸úWindowsµÄ¹ØÏµ£¬¿ÉÒÔÀí½âΪÔÚAndroid²Ù×÷ϵͳµÄ»ù´¡ÉÏ´îÁËÒ»Ì××Ô¼ºµÄÓ¦ÓóÌÐò¿ò¼Ü¡£

ĿǰºèÃÉÊǸúAndroidÉî¶È°ó¶¨µÄ£¬ºèÃÉÇл»²Ù×÷ϵͳµÄ¿ÉÄÜÐÔ²»ÊÇÍêȫûÓУ¬µ«³É±¾Ï൱¸ß£¬Ó¦¸Ã˵ºèÃÉAndroidµÄÕâ¸öÉè¼ÆË¼Â·ÊǼÈÈ»°ÚÍѲ»Á˰²×¿£¬»ùÓÚÕâ¸öǰÌᣬÄÇô¾Í³ä·ÖÀûÓÃËü¡£
3.2¡¢JsÓ¦ÓÃ
´ÓĿǰÒѾ¿ªÔ´³öÀ´µÄ²¿·ÖÉÏÀ´¿´»ùÓÚjs¿ª·¢µÄÓ¦ÓÃÊÇÒ»ÖÖÀàËÆÐ¡³ÌÐòµÄ¿ª·¢·½Ê½£¬html,js,cssÊ×ÏÈ»á±àÒë³Éjsbundle£¨±àÒ빤¾ß±¾Éíδ¿ªÔ´£©£¬jsbundleµÄÖ´Ðв»Í¬µÄºèÃÉϵͳÉÏÓÐËùÇø±ð¡£
- JsÓ¦ÓÃÔÚºèÃÉǶÈëʽϵͳÉÏÖ´ÐзÖÎö
¾¹ý¶Ôopenharmony´úÂë·ÖÎö£¬ÔÚopenharmonyÀïJsÓ¦ÓÃÊÇÒÔ×Ô»æµÄ·½Ê½äÖȾ£¬Ö§³ÖµÄUI×é¼þ¿´ÆðÀ´»¹±È½ÏÍêÉÆ£¨´ÓÔ´ÂëÀï¿´»æÖƲ¿·ÖËÆºõ²Î¿¼Á˲¿·Öflutter´úÂ룩£¬Ê¹ÓÃÈýÐǵÄJerry JsÒýÇæ£¬²Â²âÊÇÍÚµÄÈýÐǵÄÈË£¿ÒòΪÕâ¸öJsÒýÇæÊµÔÚ̫СÖÚ£¬Google V8Ëû²»ÏãÂð£¿
UI×é¼þ¿ò¼ÜÔÚ ace_engine_lite À´Ó¿ªÔ´µÄ´úÂëÎÒÃÇ¿´³öÖ§³ÖµÄUI×é¼þ»¹±È½Ï·á¸»£¬³ýÁ˳£¹æµÄ¿Ø¼þ£¬»¹°üº¬ÁÐ±í£¬¶¯»µÈ¸´ÔӿؼþµÄʵÏÖ¡£

ace_engine_lite ¸ºÔðά»¤UI×é¼þµÄÉúÃüÖÜÆÚ£¬Ê¼þͨÐÅ£¬Êý¾Ý¸üеȣ¬ÊÇÂß¼²ã

UI×é¼þµÄÏÔʾ²ãÔÚ graphic_ui ¹¤³ÌÖУ¬ÀýÈçÏÂͼΪUIButton»æÖƵÄʵÏÖ£º

ĿǰÕâ¸ö×Ô»æµÄ¹¤³ÌÖ»ÓÐǶÈëʽµÄµÄʵÏÖ£¬Ã»ÓÐAndroid¶ÔÓ¦µÄʵÏÖ¡£
ʵ¼ÊÔÚAndroid¹¤³ÌÉÏ£¬ºèÃÉ×ߵIJ¢²»ÊÇ×Ô»æµÄ·½°¸£¬¶øÊÇÀàËÆReactNativeµÄ¿Ø¼þת»»£¬ReactNative²ÉÓõÄÊÇReactµÄÓï·¨£¬¶øºèÃÉAndroid²ÉÓõÄÊÇVueµÄÓï·¨£¬´Ó¹úÄڵĿª·¢ÕßÉú̬ÉÏÀ´¿´£¬ÕâÊǸöÕýÈ·µÄÑ¡Ôñ¡£
ºèÃɵÄÕâ¸öÓÃC++ʵÏÖÀà VUE Óï·¨£¬ÔÚǶÈëʽÉÏ×Ի棬AndroidÉϿؼþת»»µÄJs¿çƽ̨äÖȾ¿ò¼ÜÊôÓÚÔ´´£¬¿ÉϧµÄÊǺèÃÉAndroidÕâ¿é²¢Î´¿ªÔ´£¬²»ÄÜÉîÈëÑо¿¡£
- JsÓ¦ÓÃÔÚºèÃÉAndroidÉÏÖ´ÐзÖÎö
JsÓ¦ÓÃÔÚºèÃÉAndroidÉÏ»áת»»³ÉAndroidµÄUI¿Ø¼þ£¬JsÓ¦ÓýâѹºóµÄ²úÎïÈçÏ£º

ÕâЩÎļþµÄ×÷ÓÃÈçÏ£º

¶ÔÓÚJsÓ¦ÓÃÀ´ËµºËÐÄÂß¼ÓÉohos.aafwk.ace.ability.AceAbilityÍê³ÉjsbundleµÄ¼ÓÔØºÍÔËÐй¤×÷¡£
£¨×¢Ò⣺ËäÈ»javaÓ¦ÓúÍjsÓ¦ÓÃÔÚ½âѹºóĿ¼½á¹¹Ëƺõ²î²»¶à£¬ÎļþÃüÃûÒ²²î²»¶à£¬µ«Æä¹¤×÷ÔÀíÍêÈ«²»Í¬¡£ÔÚJavaÓ¦ÓÃÀïclass.dexÒѾÊǺèÃÉÓ¦ÓõÄÕæÕý¿ÉÖ´ÐдúÂë¡£ÔÚjsÓ¦ÓÃÀïclass.dex»¹ÊÇÒ»¸ö¿Ç£¬Õâ¸ö¿ÇÓÃÓÚ´òÔìÖ´ÐÐJsÓ¦ÓõÄÔËÐл·¾³£¬ÕæÕýµÄÒµÎñÂß¼ÔÚapp.jsÀï¡£)
jsÓ¦Óò¼¾ÖÎļþ¼°ÏÔʾЧ¹û:

¶ÔÓÚJsÓ¦ÓÃÀ´ËµºËÐÄÂß¼ÓÉohos.aafwk.ace.ability.AceAbilityÍê³ÉjsbundleµÄ¼ÓÔØºÍÔËÐй¤×÷¡£
£¨×¢Ò⣺ËäÈ»javaÓ¦ÓúÍjsÓ¦ÓÃÔÚ½âѹºóĿ¼½á¹¹Ëƺõ²î²»¶à£¬ÎļþÃüÃûÒ²²î²»¶à£¬µ«Æä¹¤×÷ÔÀíÍêÈ«²»Í¬¡£ÔÚJavaÓ¦ÓÃÀïclass.dexÒѾÊǺèÃÉÓ¦ÓõÄÕæÕý¿ÉÖ´ÐдúÂë¡£ÔÚjsÓ¦ÓÃÀïclass.dex»¹ÊÇÒ»¸ö¿Ç£¬Õâ¸ö¿ÇÓÃÓÚ´òÔìÖ´ÐÐJsÓ¦ÓõÄÔËÐл·¾³£¬ÕæÕýµÄÒµÎñÂß¼ÔÚapp.jsÀï¡£)
jsÓ¦Óò¼¾ÖÎļþ¼°ÏÔʾЧ¹û:

dump³öUIµÄ»æÖÆ·½Ê½£¬¿ÉÒÔ¿´µ½JsÓ¦ÓõÄUI»æÖÆ£¬ÔÚºèÃÉAndroidÉÏÊÇÓÃAndroidµÄUI¿Ø¼þÀ´³ÐÔØ£¬·Ç×Ô»æUI¡£
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
< hierarchy rotation = "0" >
< node index = "0" text = "" resource-id = "" class = "android.widget.FrameLayout" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,0][1176,2328]" >
< node index = "0" text = "" resource-id = "android:id/decor_content_parent" class = "android.view.ViewGroup" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,0][1176,2328]" >
< node index = "0" text = "" resource-id = "android:id/action_bar_container" class = "android.widget.FrameLayout" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,72][1176,240]" >
< node index = "0" text = "" resource-id = "android:id/action_bar" class = "android.view.ViewGroup" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,72][1176,240]" >
< node index = "0" text = "entry_MainAbility" resource-id = "" class = "android.widget.TextView" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[48,115][528,196]" /></ node >
</ node >
< node index = "1" text = "" resource-id = "android:id/content" class = "android.widget.FrameLayout" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "false" enabled = "true" focusable = "false" focused = "false" scrollable = "false" long-clickable = "false" password = "false" selected = "false" bounds = "[0,240][1176,2328]" >
< node index = "0" text = "" resource-id = "" class = "android.view.ViewGroup" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "true" enabled = "true" focusable = "true" focused = "false" scrollable = "true" long-clickable = "true" password = "false" selected = "false" bounds = "[0,240][1176,2328]" >
< node index = "0" text = "ÄúºÃ ÊÀ½ç" resource-id = "" class = "android.widget.TextView" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "true" enabled = "true" focusable = "true" focused = "false" scrollable = "true" long-clickable = "true" password = "false" selected = "false" bounds = "[331,1173][844,1332]" />
< node index = "1" text = "Js Application" resource-id = "" class = "android.widget.TextView" package = "com.example.myapplicationjs" content-desc = "" checkable = "false" checked = "false" clickable = "true" enabled = "true" focusable = "true" focused = "false" scrollable = "true" long-clickable = "true" password = "false" selected = "false" bounds = "[301,1347][874,1452]" /></ node >
</ node >
</ node >
</ node >
</ hierarchy > |
ºèÃÉÓ¦ÓòãÔÚÉè¼ÆÉÏ£¬»ùÓÚ×Ô¼ºµÄDSLºÍÓ¦ÓÃÔËÐпò¼Ü£¬ÔÚǶÈëʽÉ豸ÉÏÒÔ×Ô»æµÄ·½Ê½äÖȾ£¬ÔÚºèÃÉAndroidÉÏͨ¹ýÊÊÅä²ãת»»ÎªAndroidÔÉú¿Ø¼þäÖȾ¡£ÕâÑùµÄÉè¼ÆÓÅÊÆÊǼõÇáÁ˹¤×÷Á¿£¬×é¼þ·½Ãæ¿ÉÒÔ¸´ÓÃAndroidµÄÉú̬£¬ÄÜÁ¦»á¸ü·á¸»£¬±Ï¾¹´ÓÁãÔÙ´òÔìÒ»Ì×ÍêÕûÇÒÅÓ´óµÄUIÌåϵ³É±¾Ì«¸ß£¬ÌåÑ黹²»Ò»¶¨ÓÐAndroid×öµÄºÃ£¬¶øÁÓÊÆÔòÊÇÎþÉüÁË¿Éά»¤ÐÔ£¬Á½Ì×·½°¸Òª¸÷×Ô¶ÀÁ¢Î¬»¤£¬Î¬»¤³É±¾½Ï¸ß£¬ÁíÍ⻹¿ÉÄÜ´øÀ´¼æÈÝÐÔµÄÎÊÌâ¡£´ÓopenharmonyÔ´ÂëÉÏ¿´£¬»ùÓÚ×Ի淽°¸²¢Ã»ÓÐÔ¤Áô¸øAndroidµÄÀ©Õ¹½Ó¿Ú£¬targetos½ö°üº¬linuxºÍliteosÁ½ÖÖ£¬ÒòΪäÖȾ²ã¼Ü¹¹²»Í¬£¬Î´À´µÄ¸Ä³ÉÒ»ÖµĿÉÄÜÐÔÒ²½ÏµÍ¡£
Áù¡¢×ܽá
ºèÃÉOS²¢²»¶¨Î»ÓÚ¶ÔWindows¡¢Android½øÐÐÌæ´ú£¬¶øÊǽ£Ö¸ÍòÎﻥÁªÊ±´úÈ«³¡¾°¡¢¶àÖն˵IJÙ×÷ϵͳ£¬Óë´ËÏà¶ÔÓ¦£¬ºèÃÉOS£¨¼°´ó»ªÎªÌåϵ£©ËùÓеÄÉú̬²¼¾ÖÒ²½«Î§ÈÆÍòÎﻥÁªÕ¹¿ª¡£ºèÃÉOSÔÚÍê³Éϸ·Ö³¡¾°µÄÍØÕ¹ÓëÅÜÂíȦµØºó£¬ºèÃÉOS½«ÍêÉÆ»ªÎªAIoTÉú̬£¬½øÒ»²½ÔÚÖǻ۳ÇÊС¢³µÁªÍø£¨É£©¡¢¹¤Òµ»¥ÁªÍøÈý·½Ãæ·¢Á¦Íƽø¡£
Öг¤ÆÚÀ´¿´£¬ºèÃÉOSÓ뻪Ϊ¡°ÔÆ+¶Ë¡±Ð¾Æ¬ÐγÉÇ¿´óºÏÁ¦£¬½ø¾ü²úÒµÎïÁªÍø¡£»ªÎªÓÅÖÊÍøÂçÉ豸ÊÇIoTµÄÁ¬½Ó»ù´¡£¬Á¬½Ó»ñµÃÁË´óÁ¿Êý¾Ý£¬µ«Ö»ÓÐͨ¹ýÖÇÄÜ·ÖÎö²ÅÄܹ»ÐγÉɱÊÖ¼¶Ó¦Ó᣻ªÎªÒÑÔÚÔÆ²àºÍ¶Ë²âÓµÓЕNÌÚ¡¢öïÅô¡¢÷è÷ëµÈоƬ£¬¾ß±¸Ç¿´óËãÁ¦£¬µþ¼ÓºèÃÉOS¸ßЧ¡¢Áé»îµÄÖ´ÐÐÁ¦£¬½«ÅàÓý´óÁ¿¸ß¼ÛÖµÓ¦Ó᣻ùÓÚ½ü¾°ºÍÔ¶¾°µÄÉú̬À¶Í¼£¬µ±Ç°ºèÃÉOSµÄ·¢Á¦×¥ÊÖÈÔÊÇÒÔÒÆ¶¯¶ËΪºËÐĵÄHMS²úÒµÁ´¡£

|