Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
´ó¹æÄ£ÍŶÓЭͬ¿ª·¢ÀûÆ÷£º°¢ÀïAtlasÕýʽ¿ªÔ´£¡
 
À´Ô´£ºyq.aliyun.com ·¢²¼ÓÚ£º 2017-6-30
  1634  次浏览      31
 

½üÈÕ£¬ÊÖ»úÌÔ±¦°²×¿¿Í»§¶ËÈÝÆ÷»¯¿ò¼ÜAtlasÕýʽÐû²¼¿ªÔ´¡£AtlasÓɰ¢Àï°Í°ÍÒÆ¶¯ÍŶÓ×ÔÑУ¬ÒÔÈÝÆ÷»¯Ë¼Â·½â¾ö´ó¹æÄ£ÍŶÓЭ×÷ÎÊÌ⣬ʵÏÖ²¢Ðпª·¢¡¢¿ìËÙµü´úºÍ¶¯Ì¬²¿Êð£¬ÊÊÓÃÓÚAndroid 4.xÒÔÉÏϵͳ°æ±¾µÄ´óСÐÍApp¿ª·¢¡£

AtlasÌØ±ðÊÊÓÃÓÚ´ó¹æÄ£ÍŶӵÄЭͬ¿ª·¢¡£Í¨¹ýÌṩ×é¼þ»¯¡¢¶¯Ì¬ÐÔ¡¢½âñµÄÖ§³Ö£¬AtlasÄܹ»ÊµÏÖÿ¸öÒµÎñÔÚ¿ª·¢½×¶Î¶ÀÁ¢±àÒë¡¢¶ÀÁ¢µ÷ÊÔ¡¢¶ÀÁ¢ÔËÐУ¬×îºóÔÙÒÔÒ»¸ö×é¼þµÄÐÎʽ¼¯³Éµ½¿Í»§¶ËÖУ¬Ã¿¸öÒµÎñÖ®¼ä²¢Ðпª·¢»¥²»Ó°Ïì¡£´ËÍ⣬»¹¾ß±¸¿Í»§¶Ë¶¯Ì¬·¢°æºÍ¿ìËÙÐÞ¸´µÄÄÜÁ¦¡£

¿ªÔ´µØÖ·£ºhttps://github.com/alibaba/atlas

AtlasÊÇʲô£¿

AtlasÊǹÅÏ£À°Éñ»°ÖеÄÌìÉñ£¬ÊDz¨Ê¿¶Ù¶¯Á¦¹«Ë¾µÄ»úÆ÷ÈË£¬½èÖúËÑË÷ÒýÇæ£¬µÃÒÔ·¢ÏÖÕâ¸öÃû´Ê±³ºóÐíÐí¶à¶àµÄº¬Òå¡£ÔÚÊÖ»úÌÔ±¦£¬AtlasÊÇÒ»¸öÔú¸ùÓÚAndroid¿Í»§¶ËµÄÒ»¸ö×é¼þ»¯ÈÝÆ÷¿ò¼Ü£¬Ïà±ÈÉñ»°ÖÐÓÃÊÖºÍÍ·Ö§³ÅÆð²ÔÌìµÄ̩̹Éñ×壬AtlasÔÚÊÖÌÔĬĬÎÞÎŵسÐÔØ×ÅÊÖÌÔÉϷḻҵÎñµÄÔËÐУ¬°éËæ×ÅÊý²»ÇåµÄ¹¦ÄÜÔÚÓû§ÊÖÖо­ÀúÐÂÀϽ»Ìæ¡£

²å¼þ»¯µÄÀúÊ·

ÔÚ°¢ÀÔÚÊÖ»úÌÔ±¦£¬Òƶ¯¿Í»§¶ËµÄµü´ú¸üпÉÒÔ˵ÊÇÕû¸öÒÆ¶¯»¥ÁªÍø´ÓÐÂÆðµ½·±ÈٵļûÖ¤¡£°éËæ×ÅÔ½À´Ô½¶àÒµÎñµÄµ®Éú£¬Ô½À´Ô½¶àµÄ´úÂ뿪ʼÍùССµÄ¿Í»§¶ËÓ¿È룬¶øÎÞÂÛÊÇiOS»¹ÊÇAndroid£¬¸÷ÖÖ¿Í»§¶ËµÄÌå»ýÒ²¾­Àú×Å¿ìËÙµÄÔö³¤¡£¶øÓÉÓÚ¿Í»§¶ËµÄÍÆ¹ã³É±¾½Ï¸ß£¬¸÷¸öÒµÎñÏß¶¼ÓкÜÇ¿µÄÐèÇó½ÓÈëÊÖ»úÌÔ±¦¿Í»§¶Ë¡£ËùÒÔÔÚµ±Ê±º½Ä¸Õ½ÂԵı³¾°Ï£¬ÆÈÇÐÐèÒªÒ»ÖÖ¼¼ÊõÄܰѿͻ§¶Ë»¯ÕûΪÁ㣬ÕâЩģ¿é¿ÉÒÔ×ÔÓÉ×éºÏ£¬²¢ÇÒµ±²¿·Ö¹¦Äܱä¸üʱֻÐèÒª¸üжÔӦģ¿é¡£

