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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android³¹µ××é¼þ»¯·½°¸Êµ¼ù
 
À´Ô´£ºÒƶ¯¿ª·¢Ç°Ïß ·¢²¼ÓÚ£º 2017-8-1
  2047  次浏览      27
 

Ò»¡¢Ä£¿é»¯¡¢×é¼þ»¯Óë²å¼þ»¯

ÏîÄ¿·¢Õ¹µ½Ò»¶¨³Ì¶È£¬Ëæ×ÅÈËÔ±µÄÔö¶à£¬´úÂëÔ½À´Ô½Ó·Ö×£¬Õâʱºò¾Í±ØÐë½øÐÐÄ£¿é»¯µÄ²ð·Ö¡£ÔÚÎÒ¿´À´£¬Ä£¿é»¯ÊÇÒ»ÖÖÖ¸µ¼ÀíÄÆäºËÐÄ˼Ïë¾ÍÊÇ·Ö¶øÖÎÖ®¡¢½µµÍñîºÏ¡£¶øÔÚ Android ¹¤³ÌÖÐÈçºÎʵʩ£¬Ä¿Ç°ÓÐÁ½ÖÖ;¾¶£¬Ò²ÊÇÁ½´óÁ÷ÅÉ£¬Ò»¸öÊÇ×é¼þ»¯£¬Ò»¸öÊDzå¼þ»¯¡£

ÌáÆð×é¼þ»¯ºÍ²å¼þ»¯µÄÇø±ð£¬ÓÐÒ»¸öºÜÐÎÏóµÄͼ£º

ÉÏÃæµÄͼ¿´ÉÏÈ¥±È½ÏÇåÎú£¬ÆäʵÈÝÒ×µ¼ÖÂһЩÎó½â£¬ÓÐÏÂÃæ¼¸¸öСÎÊÌ⣬ͼÖпÉÄÜ˵µÄ²»Ì«Çå³þ£º

×é¼þ»¯ÊÇÒ»¸öÕûÌåÂð?È¥ÁËÍ·ºÍ¸ì²²»¹ÄÜ´æÔÚÂð?×óͼÖУ¬Ëƺõ×é¼þ»¯ÊÇÒ»¸öÓлúµÄÕûÌ壬ÐèÒªËùÓÐÆ÷¹Ù¶¼½¡ÔڲſÉÒÔ´æÔÚ¡£¶øÊµ¼ÊÉÏ×é¼þ»¯µÄÄ¿±êÖ®Ò»¾ÍÊǽµµÍÕûÌå(app)ÓëÆ÷¹Ù(×é¼þ)µÄÒÀÀµ¹ØÏµ£¬È±ÉÙÈκÎÒ»¸öÆ÷¹Ù app ¶¼ÊÇ¿ÉÒÔ´æÔÚ²¢Õý³£ÔËÐеġ£

Í·ºÍ¸ì²²¿ÉÒÔµ¥¶À´æÔÚÂð?×óͼҲûÓÐ˵Ã÷°×£¬Æäʵ´ð°¸Ó¦¸ÃÊǿ϶¨µÄ¡£Ã¿¸öÆ÷¹Ù(×é¼þ)¿ÉÒÔÔÚ²¹×ãһЩ»ù±¾¹¦ÄÜÖ®ºó¶¼ÊÇ¿ÉÒÔ¶ÀÁ¢´æ»îµÄ¡£Õâ¸öÊÇ×é¼þ»¯µÄµÚ¶þ¸öÄ¿±ê£º×é¼þ¿ÉÒÔµ¥¶ÀÔËÐС£

×é¼þ»¯ºÍ²å¼þ»¯¿ÉÒÔ¶¼ÓÃÓÒͼÀ´±íʾÂð?Èç¹ûÉÏÃæÁ½¸öÎÊÌâµÄ´ð°¸¶¼ÊÇ YES µÄ»°£¬Õâ¸öÎÊÌâµÄ´ð°¸×ÔȻҲÊÇ YES¡£Ã¿¸ö×é¼þ¶¼¿ÉÒÔ¿´³ÉÒ»¸öµ¥¶ÀµÄÕûÌ壬¿ÉÒÔ°´ÐèµÄºÍÆäËû×é¼þ(°üÀ¨Ö÷ÏîÄ¿)ÕûºÏÔÚÒ»Æð£¬´Ó¶øÍê³ÉµÄÐγÉÒ»¸ö app¡£

ÓÒͼÖеÄС»úÆ÷ÈË¿ÉÒÔ¶¯Ì¬µÄÌí¼ÓºÍÐÞ¸ÄÂð?Èç¹û×é¼þ»¯ºÍ²å¼þ»¯¶¼ÓÃÓÒͼÀ´±íʾ£¬ÄÇôÕâ¸öÎÊÌâµÄ´ð°¸¾Í²»Ò»ÑùÁË¡£¶ÔÓÚ×é¼þ»¯À´½²£¬Õâ¸öÎÊÌâµÄ´ð°¸ÊDz¿·Ö¿ÉÒÔ£¬Ò²¾ÍÊÇÔÚ±àÒëÆÚ¿ÉÒÔ¶¯Ì¬µÄÌí¼ÓºÍÐ޸쬵«ÊÇÔÚÔËÐÐʱ¾Íû·¨Õâô×öÁË¡£¶ø¶ÔÓÚ²å¼þ»¯£¬Õâ¸öÎÊÌâµÄ´ð°¸ºÜ¸É´à£¬ÄǾÍÊÇÍêÈ«¿ÉÒÔ£¬²»ÂÛʵÔÚ±àÒëÆÚ»¹ÊÇÔËÐÐʱ!

