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