ÎÒÃÇÔÚ2012Äêµ×µÄʱºò¾Í¿ªÊ¼Ñо¿AndroidÉϵIJå¼þ»¯¼¼Êõ£¬²¢Óë2013Äê³õ°ÑAtlas×÷Ϊ²å¼þ»¯¿ò¼Ü½ÓÈëÊÖ»úÌÔ±¦¡£»ùÓÚ²å¼þ»¯µÄÄÜÁ¦£¬Ò»¸öÆÕͨµÄAndroidÓ¦ÓÿÉÒԵͳɱ¾µØ×ªÎª·ûºÏAtlas¹æ·¶µÄ²å¼þ£¬Ê¹Apk¼È¿ÉÒÔÒÔ²å¼þ·½Ê½ÔËÐÐÒ²¿ÉÒÔ¶ÀÁ¢°²×°ÔËÐС£Ò»¸ö´óµÄAndroid¿Í»§¶ËÏîÄ¿¿ÉÒÔ·Ö¸î³ÉÊý¸ö²å¼þ£¬×öµ½´úÂë¸ôÀ룬½µµÍÁË¿ª·¢¡¢Î¬»¤¡¢²¿ÊðµÄ³É±¾¡£

MacDown Screenshot

µ±Ê±²å¼þ»¯µÄ·½°¸¿É·ÖΪÈýÀࣺWeb¡¢WebApp¡¢Native¡£¸÷ÖÖ·½°¸ÔÚÊÖÌÔÄÚ¶¼ÔÚÓÐͬѧ½øÐÐÉîÈëµÄÑо¿¡£ NativeÐÎʽµÄ²å¼þÓÉÓÚ¼¼ÊõÃż÷½Ï¸ß£¬µ±Ê±Òµ½ç²ÉÓõIJ¢²»¶à¼û¡£µ«ÊÇÓÉÓÚÆä±ÈWebAppÓÐÁ¼ºÃµÄÐÔÄܺÍÌåÑ飬ͬʱ¶ÔÓÚÐí¶àÒѾ­³ÉÐ͵ÄС¿Í»§¶ËÍÆ¹ãµÄÆÈÇÐÐèÇó£¬ÓÈÆäÖµµÃÎÒÃÇȥ̽Ë÷¡£

MacDown Screenshot

ÉÏͼÊǵ±Ê±²å¼þ»¯µÄ¼¼ÊõÔ­ÀíµÄ¼òͼ£¬Æäʵ¸úÏÖÔÚÒµ½çµÄ²å¼þ»¯·½°¸Ö÷ÒªµÄÉè¼ÆË¼Â·»ù±¾Ò»Ö¡£Atlas×÷Ϊһ¸öÄ£ÄâµÄAndroidÔËÐл·¾³£¬Ã¿¸ö²å¼þÒÔÒ»¸ö¶ÀÁ¢µÄ½ø³ÌÔËÐÐÔÚ¸÷×ÔµÄɳÏä»·¾³ÖС£Í¬Ê±ÓÉÓÚ½ÓÈë³É±¾½ÏµÍ£¬ÆäËûµÄÒµÎñÓ¦Óûù±¾¿ÉÒÔËãÊÇÁã³É±¾µÄ·½Ê½½ÓÈëµ½ÊÖÌÔ»·¾³£¬Í¬Ê±Ò²¿ÉÒÔËæÊ±·¢²¼Ðµİ汾½øÐиüС£

²å¼þ»¯µÄ·½°¸ÓÐÆäÌØÓеÄÓÅÊÆ£¬¶ÀÁ¢µÄ½ø³Ì±£Ö¤ÁËÒµÎñµÄ¾ø¶Ô¸ôÀ룬ͬʱҲ±ãÓÚ¸ôÀë·çÏÕ¡£¾Û»®Ëã¡¢Ììè¡¢²ÊƱһ¸ö¸ö¶ÀÁ¢Ó¦ÓÿªÊ¼Æð½µÓÚÊÖÌÔÕâ¼Üº½Ä¸¡£ ÌðÃ۵ijɳ¤×ÜÊǶÌÔÝ£¬²å¼þ»¯·¢Õ¹ºÜ¿ì£¬Ëæ×ÅÊÖÌÔall in·½°¸µÄÉîÈ룬һЩÒþ»¼¿ªÊ¼Õ¹ÏÖ¡£

ÐÔÄÜ£ºÐ½ø³ÌµÄ¿ª±Ù¼«´óÓ°Ïìÿ¸öÒµÎñµÄ½øÈëËÙ¶È£¬Í¬Ê±ÓÉÓÚÊÖÌԵIJå¼þ²¢²»ÊÇÓÃÍê¼´×ߵij¡¾°£¬±ÈÈç˵´ÓÊ×Ò³->¾Û»®Ëã->ÏêÇé->µêÆÌ->ϵ¥¸÷¸ö»·½ÚÊÇ´æÔÚ×ÅÒ»¶¨µÄ¹ØÁª£¬¸÷¸ö²å¼þµÄ½ø³ÌÎÞ·¨Í˳ö¡£¶ø¶à½ø³ÌµÄ»úÖÆÓÖ¼«´óµÄÕ¼ÓÃÁËÄڴ棬ͬʱҲÒýÆðÐí¶àÓû§µÄÖÊÒÉ