±¾ÎÄÖ÷Òª¼¯Öн²µÄÊÇ×é¼þ»¯µÄʵÏÖ˼·£¬¶ÔÓÚ²å¼þ»¯µÄ¼¼Êõϸ½Ú²»×öÌÖÂÛ£¬ÎÒÃÇÖ»ÊÇ´ÓÉÏÃæµÄÎÊ´ðÖÐ×ܽá³öÒ»¸ö½áÂÛ£º×é¼þ»¯ºÍ²å¼þ»¯µÄ×î´óÇø±ð(Ó¦¸ÃÒ²ÊÇÎ¨Ò»Çø±ð)¾ÍÊÇ×é¼þ»¯ÔÚÔËÐÐʱ²»¾ß±¸¶¯Ì¬Ìí¼ÓºÍÐÞ¸Ä×é¼þµÄ¹¦ÄÜ£¬µ«ÊDzå¼þ»¯ÊÇ¿ÉÒԵġ£

ÔÝÇÒÅׯú¶Ô²å¼þ»¯¡°µÀµÂ¡±ÉϵÄÅúÅУ¬ÎÒÈÏΪ¶ÔÓÚÒ»¸ö Android ¿ª·¢ÕßÀ´½²£¬²å¼þ»¯µÄÈ·ÊÇÒ»¸ö¸£Òô£¬Õ⽫ʹÎÒÃǾ߱¸¼«´óµÄÁé»îÐÔ¡£µ«ÊÇ¿àÓÚĿǰ»¹Ã»ÓÐÒ»¸öÍêÈ«ºÏÊÊ¡¢ÍêÃÀ¼æÈݵIJå¼þ»¯·½°¸(RePlugin µÄ¼¢¶öÓªÏú×öµÄºÜºÃ£¬µ«»¹Ã»¿´µ½ÁÆÐ§)£¬ÌرðÊǶÔÓÚÒѾ­Óм¸Ê®Íò´úÂëÁ¿µÄÒ»¸ö³ÉÊì²úÆ·À´½²£¬Ì×ÓÃÈκÎÒ»¸ö²å¼þ»¯·½°¸¶¼ÊǺÜΣÏյŤ×÷¡£ËùÒÔÎÒÃǾö¶¨ÏÈ´Ó×é¼þ»¯×öÆð£¬±¾×Å×öÒ»¸ö×î³¹µ×µÄ×é¼þ»¯·½°¸µÄ˼·ȥ½øÐдúÂëµÄÖØ¹¹£¬ÏÂÃæÊÇ×î½üµÄ˼¿¼½á¹û£¬»¶Ó­´ó¼ÒÌá³ö½¨ÒéºÍÒâ¼û¡£

¶þ¡¢ÈçºÎʵÏÖ×é¼þ»¯

ҪʵÏÖ×é¼þ»¯£¬²»ÂÛ²ÉÓÃʲôÑùµÄ¼¼Êõ·¾¶£¬ÐèÒª¿¼ÂǵÄÎÊÌâÖ÷Òª°üÀ¨ÏÂÃæ¼¸¸ö£º

´úÂë½âñî¡£ÈçºÎ½«Ò»¸öÅÓ´óµÄ¹¤³Ì²ð·Ö³ÉÓлúµÄÕûÌå?

×é¼þµ¥¶ÀÔËÐС£ÉÏÃæÒ²½²µ½ÁË£¬Ã¿¸ö×é¼þ¶¼ÊÇÒ»¸öÍêÕûµÄÕûÌ壬ÈçºÎÈÃÆäµ¥¶ÀÔËÐк͵÷ÊÔÄØ?

Êý¾Ý´«µÝ¡£ÒòΪÿ¸ö×é¼þ¶¼»á¸øÆäËû×é¼þÌṩµÄ·þÎñ£¬ÄÇôÖ÷ÏîÄ¿(Host)Óë×é¼þ¡¢×é¼þÓë×é¼þÖ®¼äÈçºÎ´«µÝÊý¾Ý?

UI Ìø×ª¡£UI Ìø×ª¿ÉÒÔÈÏΪÊÇÒ»ÖÖÌØÊâµÄÊý¾Ý´«µÝ£¬ÔÚʵÏÖ˼·ÉÏÓÐɶ²»Í¬?

×é¼þµÄÉúÃüÖÜÆÚ¡£ÎÒÃǵÄÄ¿±êÊÇ¿ÉÒÔ×öµ½¶Ô×é¼þ¿ÉÒÔ°´Ðè¡¢¶¯Ì¬µÄʹÓã¬Òò´Ë¾Í»áÉæ¼°µ½×é¼þ¼ÓÔØ¡¢Ð¶ÔغͽµÎ¬µÄÉúÃüÖÜÆÚ¡£

¼¯³Éµ÷ÊÔ¡£ÔÚ¿ª·¢½×¶ÎÈçºÎ×öµ½°´ÐèµÄ±àÒë×é¼þ?Ò»´Îµ÷ÊÔÖпÉÄÜÖ»ÓÐÒ»Á½¸ö×é¼þ²ÎÓ뼯³É£¬ÕâÑù±àÒëµÄʱ¼ä¾Í»á´ó´ó½µµÍ£¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£

