±à¼ÍƼö: |
±¾ÎÄÄÚÈÝÕë¶ÔÏëҪʵÏÖ¹¤³Ì×é¼þ»¯¿ª·¢µÄÖÐСÐÍÏîÄ¿
ComponentLight ÊÇÒ»¿î Gradle ²å¼þ£¬ÎÞ´úÂëÇÖÈ룬¿ÉÒÔÀí½âΪ×é¼þ»¯¸¨Öú¹¤¾ß.
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
±¾ÎĽ«Í¨¹ýÒÔÏÂÎÊÌ⣬Öð²½ËµÃ÷ ComponentLight µÄÓÃ;ºÍÓ÷¨¡£
ΪʲôҪÓÃ×é¼þ»¯¿ò¼Ü
ComponentLight ÄÜ×öʲô
ComponentLight ÔõôÓÃ
Ò»¡¢ÎªÊ²Ã´ÒªÓÃ×é¼þ»¯¿ò¼Ü
ΪʲôҪÓÃ×é¼þ»¯¿ò¼ÜÀ´ÊµÏÖÏîÄ¿×é¼þ»¯£¬Ö±½ÓÀûÓà module ʵÏÖµÄÏîÄ¿×é¼þ»¯ÓÐʲôÎÊÌâÂð£¿
ͨ¹ý´´½¨ module¡¢ÊÖ¶¯ÉèÖÃÒÀÀµµÄ·½Ê½¿ÉÒÔʵÏÖÏîÄ¿×é¼þ»¯£¬µ«ÊÇЧ¹û²»ºÃ£¬Êµ¼Ê¿ª·¢ÖÐÓаµ²¡¡£
×é¼þ»¯½á¹¹µÄÎÊÌâ
ÔÚ˵ÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈÀ´¿´Ï³£¼ûµÄ×é¼þ»¯½á¹¹¡£
¼Ü¹¹
ÏîÄ¿·ÖÎö
¼ÙÈçÓÐÕâôһ¸öÏîÄ¿£¨ÈçÉÏͼ£©£¬ËüµÄ app Ä£¿éÊdzÌÐòÈë¿Ú£¬ÓÐÔĶÁ£¨reader£©¡¢Îҵģ¨me£©¡¢µÇ¼£¨login£©Èý¸öÒµÎñÄ£¿é£¬ÒÔ¼°
base-all¡¢base-reader Á©¸ö»ù´¡Ä£¿é¡£
ΪÁË·½±ã˵Ã÷£¬ÎÒ°Ñ app¡¢reader¡¢me¡¢login µÈÒµÎñ£¨¹¦ÄÜ£©Ä£¿é³ÆÎª×é¼þ£¬base-all¡¢base-reader
³ÆÎª»ù´¡¿â¡£
ÉÏÃæµÄÏîÄ¿£¬×é¼þÖ®¼ä»¥²»ÒÀÀµ£¬¿ª·¢Ê±²»ÄÜÖ±½ÓÒýÓ㬰²È«ÎÞñîºÏ¡£Í¬Ê±»ù´¡¿â±»×é¼þÒÀÀµ£¬×é¼þÖ®¼ä¿ÉÒÔÒÀÀµ»ù´¡¿â×öÐÅÏ¢´«µÝ¡£
»Ø¹ËÏ Android ×é¼þ»¯¡£×é¼þ»¯ÊÇΪÁËʵÏÖÒµÎñ¸ôÀ뿪·¢£¬Ïû³ýñîºÏµÄͬʱÌáÉý¿ª·¢Ð§ÂÊ£¬Îª´ËÒª´ïµ½ÒÔÏÂЧ¹û£º
¹¦ÄÜ×é¼þ»¯¡£¹¦ÄÜÖ®¼ä¶ÀÁ¢£¬¿ª·¢Ê±²»ÄÜÖ±½ÓÏ໥ÒýÓá£ÕâÑùÓÐÀûÓÚ¸ºÔðÈ˶ÀÁ¢¿ª·¢×Ô¼ºµÄ×é¼þ£¬ÖÁÉÙÀ´úÂëʱ²»Óõ£ÐijåÍ»¡¢É¾×é¼þʱ²»Óõ£ÐÄñîºÏ¡£
×é¼þ¶ÀÁ¢»¯¡£¸÷×é¼þÄÜ×÷Ϊ app ¶ÀÁ¢ÔËÐУ¬²»½öµ÷ÊÔÆðÀ´±ß½çÇåÎú£¬¶øÇÒÌáÉýÁ˱àÒëËÙ¶È¡£¼´£¬×é¼þÄÜËæÊ±´ÓÖ÷ÏîÄ¿²å°Î¡£
ÉÏÃæµÄÏîÄ¿ÖУ¬reader¡¢me¡¢login Ï໥¶ÀÁ¢£¬±íÏÖÔÚ¿ª·¢Ê±£¬²»ÄÜÖ±½ÓÒÀÀµ£»´ò°üʱ£¬ÓÉÓÚ¶¼±»
app ÒÀÀµ£¬ËùÒÔ¿ÉÒÔÈ«²¿´ò°üµ½ apk Àï¡£¿´ËÆÊµÏÖÁË×é¼þ»¯£¬µ«ÊÇʵ¼Ê²Ù×÷ÆðÀ´È´Óкܶ಻·½±ãµÄµØ·½£º
Ê×ÏÈ£¬ÔÚ×é¼þ¶ÀÁ¢»¯ÉÏ£¬Ã¿´ÎÇл»¶ÀÁ¢ÔËÐУ¬ÒªÏÈÐÞ¸Ä build.gradle Ϊ com.android.application¡¢Ìí¼Ó
android.sources£¬È»ºóÖ¸¶¨Èë¿Ú Activity¡¢ÒƳýÖ÷¹¤³Ì¶ÔËüµÄÒÀÀµ¡¢Rebuild£¬Ò»´ó¶Ñ²Ù×÷ºó²ÅÄÜÔËÐС£²Ù×÷·±Ëö¸´ÔÓÇÒºÄʱ£¬±¾À´×é¼þ¶ÀÁ¢»¯ÊÇΪÁË·½±ãµ÷ÊÔ¡¢Ôö¿ì±àÒëËÙ¶È£¬ÔõôÏñÊÇÅâÁË·òÈËÓÖÕÛ±ø£¿
ÔÙÕߣ¬ÓÐÀàËÆÕâÑùµÄ³¡¾°£ºme ×é¼þÒâΪ"ÎÒµÄ"£¬ËüչʾµÄÊÇÓû§µÄÊý¾Ý£¬¼ÈÈ»Éæ¼°Óû§Êý¾Ý£¬±ØÈ»Àë²»¿ª
login ×é¼þ¡£Ò²¾ÍÊÇ˵£¬me Èç¹û¶ÀÁ¢ÔËÐУ¬ÐèÒª°Ñ login ´ò°üÔÚÄÚ¡£ÄÇÔõô×öÄØ£¿Èà me
×é¼þÖ±½ÓÒÀÀµ login£¿´Ëʱ me ¶¼¿ÉÒÔÖ±½ÓÒýÓà login µÄ´úÂ룬ҵÎñ¹¦ÄܺÎÀ´¶ÀÁ¢£¿ÄÇ´ò°üʱÔÙÊÖ¶¯Ìí¼Ó
login ÒÀÀµ£¿ÄãÈ·¶¨×é¼þ»¯²»ÊÇ×ÔÕÒÂé·³¡£ºÃ£¬ÄÇÔÙ´´½¨Ò»¸öÀàËÆ app µÄ¿ÇÄ£¿é£¬ÈÃËü°üº¬ me
ºÍ login£¬È»ºó½«¿ÇÄ£¿é¶ÀÁ¢Æô¶¯£¬×Ü¿ÉÒÔÁ˰ɡ£È·Êµ¿ÉÒÔ£¬µ«ÊÇËæ×ÅÏîÄ¿ÈÕÒæÀ©´ó£¬¿ÇÄ£¿éÒ²»áÈÕ½¥Ôö¶à£¬ÈßÓàµÄ¿ÇÄ£¿éµ¼ÖÂÕû¸öÏîÄ¿·Ç³£ÂÒ¡£
ÎÊÌâ×ܽá
·ÖÎöÁËÕâô°ëÌ죬ºËÐÄÎÊÌâ¾ÍÁ©¸ö£º
¶ÀÁ¢ÔËÐпÉÐÐÐԵͣ¬¸´ÔÓµÄÁ÷³ÌÈÃÈËÍû¶øÈ´²½¡£
ͨ¹ý¿ÇÀ´ÊµÏÖ "¿ª·¢Ê±×é¼þÎÞÒÀÀµ¡¢¶ÀÁ¢ÔËÐÐʱÓÖÄܰѱØÒªµÄ×é¼þ´ò°ü½øÈ¥" µÄ·½Ê½ºÜ²»Áé»î¡£
¶þ¡¢ComponentLight ÄÜ×öʲô
¼ÈȻ֪µÀÁËÉÏÊöÎÊÌ⣬ÄÇ ComponentLight ×ÔÈ»¾ÍÊÇΪ½â¾öÕâÁ©¸öÎÊÌâ¶øÉú¡£
Ê×ÏÈ¿´ÏÂʹÓÃÁË ComponentLight ºó£¬¸÷×é¼þÈçºÎ¶ÀÁ¢ÔËÐУº
×é¼þ¶ÀÁ¢ÔËÐÐ
Ö±½ÓÔÚÉÏÀ¸ÖÐÇл»-ÔËÐм´¿É¡£
È»ºó¿´ÏÂ×é¼þ me ÈçºÎÔÚ²»ÒÀÀµ¿ÇÄ£¿éµÄÇé¿öÏ£¬¿ª·¢Ê±²»ÒÀÀµ login£¨²»¿ÉÖ±½ÓÒýÓÃ
login ´úÂ룬×é¼þ¶ÀÁ¢£©¡¢¶øÔÚ¶ÀÁ¢ÔËÐÐʱ×Ô¶¯´ò°ü½ø±ØÒª×é¼þ login¡£Ö»ÐèÒªÔÚ me Ä£¿éµÄÏàÓ¦ÅäÖÃÎļþ£¨module-config.properties£©ÀïÈçÏÂÉùÃ÷£º
ÀûÓÃ×é¼þ»¯¿ò¼Ü¿ÉÒÔ¼«´óµÄ¼ò»¯×é¼þ»¯¹ý³ÌÖз±Ëö¸´ÔÓµÄÁ÷³Ì£¬×î´ó³Ì¶ÈµÄ¹Ø×¢ÒµÎñ¿ª·¢¡£
Èý¡¢ComponentLight ÔõôÓÃ
1¡¢ÒýÈëÒÀÀµ
ÔÚÏîÄ¿¸ù build.gradle ÖÐÌí¼Ó´úÂë
buildscript {
...
dependencies {
...
classpath('com.dixon.plugin:component_light:1.0.0')
}
} |
2¡¢ÅäÖÃÄ£¿é
2.1¡¢Ó¦Óòå¼þ
ÕÒµ½¸÷¸ö module µÄ build.gradle Îļþ£¬ÒƳý
apply plugin: 'com.android.application' »ò apply plugin:
'com.android.library'£¬Óà apply plugin: 'com.dixon.component'
Ìæ´ú¡£
apply plugin:
'com.dixon.component'
android {
compileSdkVersion xx
defaultConfig {
minSdkVersion xx
... |
¶ÔÓÚ»ù´¡¿â¿ÉÒÔ²»Ê¹Óà ComponentLight£¬µ«ÍƼöʹÓã¬ÒÔ±íÃ÷»ù´¡¿âÔÚ×é¼þ»¯ÏîÄ¿ÖеIJ㼶¹ØÏµ¡£
2.2¡¢ÉùÃ÷Ä£¿é¹ØÏµ
ÔÚ¸÷¸ö module Ŀ¼Ï¾ùн¨ module-config.properties Îļþ£¬ÓÃÀ´ÉùÃ÷Ä£¿é¹ØÏµ¡£
λÖÃÈçÏÂͼ£º
Ä£¿é¹ØÏµÎ»ÖÃ
¸ÃÎļþµÄÄÚÈÝÈçÏÂʾÀý£º
module_type=application
depend_component=login,me,reader
depend_base=baseall
|
ÏÂÃæËµÃ÷ÉùÃ÷µÄÒâÒåºÍÓ÷¨¡£
¢Ù module_type
±íÃ÷µ±Ç°Ä£¿éµÄÀàÐÍ£¬Õâ¸öÊôÐÔ×îÖÕ½«½áºÏ´ò°ü»·¾³¾ö¶¨µ±Ç°Ä£¿éÊÇ com.android.application
»¹ÊÇ com.android.library¡£ËüµÄ²ÎÊýÈçÏ£º
²ÎÊý ÒâÒå
application ±íÃ÷µ±Ç°Ä£¿éÊǹ¤³ÌÖ÷Ä£¿é¡£¶ÔÓ¦µ½ÉÏÊöÏîÄ¿ÖоÍÊÇ app£¬²»ÐèÒªÅäÖà runalone
¼´¿É¶ÀÁ¢ÔËÐУ¬¹ØÓÚ runalone ÅäÖúóÃæ»á˵¡£
component ±íÃ÷µ±Ç°Ä£¿éÊÇ×é¼þ¡£¸Ã×é¼þ¿É¶ÀÁ¢ÔËÐУ¬µ«ÒªÅäÖà runalone¡£
library ±íÃ÷µ±Ç°Ä£¿éÊÇ×é¼þ¡£¸Ã×é¼þ²»¿É¶ÀÁ¢ÔËÐУ¬²»ÐèÒªÅäÖà runalone¡£
base ±íÃ÷µ±Ç°Ä£¿éÊÇ»ù´¡¿â¡£¸Ã»ù´¡¿â²»¿É¶ÀÁ¢ÔËÐУ¬²»ÐèÒªÅäÖà runalone¡£
Æäʵ library ºÍ base ±¾ÖÊÉÏûÓÐÇø±ð£¬µ«ÊÇÒâÒåÉÏÊÇÓзֱðµÄ¡£
library ±íʾµÄÊÇÒµÎñ×é¼þ£¬ºÍ component ͬ¼¶£¬²»ÄܶÀÁ¢ÔËÐпÉÄÜÊÇÒòΪûÓбØÒª¡£
base ÔòÊÇ»ù´¡¿â¡£
×ÛÉÏ£¬module_type ¾ö¶¨Á˵±Ç°Ä£¿éÊÇ·ñ¿É¶ÀÁ¢ÔËÐУ¬ºÍ×é¼þ¼äµÄ¿ª·¢¿É¼ûÐÔûÓйØÏµ¡£
¢Ú depend_component
µ±Ç°×é¼þ ¶ÀÁ¢ÔËÐÐʱ ÐèÒªÒÀÀµµÄÆäËü×é¼þ¡£
depend_component ²ÎÊýÉùÃ÷Á˵±Ç°Ä£¿éÔÚÒµÎñÒâÒåÉÏÐèÒªÒÀÀµµÄÆäËüͬ¼¶×é¼þ£¬²¢ÇÒµ±Ç°Ä£¿é¶ÀÁ¢ÔËÐÐʱ£¬ÕâЩÒÀÀµ»á±»ÕýÈ·´ò°ü½ø
apk¡£±» depend_component ÅäÖõÄ×é¼þÔÚ¿ª·¢Ê±²¢²»»á²úÉúÒÀÀµ£¬Ò²¾ÍÊÇ˵£¬ËüÓÃÓÚ½â¾ö´«Í³×é¼þ»¯ÒÀÀµ¿ÇµÄÎÊÌâ¡£¾Ù¼¸¸öÀý×Ó£º
Ä£¿é me ÅäÖà depend_component=login
Ôò me ÔÚ¿ª·¢Ê±£¬ÎÞ·¨Ö±½ÓÒýÓà login µÄ´úÂë¡£
µ« me ÔÚ¶ÀÁ¢ÔËÐÐʱ£¬»á½« login ÕýÈ·´ò°ü½øÀ´£¬²»ÔÙÐèÒªÊÖ¶¯ÅäÖûòÒÀÀµ¿Ç¡£ |
Ä£¿é app ÅäÖà depend_component=me
Ä£¿é me ÅäÖà depend_component=login
½« app ×÷ΪÖ÷¹¤³Ì´ò°ü£¬Ôò me Ìø×ª login »á¡¾Ê§°Ü¡¿
depend_component ¾ö¶¨Á˵±Ç°×é¼þÒÀÀµµÄÆäËü×é¼þ£¬Èç¹ûÒª´Ó app Ìø×ªÖÁ login£¬²»¹ÜÊÇÖ±½ÓµÄ»¹ÊǼä½ÓµÄ£¬app
¶¼±ØÐëÉùÃ÷ÐèÒª×é¼þ login¡£ |
depend_component ¾ö¶¨Á˵±Ç°×é¼þÒÀÀµµÄÆäËü×é¼þ£¬Èç¹ûÒª´Ó app Ìø×ªÖÁ login£¬²»¹ÜÊÇÖ±½ÓµÄ»¹ÊǼä½ÓµÄ£¬app
¶¼±ØÐëÉùÃ÷ÐèÒª×é¼þ login¡£
¢Û depend_base
±íÃ÷µ±Ç°Ä£¿éÒÀÀµµÄ»ù´¡¿â¡£
±» depend_base ÉùÃ÷µÄ»ù´¡¿â£¬»á±»µ±Ç°Ä£¿éÔÚÈκÎʱºòÒÀÀµ¡£Ò²¾ÍÊÇ˵²»½ö¿ª·¢Ê±ÄÜÖ±½ÓÒýÓã¬ÔËÐÐʱҲ»áÒ»²¢´ò°ü¡£
²»Í¬ÓÚ depend_component£¬¼ÙÈç×é¼þ A ÒÀÀµ×é¼þ B£¬×é¼þ B ÒÀÀµ»ù´¡¿â b£¬Ôò
A ×é¼þ¿ª·¢Ê±ËäÈ»²»ÄÜÖ±½ÓÒýÓûù´¡¿â b µÄ´úÂ룬µ«ÔÚÔËÐÐʱ»á½«»ù´¡¿â b ÕýÈ·´ò°ü½øÀ´¡£ÕâÊÇÒòΪ»ù´¡¿â
b ÊÇ×é¼þ B ÔËÐеĻù´¡£¬ÀíÂÛÉÏÊÇ×é¼þ B µÄÒ»²¿·Ö£¬×é¼þ B ȱÉÙ»ù´¡¿â b ½«ÎÞ·¨ÔËÐУ¬ËùÒÔ¼´Ê¹
A µÄ depend_base ûÓÐÉùÃ÷ b£¬b Ò²½«Õý³£´ò°ü½ø apk¡£
ÉÏÃæÈý¸ö²ÎÊý·Ö±ðÉùÃ÷ÁËÄ£¿éÀàÐÍ¡¢×é¼þ¹ØÏµ¡¢»ù´¡¿â¹ØÏµ£¬ÀíÂÛÉϾÍÉùÃ÷ÍêÁË¡£
µ«ÊÇҪij×é¼þ¶ÀÁ¢ÔËÐУ¬³ýÉùÃ÷ module_type=component Í⣬»¹ÐèÒªÔÚ ¸Ã×é¼þÄ£¿éÏÂ
ÅäÖÃ runalone¡£
2.3¡¢ÅäÖà runalone
ÔÚ module/src/main ÏÂн¨ runalone Îļþ¼Ð£¬½« AndroidManifest.xml
¿½±´Ò»·ÝÖÁ runalone Îļþ¼ÐÏ£¬²¢Ö¸¶¨Æô¶¯ activity¡£
ÕâÀïÎÒÊÇÕâôÅäÖõģº
runalone
runalone ÖеĴúÂë½ö»áÔÚ×é¼þ¶ÀÁ¢ÔËÐÐʱÓõ½£¬²»»á´ò°ü½øÖ÷¹¤³Ì»òÆäËü¶ÀÁ¢×é¼þÖС£
¹ØÓÚ runalone£¬¿ª·¢Õß¿ÉÒÔ°´Ðè×ÔÐж¨ÖÆ£¬µ«ÖÁÉÙÒªÂú×ã×îС¶ÀÁ¢Æô¶¯ÒªÇó£º
1.runalone ÖÐÓÐ AndroidManifest.xml£»
2.AndroidManifest.xml ÅäÖÃÁË package£»
3.AndroidManifest.xml ÅäÖÃÁËĬÈÏ Activity¡£
¿ÉÄÜ»á³öµÄÎÊÌ⣺
1.AndroidManifest Îļþ¼ÇµÃ¼ì²éÊÇ·ñÅäÖÃÁË package¡££¨ÓеĻá×Ô´ø£¬Ã»ÓаüÃûÔõôÆô¶¯¡«£©
2.Ã÷Ã÷ÅäÖÃÁËÆô¶¯ Activity£¬È´±¨ default activity ²»´æÔÚ£¬ÖØÆô¼´¿É¡£
3.Èç¹û¶ÀÁ¢ÔËÐÐºó£¬Æô¶¯ÉÁÍË£¬¿ÉÄÜÊÇÒòΪÄãµÄ×ÊÔ´ÎļþÕÒ²»µ½¡£³¢ÊÔ½«×ÊÔ´·ÅÔÚ base Ä£¿éÏ¡£
4.¶ÀÁ¢ÔËÐкó£¬Èç¹ûÐÂÔöËÄ´ó×é¼þ£¬ÏµÍ³»á×ÔÐÐÉùÃ÷µ½ runalone-AndroidManifest.xml
ÖУ¬¼ÇµÃÊÖ¶¯Í¬²½ÖÁÔ AndroidManiest.xml£¬ÒÔ±£Ö¤Ö÷¹¤³ÌÕýÈ·ÔËÐС£
ÅäÖÃÍê±Ïºó£¬Rebuild ¼´¿É¡£
¸½ runalone µÄÎļþλÖãº
manifest.srcFile
"src/main/runalone/ AndroidManifest.xml"
java.srcDir "src/main/runalone/java"
res.srcDir "src/main/runalone/res"
assets.srcDir "src/main/runalone/assets"
jniLibs.srcDir '../app/src/main/jniLibs' |
ËÄ¡¢Î²Éù
ComponentLight ÊÇ×é¼þ»¯µÄ¸¨ÖúÐÔ²å¼þ£¬Í¨¹ýʹÓÃËü£¬×é¼þ¿ÉÒÔËæÊ±ÔËÐе÷ÊÔ£¬²¢ÔÚ°ÚÍÑÁ˿ǵÄÊø¸¿µÄͬʱ£¬±£Ö¤¿ª·¢¶ÀÁ¢ÐÔºÍÔËÐÐÍêÕûÐÔ¡£
bug ºÍ½¨Òé¿ÉÒÔÖ±½Ó·´À¡ÖÁ github »òÎÄÕÂϱߡ£
|