¸´Ó㺲å¼þµÄ¶ÀÁ¢ÏÞÖÆÁËÐí¶àÖмä¼þµÄ¸´Óã¬aidlµÄ·½Ê½²¢²»ÊʺÏÖмä¼þÄÜÁ¦µÄÊä³ö£¬¶ÀÁ¢µÄapkÖ±½Ó½øÈëµÄͬʱҲЯ´øÁË´óÁ¿Öظ´µÄ¶þ·½¿â£¬Ò²Ò»·½Ã漫´óÔö´óµÄÓ¦ÓõÄÌå»ý

Îȶ¨£º²å¼þ»¯ÐèÒªÒ»¸öÄ£ÄâµÄAndroidÔËÐл·¾³£¬ÔÚAndroid¶à°æ±¾ÒÔ¼°¹ú²úromµÄ¼æÈÝÖÐÐèÒª×ö´óÁ¿µÄ¹¤×÷£¬Í¬Ê±¶à²å¼þÔËÐйý³ÌÖÐÔڵͶËÉ豸ÉϺÜÈÝÒ×Óöµ½½ø³Ì±»»ØÊÕ»òÕßÈý·½Ó¦ÓÃǿɱµÄÇé¿ö£¬Ã»ÓÐÁ¼ºÃµÄ»Ö¸´»úÖÆ»á¼«´ó½µµÍÓû§µÄÌåÑé¡£

×é¼þ»¯µÄµ®Éú5

°éËæ×Åall inµÄ½øÐУ¬ÔÚÊÖÌÔÄÚ²¿·¢ÆðÁ˶ԴóÐÍapp½øÐÐÖØ¹¹µÄ¼Æ»®¡£ÎÒÃÇÐèÒªÕâÑùÒ»¸ö¿ò¼Ü£º

1. Ö§³Ö´óÁ¿·á¸»ÒµÎñµÄ½ÓÈ룬ͬʱҵÎñÖ®¼äÄܹ»±£³ÖÇåÎúµÄ±ß½ç£¬¸÷×Ô¿ÉÒÔ¼ÌÐøÁé»îµü´ú£»

2. ÓÃÒ»ÅúͳһµÄÖмä¼þÈ¥Ö§³ÅÆð¸÷ÖÖÒµÎñµÄµ×²ã¹¦ÄÜ£¬±£³ÖÖмä¼þ´úÂëµÄÈ«Ãæ¸´Óã»

3. Äܹ»¾¡Á¿±£³Ö¶ÔϵͳµÄµÍÇÖÈ룬×ðÖØÔ­ÉúÔËÐлúÖÆÒÔ½µµÍºóÆÚµÄά»¤³É±¾£»

4. ÔÚÓû§É豸ÉϾ¡Á¿ÌåÏÖÒ»¸ö¼òµ¥¿Í»§¶ËµÄÌØÐÔ£¬Í¬Ê±Ìض¨µÄÒµÎñ¹¦Äܰ´Ðè»ñÈ¡£¬±£³ÖÌå»ýµÄ¿É¿Ø;

¡üÐÂÈÝÆ÷»¯½á¹¹ÉèÏë¡ü

»ùÓÚ¶Ô²å¼þ»¯¿ò¼Ü¶ÔAndroidÔËÐлúÖÆµÄÀí½â£¬²Î¿¼ÁËOSGIÔÚ·þÎñ¶Ë¿ò¼Ü£¬ÔÚ¿ª·¢IDEµÈÁìÓò"¸ß¸´ÓᢵÍñîºÏ¡¢¿É²å°Î"µÄÓÅÊÆ£¬ÎÒÃÇ½è¼øÁËOSGI¹æ·¶¿ª·¢ÁË»ùÓÚ×é¼þ»¯µÄAtlasÈÝÆ÷»¯¿ò¼Ü¡£

ÏÂͼÊÇ»ùÓÚ×é¼þ»¯¿ò¼ÜµÄϵͳ½á¹¹£º

×îµ×²ãµÄtookit verifierÈ«ÃæÂÞÁÐÁËÉϲãÐèÒª·´ÉäʹÓõÄ×¢ÈëºÍ´úÀíµÄApi£¬»áÔÚÓ¦ÓÃÆô¶¯Ê±ÏȽøÐÔÈ«¾ÖÐÔµÄУÑ飬ÒÔ±ÜÃâ³ÌÐòÔËÐÐÖÐÓöµ½²»¼æÈݵÄÇé¿ö£»