´úÂë¸ôÀë¡£×é¼þÖ®¼äµÄ½»»¥Èç¹û»¹ÊÇÖ±½ÓÒýÓõϰ£¬ÄÇô×é¼þÖ®¼ä¸ù±¾Ã»ÓÐ×öµ½½âñÈçºÎ´Ó¸ù±¾ÉϱÜÃâ×é¼þÖ®¼äµÄÖ±½ÓÒýÓÃÄØ?Ò²¾ÍÊÇÈçºÎ´Ó¸ù±¾É϶žøñîºÏµÄ²úÉúÄØ?Ö»ÓÐ×öµ½ÕâÒ»µã²ÅÊdz¹µ×µÄ×é¼þ»¯¡£

2.1 ´úÂë½âñî

°ÑÅÓ´óµÄ´úÂë½øÐвð·Ö£¬Androidstudio Äܹ»ÌṩºÜºÃµÄÖ§³Ö£¬Ê¹Óà IDE ÖÐµÄ multiple module Õâ¸ö¹¦ÄÜ£¬ÎÒÃǺÜÈÝÒ×°Ñ´úÂë½øÐгõ²½µÄ²ð·Ö¡£ÔÚÕâÀïÎÒÃǶÔÁ½ÖÖ module ½øÐÐÇø·Ö£º

Ò»ÖÖÊÇ»ù´¡¿â library£¬ÕâЩ´úÂë±»ÆäËû×é¼þÖ±½ÓÒýÓᣱÈÈçÍøÂç¿â module ¿ÉÒÔÈÏΪÊÇÒ»¸ö library¡£

ÁíÒ»ÖÖÎÒÃdzÆÖ®Îª Component£¬ÕâÖÖ module ÊÇÒ»¸öÍêÕûµÄ¹¦ÄÜÄ£¿é¡£±ÈÈç¶ÁÊé»òÕß·ÖÏí module ¾ÍÊÇÒ»¸ö Component¡£

ΪÁË·½±ã£¬ÎÒÃÇͳһ°Ñ library ³ÆÖ®ÎªÒÀÀµ¿â£¬¶ø°Ñ Component ³ÆÖ®Îª×é¼þ£¬ÎÒÃÇËù½²µÄ×é¼þ»¯Ò²Ö÷ÒªÊÇÕë¶Ô Component ÕâÖÖÀàÐÍ¡£¶ø¸ºÔðÆ´×°ÕâЩ×é¼þÒÔÐγÉÒ»¸öÍê³É app µÄ module£¬Ò»°ãÎÒÃdzÆÖ®ÎªÖ÷ÏîÄ¿¡¢Ö÷ module »òÕß Host£¬·½±ãÆð¼ûÎÒÃÇҲͳһ³ÆÎªÖ÷ÏîÄ¿¡£

¾­¹ý¼òµ¥µÄ˼¿¼£¬ÎÒÃÇ¿ÉÄܾͿÉÒÔ°Ñ´úÂë²ð·Ö³ÉÏÂÃæµÄ½á¹¹£º

×é¼þ»¯¼òµ¥²ð·Ö

ÕâÖÖ²ð·Ö¶¼ÊDZȽÏÈÝÒ××öµ½µÄ£¬´ÓͼÉÏ¿´£¬¶ÁÊé¡¢·ÖÏíµÈ¶¼ÒѾ­²ð·Ö×é¼þ£¬²¢¹²Í¬ÒÀÀµÓÚ¹«¹²µÄÒÀÀµ¿â(¼òµ¥Æð¼ûÖ»»­ÁËÒ»¸ö)£¬È»ºóÕâЩ×é¼þ¶¼±»Ö÷ÏîÄ¿ËùÒýÓ᣶ÁÊé¡¢·ÖÏíµÈ×é¼þÖ®¼äûÓÐÖ±½ÓµÄÁªÏµ£¬ÎÒÃÇ¿ÉÒÔÈÏΪÒѾ­×öµ½ÁË×é¼þÖ®¼äµÄ½âñî¡£µ«ÊÇÕâ¸öͼÓм¸¸öÎÊÌâÐèÒªÖ¸³ö£º

´ÓÉÏÃæµÄͼÖУ¬ÎÒÃÇËÆºõ¿ÉÒÔÈÏΪ×é¼þÖ»Óм¯³Éµ½Ö÷ÏîÄ¿²Å¿ÉÒÔʹÓ㬶øÊµ¼ÊÉÏÎÒÃǵÄÏ£ÍûÊÇÿ¸ö×é¼þÊǸöÕûÌ壬¿ÉÒÔ¶ÀÁ¢ÔËÐк͵÷ÊÔ£¬ÄÇôÈçºÎ×öµ½µ¥¶ÀµÄµ÷ÊÔÄØ?