ÍùÉÏBundle Framework¸ºÔð×é¼þµÄ°²×° ¸üР²Ù×÷ÒÔ¼°¹ÜÀíËùÓÐ×é¼þµÄÉúÃüÖÜÆÚ,ÕâÀï×é¼þµÄ±ß½ç¸ôÀë¾Í×ñÑ­ÁËOSGIµÄ¹æ·¶£¬Ã¿¸ö×é¼þ·ÖÅä¶ÀÁ¢µÄclassloader£¬Í¬Ê±×é¼þÓи÷×ÔµÄ×ÊÔ´£¬Ã¿¸ö×ÊÔ´ÔÚ¹¹½¨ÆÚ¼äÓÉAAPT·ÖÅä¶ÀÁ¢µÄpackage ID£»

Runtime²ã Ö÷Òª°üÀ¨Çåµ¥¹ÜÀí¡¢°æ±¾¹ÜÀí¡¢ÒÔ¼°ÏµÍ³´úÀíÈý´ó¿é£º

°æ±¾£ºÃ¿¸ö×é¼þÔÚ¹¹½¨ÆÚ¼ä¾ÍÓɹ¹½¨²å¼þ·ÖÅä×Ô¼ºµÄ°æ±¾ºÅ£¬Í¬Ê±°²×°ÆÚ¼äÒ²Óи÷×Եİ汾Ŀ¼£¬Ã¿¸öbundleµÄÆô¶¯¼ÓÔØ¶¼ÐèÒª¾­¹ý°æ±¾µÄУÑ飬×é¼þ·¢Éú¸üÐÂͬʱҲÏ·¢×îеİ汾ÐÅÏ¢¡£ÒÀÍа汾¹ÜÀí»úÖÆ×é¼þµÄÈȸüÐÂÄÜÁ¦Ë®µ½Çþ³É¡£

Çåµ¥£ºOSGI¹æ·¶ÖÐÿ¸ö×é¼þͨ³£Í¨¹ýOSGI.MFÀ´±©Â¶×ÔÉíµÄcomponent,ÕâÊÇÓëAtlasÈÝÆ÷Ëù²»Í¬µÄµØ·½¡£ÔÚAndroidÉ豸ÉÏ£¬¶àÎļþµÄÐÎʽºÜÈÝÒ×ÊÜIOÒì³£µÄÓ°Ïì¸ÉÈÅbundleÕý³£ÔËÐУ¬ËùÒÔÎÒÃDzÉÓÃÁ˹¹½¨ÆÚ¼ä¼¯ÖÐÉú³ÉÇåµ¥µÄ·½Ê½£¬Çåµ¥ÀïÃæ¼Ç¼bundleËùÓеÄcomponent(AndroidËÄ´ó×é¼þ)£¬ÒÀÀµ¡¢packagenameµÈÄÚÈÝ¡£

´úÀí£º¸÷¸öϵͳ¹Ø¼üµãµÄ×¢ÈëʹµÃbundle¿ÉÒÔ×öµ½°´Ðè¼ÓÔØ£¬±ÜÃâÁËÏñÔ­Éúmultidex·½°¸ÓÉÓÚÊ×´ÎÆô¶¯Ê±¶àdexͬ²½°²×°¶øÔì³ÉUI¿¨¶ÙµÄÇé¿ö£¬´úÀí²ãµÄºËÐÄDelegateClassLoader¸ºÔðÀàµÄ²éÕҺͷÓÉ£¬DelegateResource¹ÜÀíËùÓÐbundleµÄ×ÊÔ´£¬ËüÃÇÔÚÈÝÆ÷Æô¶¯Ê±½øÐÐ×¢È룬²¢ÔÚÔËÐйý³ÌÖÐËæ×ÅbundleµÄ²»¶ÏÔØÈë½øÐиüС£ ? ½ÓÈë²ã ¼òµ¥ÊÇÃÀ-¸´ÔӵĶ«Î÷Áô¸ø×Ô¼º¡£ÎªÁË·½±ã£¬AtlasÈÝÆ÷ÓÐ×ÔÉí¶ÀÁ¢µÄApplication¸ºÔðÆô¶¯£¬Í¬Ê±ÔÚ¹¹½¨ÆÚ¼ä»áÓɲå¼þÌæ»»Ó¦ÓÃÔ­ÓеÄApplication¡£ÔËÐÐÆÚ¼äÓ¦ÓÃÊ×ÏÈÓÉAtlasBridgeApplication¸ºÔðÆô¶¯£¬²¢ÔÚÈÝÆ÷Æô¶¯Íê±ÏºóȫȨ´úÀí¸øÓ¦ÓÃÕæÕýµÄApplication£»Í¬Ê±¶ÔÐèÒª×Ô¶¨ÒåºÍÓÉÍⲿ¾ö²ßµÄ¹¦ÄÜ£¬ÈÝÆ÷¿ª·Å½Ó¿ÚÓɽÓÈë·½¼òµ¥ÉèÖá£

½âñîºÍÒÀÀµ

ÒÀÍÐclassloader£¬×é¼þµÄ¶ÀÁ¢ÐÔÓÐÁ˳ä·ÖµÄ±£Ö¤£¬Í¬Ê±ÓÉÓÚBundleClassloader±£³ÖÁ˶ÔPatchClassLoaderµÄÒýÓã¬Ê¹µÃËÞÖ÷µÄÖмä¼þ¾ÍÈçͬÆÕͨAPk¿ª·¢Ò»Ñù¿ÉÒÔ±»×é¼þ¼òµ¥µ÷Óã»Í¬Ê±×é¼þÖ®¼ä³ýÁË»ùÓÚAIDLµÄ·þÎñµ÷Óã¬×é¼þÖ®¼äÌṩÁ˾²Ì¬ÒÀÀµºÍÔËÐÐʱÒÀÀµ£¬Ï໥ÒÀÀµµÄ×é¼þ¿ÉÒÔͨ¹ýÅäÖôò³É£¬ÕâÔÚÒ»¶¨³Ì¶ÈÉÏʹijЩƫ¹¦ÄܵĴúÂë»òÕßUIµÄÖØÓóÉΪ¿ÉÄÜ£¬Í¬Ê±ÅäÖõķ½Ê½Ê¹×é¼þÖ®¼äµÄ¹ØÏµ¿ÉÒÔÇåÎú×·ËÝ¡£

ÐÔÄܵÄÑݽø

1.Òì²½°´Ð裺ÓÉÓÚÿ¸ö×é¼þÊÇÒ»¸öСÐÍApkµÄ½á¹¹£¬Ã¿¸ö×é¼þ°²×°Ê¹ÆäÉæ¼°µ½ÎļþµÄ¿½±´¡¢native libµÄ½âѹÒÔ¼°Ð£ÑéÔØÈëµÈ¹ý³Ì¡£ÌرðÊÇserviceµÈºǫ́component´¥·¢×é¼þ°²×°ºÍǰ̨ActivityÒý·¢×é¼þ°²×°²¢ÐÐʱUIµÄÁ÷³©ºÜÊÜÓ°Ï졣ΪÁ˽µµÍ¶ÔUIµÄÓ°Ï죬ÿ¸ö×é¼þµÄ°²×°¶¼ÔÚÒ»¸öͳһµÄÒì²½°²×°Ïß³ÌÖнøÐС£Activity¡¢service¡¢receiverµÈµÄ·¢Æð¶¼±»½øÐÐÁËÒì²½µÄ´¦Àí¡£

2.½âÊÍÖ´ÐУº×é¼þµÄ´úÂëÔÚ°²×°ºó»¹ÐèÒªdexopt²ÅÄÜʹÓã¬ÕâÒ»¹ý³ÌÔÚartÉϵÄʱ¼äÏûºÄÓÈΪÃ÷ÏÔ£¬ÎªÁ˽µµÍÓû§µÈ´ýʱ¼ä£¬Atlas¿ò¼Ü¶ÔdalivkϵͳÉÏÊ×´ÎʹÓÃbundleʱ¹Ø±ÕÁËverify£¬ÔÚartϵͳÉÏÊ×´ÎʹÓÃʱ¹Ø±ÕÁËdex2oat×ß½âÊÍÖ´ÐУ¬±£ÕÏbundleÊ״νøÈ뾡¿ÉÄܵظßЧ£¬Í¬Ê±ºǫ́ͨ¹ýÒì²½ÈÎÎñ×ßÔ­ÉúµÄdexopt¹ý³Ì£¬ÎªÏ´ÎʹÓÃ×öºÃ×¼±¸¡£

¶¯Ì¬ÐÔµÄÔöÇ¿

1.Ô¶³Ì×é¼þ£º²å¼þ»¯Ê±´úµÄ°´ÐèÏÂÔØ²¢Ã»Óб»·ÏÆú£¬¶ÀÁ¢µÄÔ¶³Ì×é¼þ¿ÉÒÔÂú×ãÓû§µÄ¸öÐÔ»¯ÐèÇó¡£»ùÓÚÓû§µÄ²Ù×÷ºÍÇåµ¥»úÖÆÔ¶³Ì×é¼þÔÚÓû§ÐèҪʱֻÐèÒª¼òµ¥µØµÈ´ý»òÕßÊÚȨ¾Í¿ÉÒÔ´ÓÔ¶¶ËÀ­µ¹±¾µØ¡£Í¬Ê±µ±Óû§É豸ÒòΪ¿Õ¼ä½ôÕÅʱÈÝÆ÷Ò²¿ÉÒÔÇåÀíµôһЩ³¤ÆÚ²»ÓõÄ×é¼þÒÔÊÍ·ÅÓµ¼·µÄ¿Õ¼ä