Ö÷ÏîÄ¿¿ÉÒÔÖ±½ÓÒýÓÃ×é¼þÂð?Ò²¾ÍÊÇ˵ÎÒÃÇ¿ÉÒÔÖ±½ÓʹÓà compile project(:reader) ÕâÖÖ·½Ê½À´ÒýÓÃ×é¼þÂð?Èç¹ûÊÇÕâÑùµÄ»°£¬ÄÇôÖ÷ÏîÄ¿ºÍ×é¼þÖ®¼äµÄñîºÏ¾ÍûÓÐÏû³ý°¡¡£ÎÒÃÇÉÏÃæ½²£¬×é¼þÊÇ¿ÉÒÔ¶¯Ì¬¹ÜÀíµÄ£¬Èç¹ûÎÒÃÇɾµô reader(¶ÁÊé)Õâ¸ö×é¼þ£¬ÄÇôÖ÷ÏîÄ¿¾Í²»ÄܱàÒëÁ˰¡£¬Ì¸ºÎ¶¯Ì¬¹ÜÀíÄØ?ËùÒÔÖ÷ÏîÄ¿¶Ô×é¼þµÄÖ±½ÓÒýÓÃÊDz»¿ÉÒԵ쬵«ÊÇÎÒÃǵĶÁÊé×é¼þ×îÖÕÊÇÒª´òµ½ apk ÀïÃæ£¬²»½ö´úÂëÒªºÍ²¢µ½ claases.dex ÀïÃæ£¬×ÊÔ´Ò²Òª¾­¹ý meage ²Ù×÷ºÏ²¢µ½ apk µÄ×ÊÔ´ÀïÃæ£¬Ôõô±ÜÃâÕâ¸öì¶ÜÄØ?

×é¼þÓë×é¼þÖ®¼äÕæµÄûÓÐÏ໥ÒýÓûòÕß½»»¥Âð?¶ÁÊé×é¼þÒ²»áµ÷Ó÷ÖÏíÄ£¿é°¡£¬¶øÕâÔÚͼÖиù±¾Ã»ÓÐÌåÏÖ³öÀ´°¡£¬ÄÇô×é¼þÓë×é¼þÖ®¼äÔõô½»»¥ÄØ?

ÕâЩÎÊÌâÎÒÃǺóÃæÒ»¸ö¸öÀ´½â¾ö£¬Ê×ÏÈÎÒÃÇÏÈ¿´´úÂë½âñîÒª×öµ½Ê²Ã´Ð§¹û£¬ÏñÉÏÃæµÄÖ±½ÓÒýÓò¢Ê¹ÓÃÆäÖеÄÀà¿Ï¶¨ÊDz»ÐеÄÁË¡£ËùÒÔÎÒÃÇÈÏΪ´úÂë½âñîµÄÊ×ҪĿ±ê¾ÍÊÇ×é¼þÖ®¼äµÄÍêÈ«¸ôÀ룬ÎÒÃDz»½ö²»ÄÜÖ±½ÓʹÓÃÆäËû×é¼þÖеÄÀ࣬×îºÃÄܸù±¾²»Á˽âÆäÖеÄʵÏÖϸ½Ú¡£Ö»ÓÐÕâÖ̶ֳȵĽâñî²ÅÊÇÎÒÃÇÐèÒªµÄ¡£

2.2 ×é¼þµÄµ¥¶Àµ÷ÊÔ

Æäʵµ¥¶Àµ÷ÊԱȽϼòµ¥£¬Ö»ÐèÒª°Ñ apply plugin: 'com.android.library'Çл»³É apply plugin: 'com.android.application'¾Í¿ÉÒÔ£¬µ«ÊÇÎÒÃÇ»¹ÐèÒªÐÞ¸ÄһϠAndroidManifest Îļþ£¬ÒòΪһ¸öµ¥¶Àµ÷ÊÔÐèÒªÓÐÒ»¸öÈë¿ÚµÄ actiivity¡£

ÎÒÃÇ¿ÉÒÔÉèÖÃÒ»¸ö±äÁ¿ isRunAlone£¬±ê¼Çµ±Ç°ÊÇ·ñÐèÒªµ¥¶Àµ÷ÊÔ£¬¸ù¾Ý isRunAlone µÄȡֵ£¬Ê¹Óò»Í¬µÄ gradle ²å¼þºÍ AndroidManifest Îļþ£¬ÉõÖÁ¿ÉÒÔÌí¼Ó Application µÈ Java Îļþ£¬ÒÔ±ã¿ÉÒÔ×öһϳõʼ»¯µÄ²Ù×÷¡£

ΪÁ˱ÜÃⲻͬ×é¼þÖ®¼ä×ÊÔ´ÃûÖØ¸´£¬ÔÚÿ¸ö×é¼þµÄ build.gradle ÖÐÔö¼Ó resourcePrefix "xxx_"£¬´Ó¶ø¹Ì¶¨Ã¿¸ö×é¼þµÄ×ÊԴǰ׺¡£ÏÂÃæÊǶÁÊé×é¼þµÄ build.gradle µÄʾÀý£º

if(isRunAlone.toBoolean()){
apply plugin: 'com.android.application'
}else{
apply plugin: 'com.android.library'
}
.....
resourcePrefix "readerbook_"
sourceSets {
main {
if (isRunAlone.toBoolean()) {
manifest.srcFile 'src/main/runalone/AndroidManifest.xml'
java.srcDirs = ['src/main/java','src/main/runalone/java']
res.srcDirs = ['src/main/res','src/main/runalone/res']
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
}
}
}

ͨ¹ýÕâЩ¶îÍâµÄ´úÂ룬ÎÒÃǸø×é¼þ´î½¨ÁËÒ»¸ö²âÊÔ Host£¬´Ó¶øÈÃ×é¼þµÄ´úÂëÔËÐÐÔÚÆäÖУ¬ËùÒÔÎÒÃÇ¿ÉÒÔÔÙÓÅ»¯Ò»ÏÂÎÒÃÇÉÏÃæµÄ¿ò¼Üͼ¡£

Ö§³Öµ¥¶Àµ÷ÊÔµÄ×é¼þ»¯

2.3 ×é¼þµÄÊý¾Ý´«Êä

ÉÏÃæÎÒÃǽ²µ½£¬Ö÷ÏîÄ¿ºÍ×é¼þ¡¢×é¼þÓë×é¼þÖ®¼ä²»ÄÜÖ±½ÓʹÓÃÀàµÄÏ໥ÒýÓÃÀ´½øÐÐÊý¾Ý½»»¥¡£ÄÇôÈçºÎ×öµ½Õâ¸ö¸ôÀëÄØ?ÔÚÕâÀïÎÒÃDzÉÓÃ½Ó¿Ú + ʵÏֵĽṹ¡£Ã¿¸ö×é¼þÉùÃ÷×Ô¼ºÌṩµÄ·þÎñ Service£¬ÕâЩ Service ¶¼ÊÇһЩ³éÏóÀà»òÕß½Ó¿Ú£¬×é¼þ¸ºÔð½«ÕâЩ Service ʵÏÖ²¢×¢²áµ½Ò»¸öͳһµÄ·ÓÉ Router ÖÐÈ¥¡£Èç¹ûҪʹÓÃij¸ö×é¼þµÄ¹¦ÄÜ£¬Ö»ÐèÒªÏò Router ÇëÇóÕâ¸ö Service µÄʵÏÖ£¬¾ßÌåµÄʵÏÖϸ½ÚÎÒÃÇȫȻ²»¹ØÐÄ£¬Ö»ÒªÄÜ·µ»ØÎÒÃÇÐèÒªµÄ½á¹û¾Í¿ÉÒÔÁË¡£ÕâÓë Binder µÄ C/S ¼Ü¹¹ºÜÏàÏñ¡£

ÒòΪÎÒÃÇ×é¼þÖ®¼äµÄÊý¾Ý´«µÝ¶¼ÊÇ»ùÓÚ½Ó¿Ú±à³ÌµÄ£¬½Ó¿ÚºÍʵÏÖÊÇÍêÈ«·ÖÀëµÄ£¬ËùÒÔ×é¼þÖ®¼ä¾Í¿ÉÒÔ×öµ½½âñÎÒÃÇ¿ÉÒÔ¶Ô×é¼þ½øÐÐÌæ»»¡¢É¾³ýµÈ¶¯Ì¬¹ÜÀí¡£ÕâÀïÃæÓм¸¸öСÎÊÌâÐèÒªÃ÷È·£º

×é¼þÔõô±©Â¶×Ô¼ºÌṩµÄ·þÎñÄØ?ÔÚÏîÄ¿ÖÐÎÒÃǼòµ¥Æð¼û£¬×¨ÃލÁ¢ÁËÒ»¸ö componentservice µÄÒÀÀµ¿â£¬ÀïÃæ¶¨ÒåÁËÿ¸ö×é¼þÏòÍâÌṩµÄ service ºÍһЩ¹«¹² model¡£½«ËùÓÐ×é¼þµÄ service ÕûºÏÔÚÒ»Æð£¬ÊÇΪÁËÔÚ²ð·Ö³õÆÚ²Ù×÷¸üΪ¼òµ¥£¬ºóÃæÐèÒª¸ÄΪ×Ô¶¯»¯µÄ·½Ê½À´Éú³É¡£Õâ¸öÒÀÀµ¿âÐèÒªÑϸñ×ñÑ­¿ª±ÕÔ­Ôò£¬ÒÔ±ÜÃâ³öÏÖ°æ±¾¼æÈݵÈÎÊÌâ¡£

service µÄ¾ßÌåʵÏÖÊÇÓÉËùÊô×é¼þ×¢²áµ½ Router Öеģ¬ÄÇôÊÇÔÚʲôʱ¼ä×¢²áµÄÄØ?Õâ¸ö¾ÍÉæ¼°µ½×é¼þµÄ¼ÓÔØµÈÉúÃüÖÜÆÚ£¬ÎÒÃÇÔÚºóÃæ×¨ÃŽéÉÜ¡£

Ò»¸öºÜÈÝÒ×·¸µÄС´íÎó¾ÍÊÇͨ¹ý³Ö¾Ã»¯µÄ·½Ê½À´´«µÝÊý¾Ý£¬ÀýÈç file¡¢sharedpreference µÈ·½Ê½£¬Õâ¸öÊÇÐèÒª±ÜÃâµÄ¡£

ÏÂÃæ¾ÍÊǼÓÉÏÊý¾Ý´«Ê书ÄÜÖ®ºóµÄ¼Ü¹¹Í¼£º

×é¼þÖ®¼äµÄÊý¾Ý´«Êä

2.4 ×é¼þÖ®¼äµÄ UI Ìø×ª

¿ÉÒÔ˵ UI µÄÌø×ªÒ²ÊÇ×é¼þÌṩµÄÒ»ÖÖÌØÊâµÄ·þÎñ£¬¿ÉÒÔ¹éÊôµ½ÉÏÃæµÄÊý¾Ý´«µÝÖÐÈ¥¡£²»¹ýÒ»°ã UI µÄÌø×ªÎÒÃǻᵥ¶À´¦Àí£¬Ò»°ãͨ¹ý¶ÌÁ´µÄ·½Ê½À´Ìø×ªµ½¾ßÌåµÄ Activity¡£Ã¿¸ö×é¼þ¿ÉÒÔ×¢²á×Ô¼ºËùÄÜ´¦ÀíµÄ¶ÌÁ´µÄ schme ºÍ host£¬²¢¶¨Òå´«ÊäÊý¾ÝµÄ¸ñʽ¡£È»ºó×¢²áµ½Í³Ò»µÄ UIRouter ÖУ¬UIRouter ͨ¹ý schme ºÍ host µÄÆ¥Åä¹ØÏµ¸ºÔð·Ö·¢Â·ÓÉ¡£