2.¶¯Ì¬²¿Ê𣺠¶¯Ì¬²¿ÊðÊÇÈÝÆ÷Ò»¸ö×îÖØÒªµÄ¹¦ÄÜ¡£»ùÓÚ´Ë£¬ÒµÎñ¿ÉÒÔÁé»î·¢²¼×Ô¼ºµÄÐèÇó£»ÓйÊÕϵÄÒµÎñ¿ÉÒÔ¼°Ê±ÐÞ¸´»òÕ߻عö£»Í¬Ê±¶¯Ì¬²¿ÊðµÄ¿ìËÙ¸²¸ÇÄÜÁ¦ÔڻҶȵȳ¡¾°Ï¿ÉÒÔ¸ü¿ìµØÊÕµ½ËùÐèµÄЧ¹û¡£¶¯Ì¬²¿ÊðµÄ·¶Î§Ò²Í¨¹ý¸ÄÔì½øÐÐÀ©´ó£¬´Ó×î³õµÄ×é¼þ²¿Êðµ½ÏÖÔÚÖ§³Ö³ýAtlasÈÝÆ÷С²¿·ÖºËÐÄ´úÂëÍâµÄËùÓдúÂ룬²¿Êðpatch°üµÄÌå»ýºÍÐÔÄܵĸĽøÒ²ÔÚ²»¶ÏµÄ½øÐиĽø¡£

diff

ÿ´Î´ó°æ±¾µÄ·¢°æ£¬¼¯³Éƽ̨»á±£Áô¸Ã´Î·¢°æµÄAP£¨ApÖмǼËùÓвÎÓë¹¹½¨µÄ¶þ·½¿âµÄ°æ±¾£¬×é¼þµÄÒÀÀµ£¬»ìÏýµÄmappingµÈ¸÷ÖÖÐÅÏ¢£©£¬ÔÚÊÖÌÔ½ÓÏÂÀ´Ã¿ÖÜÒ»´ÎµÄ¶¯Ì¬²¿Êðµü´úÖУ¬¶¯Ì¬²¿ÊðµÄ¹¹½¨»áÓë֮ǰµÄdex½øÐÐ×Ö½ÚÂë¼¶±ðµÄdiff£¬Éú³Étpatch°ü£¬×îÖÕÏ·¢µ½Óû§ÊÖ»úµÄpatch½ö°üº¬±ä»¯class×é³ÉµÄdexºÍ¸ü¸Ä»òÕßÐÂÔöµÄ×ÊÔ´Îļþ #### BundleµÄMerge patchÊÕµ½ºó£¬¿Í»§¶ËµÄmerge¹ý³Ì»á¸ù¾ÝpatchÐÅÏ¢£¬È¡µ½source ×é¼þ£¬source dexºÍpatch dex½øÐÐdexºÏ²¢£¬ºÏ³ÉеÄdex£¬Í¬Ê±±ä»¯µÄ×ÊÔ´¸²¸ÇÀϵÄ×ÊÔ´×îÖÕÐγÉеÄ×é¼þ¡£

Öмä¼þ²¿Êð

¶¯Ì¬²¿ÊðÄÜÁ¦µÄÔöÇ¿ÉÙ²»Á˶ԵײãÖмä¼þµÄÖ§³Ö£¬²¿ÊðµÄ»úÖÆÒ²Óëbundle½ØÈ»²»Í¬¡£

1.Öмä¼þ´úÂ벿Êð

DalvikºÍArtÔÚmerge¹ý³ÌÖж¼»áÐγÉÐÂpatch zip£¬zipÖÐdexÒÔ¶àdexµÄ·½Ê½ÃüÃû£¬patch dexΪclasses.dex,ԭʼapkÖеÄclasses.dexÒԴ˸ù¾ÝÐòºÅ+1·ÅÈëzipÖУ¬²»Í¬µÄÊÇdalvikÓÉÓÚpreVerifyµÄÏÞÖÆÐ´ÈëzipÖеÄÔ´dex»áÏȾ­¹ý´¦Àí£¬ÌÞ³ýÔÚpatchdexÖÐÒÑÓеÄclass£¬È·±£±»patchµÄdexÎÞ·¨±»´òÉÏpreVerifyµÄ±êÇ©£¬°²×°¹ý³ÌÖÐÔò¶à¸ödexÒÀ´Îdexopt£¬Í¬Ê±²åÈëµ½dexpatchµÄµÚһλ¡£¶øartÓÉÓÚÎÞpreVerifyУÑ飬µ«ÊÇAndroidµ½artºóÔ­ÓеÄdexopt»á¸ÄΪdex2oat£¬ÔËÐÐʱ´úÂëÓÉÔ­À´µÄ½âÊÍÖ´ÐиÄΪֱ½ÓÔËÐÐnative´úÂ룬֮ǰµÄʹÓùý³ÌÖз¢ÏÖµ¥´¿µÃÍùÇ°Ãæ×·¼ÓpatchµÄdex²¢²»ÄÜÍêÈ«½â¾ö¶¯Ì¬²¿ÊðµÄÎÊÌ⣬dex2oatµÄ¹ý³ÌÓÅ»¯ÁËclassµÄÖ´ÐдúÂ룬±ÈÈç˵ÄÚÁ²£¬Ð麯ÊýµÄУÑéµÈ¡£¾ÍÓпÉÄÜÔÚÔËÐйý³ÌÖÐÖ±½ÓÔÚnative²ãÖ´ÐÐÀϵÄÓÅ»¯¹ýµÄclass´úÂë¶ø²»ÊÇ´ÓÐÂpatchµÄdexÖÐloadеÄclassȥʹÓá£ËùÒÔÔÚartÉÏÀàËÆdalivk£¬·ÅÈëÔ´dex£¬Ö»ÊÇÔ´dex²»»á×öÈκδ¦Àí£¬È»ºóºÏ²¢ÔÚÒ»Æð×öÒ»±édex2oat£¬ÕâÑùÄÜʹеÄclass¸²¸ÇÀϵÄclass²ÎÓëdex2oat²¢Íê³ÉÓÅ»¯µÄ¹ý³Ì¡£

2. Öмä¼þ×ÊÔ´²¿Êð

×ÊÔ´²¿Êð»ùÓÚoverlay»úÖÆ´ï³É£¬²»¹ýdalivkÉÏÕâ¸ö»úÖÆ²¢²»Ö§³ÖÐÂÔö×ÊÔ´£¬ÔÚoverlayµÄ°üÀïÃæÈç¹û¶Áµ½ÁËÒ»¸ö×ÊÔ´£¬dalvikϵͳ»áȥУÑé¸Ã×ÊÔ´IDÔÚbaseÖÐÖµ£¬Èç¹û²»´æÔÚÔòÅ×´í£¬ËùÒÔ¶¯Ì¬²¿ÊðΪÁËÀûÓÃÕâÒ»ÌØÐÔͬʱ֧³ÖÐÂÔö×ÊÔ´µÄÐèÇó£¬ÔÚ´ò»ùÏß°üµÄʱºò¾ÍÔÚÿ¸ö²»Í¬µÄtypeÀïÃæÔ¤ÁôÁË128¸ö×ÊÔ´ID¹©ºóÐø¶¯Ì¬²¿ÊðʹÓã»Í¬Ê±´ò¶¯Ì¬²¿ÊðµÄpatchʱ»áÒÔ֮ǰµÄID·ÖÅäµÄÄÚÈÝ×÷ΪÊäÈ룬±£Ö¤ÒÑÓеÄ×ÊÔ´·ÖÅäµ½µÄID±£³Ö²»±ä£¬Í¬Ê±Èç¹û×ÊԴûÓз¢Éú±ä¸ü£¬ÔòÌÞ³ý¸Ã×ÊÔ´£¬ËùÒÔaapt dump resource patchµÄʱºòÎÒÃÇ¿´µ½µÄINVALID TYPE µÄ×ÊÔ´¶Î¾Í±íʾûÓз¢Éú±ä¸üµÄ×ÊÔ´£¬Èç¹ûÓз¢ÉúÁ˱ä¸ü£¬ÇÒ֮ǰÓÐÕâ¸ö×ÊÔ´£¬¾Í»áÔÚÔ­ÓеÄ×ÊÔ´ID·ÖÅä¹ýÈ¥£¬Í¬Ê±ÐµÄ×ÊÔ´Îļþ´òÈëpatch°ü»òÕßеÄ×ÊÔ´Îı¾Ð´Èëarsc£¬Èç¹ûÊÇÐÂÔöµÄ×ÊÔ´£¬ÔòʹÓÃÔ¤ÁôµÄ×ÊÔ´¶Î½øÐзÖÅä¡£Õû¸öÌæ»»¹ý³ÌÈçÏÂͼËùʾ£º

MacDown Screenshot

Atlas¶¯Ì¬²¿ÊðµÄÄÜÁ¦Ëæ×ÅÊÖÌÔµÄÐèÇ󲻶ϽøÐÐ×ÅÑݽø£¬Ëæ×ÅÕû¸ö¿ò¼ÜµÄ¿ªÔ´£¬×ÔÈ»ÐèÇó»á±äµÃ¸ü¼Ó¹ã·º¡£±ÈÈçÔÚÊÖÌÔÄÚ²¿Ò»ÖÜÒ»·¢°æµÄ½Ú×àÏ£¬¶¯Ì¬²¿Êð¶ÔÐÂÔöcomponentµÄijЩÐèÇó²¢²»Ç¿ÁÒ£¬¶ø¿ªÔ´ºó´ËÀ๦ÄÜ¿ÉÄÜ»áÓÈÎªÖØÒª£¬ËùÒÔ½ÓÏÂÀ´ÈÝÆ÷µÄ¸üеü´úÖдËÀàµÄ¹¦ÄÜÒ²»á¼°Ê±ÉÏÏß¡£Óµ±§¿ªÔ´ÉçÇø»áÊÇAtlasÖØÐÂÉóÊÓ×Ô¼º£¬¼ÌÐø·¢Õ¹µÄ¹Ø¼üÒ»²½¡£

δÀ´µÄ·

Ïà±ÈÓÚiOS£¬AndroidµÄÍÆ³Â³öеÄËÙ¶ÈÊǼ«¿ìµÄ¡£GoogleÔÚAndroidϵͳµÄ¸Ä½øÉîÈëµ½·½·½ÃæÃ棬×é¼þ»¯µÄ·¢Õ¹Ò²ÐèÒª½ô¸úAndroid²½·¥¡£