UI Ìø×ª²¿·ÖµÄ¾ßÌåʵÏÖÊÇͨ¹ýÔÚÿ¸ö Activity ÉÏÌí¼Ó×¢½â£¬È»ºóͨ¹ý apt ÐγɾßÌåµÄÂß¼­´úÂë¡£Õâ¸öÒ²ÊÇĿǰ Android ÖÐ UI ·ÓɵÄÖ÷Á÷ʵÏÖ·½Ê½¡£

2.5 ×é¼þµÄÉúÃüÖÜÆÚ

ÓÉÓÚÎÒÃÇÒª¶¯Ì¬µÄ¹ÜÀí×é¼þ£¬ËùÒÔ¸øÃ¿¸ö×é¼þÌí¼Ó¼¸¸öÉúÃüÖÜÆÚ״̬£º¼ÓÔØ¡¢Ð¶ÔغͽµÎ¬¡£Îª´ËÎÒÃǸøÃ¿¸ö×é¼þÔö¼ÓÒ»¸ö ApplicationLike À࣬ÀïÃæ¶¨ÒåÁË onCreate ºÍ onStop Á½¸öÉúÃüÖÜÆÚº¯Êý¡£

¼ÓÔØ£ºÉÏÃæ½²ÁË£¬Ã¿¸ö×é¼þ¸ºÔð½«×Ô¼ºµÄ·þÎñʵÏÖ×¢²áµ½ Router ÖУ¬Æä¾ßÌåµÄʵÏÖ´úÂë¾ÍдÔÚ onCreate ·½·¨ÖС£ÄÇôÖ÷ÏîÄ¿µ÷ÓÃÕâ¸ö onCreate ·½·¨¾Í³ÆÖ®Îª×é¼þµÄ¼ÓÔØ£¬ÒòΪһµ© onCreate ·½·¨Ö´ÐÐÍ꣬×é¼þ¾Í°Ñ×Ô¼ºµÄ·þÎñ×¢²áµ½ Router ÀïÃæÈ¥ÁË£¬ÆäËû×é¼þ¾Í¿ÉÒÔÖ±½ÓʹÓÃÕâ¸ö·þÎñÁË¡£

Ð¶ÔØ£ºÐ¶ÔØÓë¼ÓÔØ»ù±¾Ò»Ö£¬Ëù²»Í¬µÄ¾ÍÊǵ÷Óà ApplicationLike µÄ onStop ·½·¨£¬ÔÚÕâ¸ö·½·¨ÖÐÿ¸ö×é¼þ½«×Ô¼ºµÄ·þÎñʵÏÖ´Ó Router ÖÐÈ¡Ïû×¢²á¡£²»¹ýÕâÖÖʹÓó¡¾°¿ÉÄܱȽÏÉÙ£¬Ò»°ãÊÊÓÃÓÚһЩֻÓÃÒ»´ÎµÄ×é¼þ¡£

½µÎ¬£º½µÎ¬Ê¹Óõij¡¾°¸üΪÉÙ¼û£¬±ÈÈçÒ»¸ö×é¼þ³öÏÖÁËÎÊÌ⣬ÎÒÃÇÏë°ÑÕâ¸ö×é¼þ´Ó±¾µØÊµÏÖ¸ÄΪһ¸ö wap Ò³¡£½µÎ¬Ò»°ãÐèÒªºǫ́ÅäÖòÅÉúЧ£¬¿ÉÒÔÔÚ onCreate ¶ÔÏßÉÏÅäÖýøÐмì²é£¬Èç¹ûÐèÒª½µÎ¬£¬Ôò°ÑËùÓÐµÄ UI Ìø×ªµ½ÅäÖÃµÄ wap Ò³ÉÏÃæÈ¥¡£

Ò»¸öСµÄϸ½ÚÊÇ£¬Ö÷ÏîÄ¿¸ºÔð¼ÓÔØ×é¼þ£¬ÓÉÓÚÖ÷ÏîÄ¿ºÍ×é¼þÖ®¼äÊǸôÀëµÄ£¬ÄÇôÖ÷ÏîÄ¿ÈçºÎµ÷ÓÃ×é¼þ ApplicationLike µÄÉúÃüÖÜÆÚ·½·¨ÄØ£¬Ä¿Ç°ÎÒÃDzÉÓõÄÊÇ»ùÓÚ±àÒëÆÚ×Ö½ÚÂë²åÈëµÄ·½Ê½£¬É¨ÃèËùÓÐµÄ ApplicationLike Àà(ÆäÓÐÒ»¸ö¹²Í¬µÄ¸¸Àà)£¬È»ºóͨ¹ý javassisit ÔÚÖ÷ÏîÄ¿µÄ onCreate ÖвåÈëµ÷Óà ApplicationLike.onCreate µÄ´úÂë¡£

ÎÒÃÇÔÙÓÅ»¯Ò»ÏÂ×é¼þ»¯µÄ¼Ü¹¹Í¼£º

×é¼þµÄÉúÃüÖÜÆÚ

2.6 ¼¯³Éµ÷ÊÔ

ÿ¸ö×é¼þµ¥¶Àµ÷ÊÔͨ¹ý²¢²»Òâζ׿¯³ÉÔÚÒ»ÆðûÓÐÎÊÌ⣬Òò´ËÔÚ¿ª·¢ºóÆÚÎÒÃÇÐèÒª°Ñ¼¸¸ö×é¼þ»ú¼¯³Éµ½Ò»¸ö app ÀïÃæÈ¥ÑéÖ¤¡£ÓÉÓÚÎÒÃÇÉÏÃæµÄ»úÖÆ±£Ö¤ÁË×é¼þÖ®¼äµÄ¸ôÀ룬ËùÒÔÎÒÃÇ¿ÉÒÔÈÎÒâÑ¡Ôñ¼¸¸ö×é¼þ²ÎÓ뼯³É¡£ÕâÖÖ°´ÐèË÷È¡µÄ¼ÓÔØ»úÖÆ¿ÉÒÔ±£Ö¤ÔÚ¼¯³Éµ÷ÊÔÖÐÓкܴóµÄÁé»îÐÔ£¬²¢ÇÒ¿ÉÒÔ¼Ó´óµÄ¼Ó¿ì±àÒëËÙ¶È¡£

ÎÒÃǵÄ×ö·¨ÊÇÕâÑùµÄ£¬Ã¿¸ö×é¼þ¿ª·¢Íê³ÉÖ®ºó£¬·¢²¼Ò»¸ö relaese µÄ aar µ½Ò»¸ö¹«¹²²Ö¿â£¬Ò»°ãÊDZ¾µØµÄ maven ¿â¡£È»ºóÖ÷ÏîĿͨ¹ý²ÎÊýÅäÖÃÒª¼¯³ÉµÄ×é¼þ¾Í¿ÉÒÔÁË¡£ËùÒÔÎÒÃÇÔÙÉÔ΢¸Ä¶¯Ò»ÏÂ×é¼þÓëÖ÷ÏîĿ֮¼äµÄÁ¬½ÓÏߣ¬ÐγɵÄ×îÖÕ×é¼þ»¯¼Ü¹¹Í¼ÈçÏ£º

×îÖսṹͼ

2.7 ´úÂë¸ôÀë

´ËʱÔڻعËÎÒÃÇÔÚ¸Õ¿ªÊ¼²ð·Ö×é¼þ»¯ÊÇÌá³öµÄÈý¸öÎÊÌ⣬Ӧ¸Ã˵¶¼ÕÒµ½Á˽â¾ö·½Ê½£¬µ«ÊÇ»¹ÓÐÒ»¸öÒþ»¼Ã»Óнâ¾ö£¬ÄǾÍÊÇÎÒÃÇ¿ÉÒÔʹÓà compile project(xxx:reader.aar) À´ÒýÈë×é¼þÂð?ËäÈ»ÎÒÃÇÔÚÊý¾Ý´«ÊäÕ½ÚʹÓÃÁË½Ó¿Ú + ʵÏֵļܹ¹£¬×é¼þÖ®¼ä±ØÐëÕë¶Ô½Ó¿Ú±à³Ì£¬µ«ÊÇÒ»µ©ÎÒÃÇÒýÈëÁË reader.aar£¬ÄÇÎÒÃǾÍÍêÈ«¿ÉÒÔÖ±½ÓʹÓõ½ÆäÖеÄʵÏÖÀà°¡£¬ÕâÑùÎÒÃÇÕë¶Ô½Ó¿Ú±à³ÌµÄ¹æ·¶¾Í³ÉÁËÒ»Ö½¿ÕÎÄ¡£Ç§ÀïÖ®µÌ»ÙÓÚÒÏѨ£¬Ö»ÒªÓдúÂë(²»ÂÛÊÇÓÐÒ⻹ÊÇÎÞÒâ)ÊÇÕâô×öÁË£¬ÎÒÃÇÇ°ÃæµÄ¹¤×÷¾Í°×·ÑÁË¡£

ÎÒÃÇÏ£ÍûÖ»ÔÚ assembleDebug »òÕß assembleRelease µÄʱºò°Ñ aar ÒýÈë½øÀ´£¬¶øÔÚ¿ª·¢½×¶Î£¬ËùÓÐ×é¼þ¶¼ÊÇ¿´²»µ½µÄ£¬ÕâÑù¾Í´Ó¸ù±¾É϶žøÁËÒýÓÃʵÏÖÀàµÄÎÊÌâ¡£ÎÒÃǰÑÕâ¸öÎÊÌâ½»¸ø gradle À´½â¾ö£¬ÎÒÃÇ´´½¨Ò»¸ö gradle ²å¼þ£¬È»ºóÿ¸ö×é¼þ¶¼ apply Õâ¸ö²å¼þ£¬²å¼þµÄÅäÖôúÂëÒ²±È½Ï¼òµ¥£º

// ¸ù¾ÝÅäÖÃÌí¼Ó¸÷ÖÖ×é¼þÒÀÀµ£¬²¢ÇÒ×Ô¶¯»¯Éú³É×é¼þ¼ÓÔØ´úÂë

// ¸ù¾ÝÅäÖÃÌí¼Ó¸÷ÖÖ×é¼þÒÀÀµ£¬²¢ÇÒ×Ô¶¯»¯Éú³É×é¼þ¼ÓÔØ´úÂë
if (project.android instanceof AppExtension) {
AssembleTask assembleTask = getTaskInfo(project.gradle.startParameter.taskNames)
if (assembleTask.isAssemble
&& (assembleTask.modules.contains("all") || assembleTask.modules.contains(module))) {
// Ìí¼Ó×é¼þÒÀÀµ
project.dependencies.add("compile","xxx:reader-release@aar")
// ×Ö½ÚÂë²åÈëµÄ²¿·ÖÒ²ÔÚÕâÀïʵÏÖ
}
}

private AssembleTask getTaskInfo(List<String> taskNames) {
AssembleTask assembleTask = new AssembleTask();
for (String task : taskNames) {
if (task.toUpperCase().contains("ASSEMBLE")) {
assembleTask.isAssemble = true;
String[] strs = task.split(":")
assembleTask.modules.add(strs.length > 1 ? strs[strs.length - 2] : "all");
}
}
return assembleTask
}

Èý¡¢×é¼þ»¯µÄ²ð·Ö²½ÖèºÍ¶¯Ì¬ÐèÇó

3.1 ²ð·ÖÔ­Ôò

×é¼þ»¯µÄ²ð·ÖÊǸöÅÓ´óµÄ¹¤³Ì£¬ÌرðÊÇ´Ó¼¸Ê®ÍòÐдúÂëµÄ´ó¹¤³Ì²ð·Ö³öÈ¥£¬ËùÒª¿¼ÂǵÄÊÂÇéǧͷÍòÐ÷¡£Îª´ËÎÒ¾õµÃ¿ÉÒÔ·Ö³ÉÈý²½£º

´Ó²úÆ·ÐèÇ󵽿ª·¢½×¶ÎÔÙµ½ÔËÓª½×¶Î¶¼ÓÐÇåÎú±ß½çµÄ¹¦ÄÜ¿ªÊ¼²ð·Ö£¬±ÈÈç¶ÁÊéÄ£¿é¡¢Ö±²¥Ä£¿éµÈ£¬ÕâЩ¿ªÊ¼·ÖÅúÏȲð·Ö³öÈ¥

ÔÚ²ð·ÖÖУ¬Ôì³É×é¼þÒÀÀµÖ÷ÏîÄ¿µÄÒÀÀµµÄÄ£¿é¼ÌÐø²ð³öÈ¥£¬±ÈÈçÕË»§ÌåϵµÈ

×îÖÕÖ÷ÏîÄ¿¾ÍÊÇÒ»¸ö Host£¬°üº¬ºÜСµÄ¹¦ÄÜÄ£¿é(±ÈÈçÆô¶¯Í¼)ÒÔ¼°×é¼þÖ®¼äµÄÆ´½ÓÂß¼­

3.2 ×é¼þ»¯µÄ¶¯Ì¬ÐèÇó

×ʼÎÒÃǽ²µ½£¬ÀíÏëµÄ´úÂë×éÖ¯ÐÎʽÊDzå¼þ»¯µÄ·½Ê½£¬½ìʱ¾Í¾ß±¸ÁËÍ걸µÄÔËÐÐʱ¶¯Ì¬»¯¡£ÔÚÏò²å¼þ»¯Ç¨áãµÄ¹ý³ÌÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýÏÂÃæµÄ¼¯Öз½Ê½À´ÊµÏÖ±àÒëËٶȵÄÌáÉýºÍ¶¯Ì¬¸üС£

ÔÚ¿ìËÙ±àÒëÉÏ£¬²ÉÓÃ×é¼þ¼¶±ðµÄÔöÁ¿±àÒë¡£ÔÚ³éÀë×é¼þ֮ǰ¿ÉÒÔʹÓôúÂë¼¶±ðµÄÔöÁ¿±àÒ빤¾ßÈç freeline(µ« databinding Ö§³Ö½Ï²î)¡¢fastdex µÈ

¶¯Ì¬¸üз½Ã棬ÔÝʱ²»Ö§³ÖÐÂÔö×é¼þµÈ´óµÄ¹¦ÄܸĽø¡£¿ÉÒÔÁÙʱ²ÉÓ÷½·¨¼¶±ðµÄÈÈÐÞ¸´»òÕß¹¦Äܼ¶±ðµÄ Tinker µÈ¹¤¾ß£¬Tinker µÄ½ÓÈë³É±¾½Ï¸ß¡£

ËÄ¡¢×ܽá

±¾ÎÄÊDZÊÕßÔÚÉè¼Æ¡°µÃµ½ app¡±µÄ×é¼þ»¯ÖÐ×ܽáһЩÏë·¨£¬ÔÚÉè¼ÆÖ®³õ²Î¿¼ÁËĿǰÒÑÓеÄ×é¼þ»¯ºÍ²å¼þ»¯·½°¸£¬Õ¾ÔÚ¾ÞÈ˵ļç°òÉÏÓÖ¼ÓÁËÒ»µã×Ô¼ºµÄÏë·¨£¬Ö÷ÒªÊÇ×é¼þ»¯ÉúÃüÖÜÆÚÒÔ¼°ÍêÈ«µÄ´úÂë¸ôÀë·½Ãæ¡£ÌرðÊÇ×îºóµÄ´úÂë¸ôÀ룬²»½öÒªÓй淶ÉϵÄÔ¼Êø(Õë¶Ô½Ó¿Ú±à³Ì)£¬¸üÒªÓлúÖÆ±£Ö¤¿ª·¢Õß²»·¸´í£¬ÎÒ¾õµÃÖ»ÓÐ×öµ½ÕâÒ»µã²ÅÄÜÈÏΪÊÇÒ»¸ö³¹µ×µÄ×é¼þ»¯·½°¸¡£

   
2047 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

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