AtlasÆð²½µÄʱºòmultidex»¹Î´³öÀ´£¬½â¾ö·½·¨ÊýµÄÎÊÌâ¾ÍÄÜ´øÀ´×ã¹»µÄÓäÔá£ÏÖÔÚAtlas»ùÓÚ×é¼þ»¯¼õÉÙÖ÷dex·½·¨ÊýµÄͬʱ£¬Ò²Ö§³ÖÖ÷dexÔ­ÉúmultidexµÄÄÜÁ¦¡£Ä¿Ç°AtlasÄÚ²¿¼¯³ÉÁËmultidexµÄÄÜÁ¦£¬ÍⲿֻÐèÒª´ò¿ªmultidex¿ª¹Ø¼´¿É¡£Õâô×öµÄÄ¿µÄÒ»·½Ãæ±ÜÃâÍⲿ³õʼ»¯Êµ¼ÊµÄÎó½â£¬ÁíÒ»·½ÃæÎÒÃÇÒ²Òâʶµ½Ô­ÉúµÄmulitdexÔÚÐÔÄÜÉÏ»¹ÓкܶàÓÅ»¯µÄµã£¬ÎÒÃÇ»áÔÚºóÃæ¼°Ê±½øÐÐÓÅ»¯¡£

ÔÚ¿ª·¢µ÷ÊÔ·½Ã棬AtlasÈÝÆ÷¿ò¼Ü»ùÓÚ¶¯Ì¬²¿ÊðµÄÄÜÁ¦Ö§³Öµ¥¸ö×é¼þµÄ¶ÀÁ¢±àÒëµ÷ÊÔ£¬µ«ÊÇÏà±ÈinstantrunµÄËÙ¶È£¬Ä¿Ç°»¹ÓкܴóÌá¸ß¡£¶ø»ùÓÚinstant run¸ÄÔìµÄµ¥×é¼þÃë¼¶±àÒëÒ²ÒѾ­ÔÚ½ôÂàÃܹĵĿª·¢ÖУ¬ºóÐø»ùÓÚ¿ò¼ÜµÄ¶ÀÁ¢µ÷ÊÔ²å¼þÒ²½«»áÔÚAndroid studio²å¼þ¿âÖÐÉÏÏß¡£

Androidϵͳ»úÖÆµÄÑݽøÒ²±Þ²ß×Ŷ¯Ì¬²¿ÊðǰÐС£±ÈÈç16ÄêAndroid 7.0µÄ»ìºÏ±àÒ뵱ʱҲ¸øAtlasÔì³ÉÁ˲»Ð¡µÄÌôÕ½£¬·þÎñÓÚÒÚ¼¶µÄuv£¬¶¯Ì¬²¿ÊðµÄÄÜÁ¦µÄ¸²¸ÇÃæ¡¢µ½´ïÂʶ¼»¹ÓнøÒ»²½ÌáÉýµÄ¿Õ¼ä£¬Ïà±ÈandfixµÈÈȲ¿ÊðÐÞ¸´·½°¸£¬¶¯Ì¬²¿ÊðÐèÒªÖØÆôÀ´´òµ½¸üеÄÄÜÁ¦¿ÉÄÜÒ²ÐèÒªÓÐеÄת±ä¡£

ÊÐÃæÉÏÐíÐí¶à¶àµÄÈÝÆ÷¿ò¼Ü£¬»ù±¾Ë¼Â·¾Í´óÖÂÁ½ÈýÖÖ¡£Atlas±¾ÉíҲûÓÐÌØ±ðеļ¼Êõ£¬ÓеÄÊÇ»ùÓÚÒÑÓеÄ֪ʶ½øÐв»¶ÏµÄÖØ×éºÍÓÅ»¯¡£ÔÚÊÖÌÔÄÚ²¿£¬×·Çó¸ü¸ßµÄÎȶ¨ÐÔºÍÐÔÄÜ£¬ÒÚ¼¶µÄUVÐèÒª¼°ÆäÎȶ¨µÄÈÝÆ÷À´³ÐÔØ£¬Í¬Ê±AtlasÒ²²»¶Ï³¢ÊÔÐµķ½°¸£¬ÔÚ´´ÐÂÓëʵÓÃÖ®¼ä²»¶ÏȨºâ¡£AtlasÊÇÒ»¸ö½á¹¹¼òÃ÷µÄÈÝÆ÷¿ò¼Ü£¬Í¨¹ý¾¡Á¿¼òµ¥µÄ˼·ȥ½â¾öÒÆ¶¯Ó¦Óôӿª·¢µ½ÔËάÖеĵÄèäèô£¬Èÿª·¢Öеĸ´ÔÓ¼òµ¥»¯£¬ÈÃά»¤Öеĸ´ÔÓ¼òµ¥»¯£¬Èÿª·¢´ÓÁ÷Ë®ÏßÉÏæµµÄ¹¤×÷»Øµ½×¨×¢ÓÚ¶Ô×îÖÕÄ¿±êµÄ¾«¸ûϸ×÷£¬Å׿ªàÐÔӵĸÉÈÅ£¬²¦¿ªÐéÎÞçÎç¿£¬µ½´ïÔÆºÍɽµÄ±Ë¶Ë£¡

 

   
1634 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì