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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
΢µê Android ²å¼þ»¯Êµ¼ù
 
×÷ÕߣºÅí²ý»¢ À´Ô´£ºcsdn ·¢²¼ÓÚ£º 2017-6-22
  4450  次浏览      27
 

Ëæ×Å΢µêÒµÎñµÄ·¢Õ¹£¬App ²»¿É±ÜÃâµØÒ²Óöµ½ÁË 65535 µÄ´ó¿Ó¡£³ý´ËÖ®Í⣬ҵÎñÄ£¿éÔö¶à¡¢´úÂëÁ¿Ôö´óËù´øÀ´µÄÎÊÌâÒ²Öð½¥ÏÔÏÖ³öÀ´¡£Ä£¿éñîºÏ¶È¸ß¡¢Ð­×÷¿ª·¢À§ÄÑ¡¢±àÒëʱ¼ä¹ý³¤µÈÎÊÌâÑÏÖØÓ°ÏìÁË¿ª·¢½ø³Ì¡£ÔÚÔ¤ÑÐÁ˶àÖÖ·½°¸ÒԺ󣬲å¼þ»¯ËƺõÊǽâ¾öÕâЩÎÊÌâ±È½ÏºÃµÄÒ»¸ö·½Ïò¡£ËäȻҵ½çÒѾ­ÓкܶàÓÅÐãµÄ¿ªÔ´²å¼þ»¯¿ò¼Ü£¬µ«Ô¤Ñкó·¢ÏÖÔÚʹÓÃÉ϶ÔÎÒÃÇ»áÓÐÒ»¶¨µÄ¾ÖÏÞ¡£ÒªÃ´×·ÇóµÍÇÖÈëÐÔ¶ø Hook ´óÁ¿ÏµÍ³µ×²ã´úÂëÎȶ¨ÐÔ²»¸Ò±£Ö¤£¬ÒªÃ´ÓкܸߵÄÇÖÈëÐÔ²»Âú×ã΢µê¶¨ÖÆ»¯µÄÐèÇó¡£¼¼ÊõÒªºÜºÃµØ·þÎñÒµÎñ£¬ÎÒÃÇÏëÔÚÎȶ¨ÐԺ͵ÍÇÖÈëÐÔÉÏѰÕÒÒ»¸öƽºâ¡­¡­

ͼ 1 ΢µê²å¼þ»¯¸ÄÔìÁ÷³Ì

΢µê´Ó 2016 Äê 4 Ô·ݿªÊ¼½øÐвå¼þ»¯¸ÄÔ죬µ½Äêµ×»ù±¾Íê³É£¨¿É¼ûͼ 1 ·Ïߣ©¡£ÏÖÔÚÒ»¹²ÓÐ 29 ¸öÄ£¿éÒÔ²å¼þ»¯µÄ·½Ê½ÔËÐУ¬ÆäÖмÈÓÐÈçÉÌÆ·¡¢¶©µ¥µÈµÄÒµÎñÄ£¿é£¬Ò²ÓÐÏñ Network¡¢Cache µÈµÄ»ù´¡Ä£¿é£¬Ä¿Ç°ÎÒÃǵIJå¼þ»¯¿ò¼ÜÒѾ­ºÜºÃµØÖ§³ÖÁË΢µê¶à Feature ¿ìËÙ²¢Ðеü´ú¿ª·¢¡£Íê³ÉÒ»¸ö²å¼þ»¯¿ò¼ÜµÄ Demo ²¢²»ÊǶàÄѵÄʶù£¬È»¶øÒª¿ª·¢Ò»¿îÍêÉÆµÄ²å¼þ»¯¿ò¼ÜÈ´·ÇÒ×Ê£¬ ±¾Æª½«ÎÒÃDzå¼þ»¯¸ÄÔì¹ý³ÌÖÐËùÉæ¼°µ½µÄһЩ¼¼ÊõµãÒÔ¼°Ë¼¿¼Óë´ó¼Ò·ÖÏíһϡ£

²å¼þ»¯¼¼ÊõÔ­Àí

²å¼þ»¯¼¼ÊõÌýÆðÀ´¸ßÉîĪ²â£¬Êµ¼ÊÒª½â¾öµÄ¾ÍÊÇÈý¸öÎÊÌ⣺

´úÂë¼ÓÔØ£»

×ÊÔ´¼ÓÔØ£»

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

´úÂë¼ÓÔØ

ÎÒÃÇÖªµÀ Android ºÍ Java Ò»Ñù¶¼ÊÇͨ¹ý ClassLoader À´Íê³ÉÀà¼ÓÔØ£¬¶ÔÓÚ¶¯Ì¬¼ÓÔØÔÚʵÏÖ·½Ê½ÉÏÓÐÁ½ÖÖ»úÖÆ¿É¹©Ñ¡Ôñ£¬·Ö±ðΪµ¥ ClassLoader »úÖÆºÍ¶à ClassLoader »úÖÆ£º

µ¥ ClassLoader »úÖÆ£ºÀàËÆÓÚ Google MulDex »úÖÆ£¬ÔËÐÐʱ°ÑËùÓеÄÀàºÏ²¢ÔÚÒ»¿é£¬²å¼þºÍËÞÖ÷³ÌÐòµÄÀàÈ«²¿¶¼Í¨¹ýËÞÖ÷µÄ ClassLoader ¼ÓÔØ£¬ËäÈ»´úÂë¼òµ¥£¬µ«Êdz°ôÐԺܲ

¶à ClassLoader »úÖÆ£ºÃ¿¸ö²å¼þ¶¼ÓÐÒ»¸ö×Ô¼ºµÄ ClassLoader£¬ÀàµÄ¸ôÀëÐÔ»áºÜºÃ¡£ÁíÍâ¶à ClassLoader »¹ÓÐÒ»¸öÓŵ㣬Ϊ²å¼þµÄÈȲ¿ÊðÌṩÁË¿ÉÄÜ¡£Èç¹û²å¼þÐèÒªÉý¼¶£¬Ö±½Óн¨Ò»¸ö ClassLoader ¼ÓÔØÐµIJå¼þ£¬È»ºóÌæ»»µôÔ­À´µÄ¼´¿É¡£

ÎÒÃǵĿò¼ÜÔÚÀà¼ÓÔØÊ±²ÉÓõÄÊǶà ClassLoader »úÖÆ£¬¿ò¼Ü»á´´½¨Á½ÖÖ ClassLoader¡£µÚÒ»ÖÖÊÇ BundleClassLoader£¬Ã¿¸ö Bundle °²×°Ê±»á·ÖÅäÒ»¸ö BundleClassLoader£¬¸ºÔð¸Ã Bundle µÄÀà¼ÓÔØ£»µÚ¶þÖÖÊÇ DispatchClassLoader£¬Ëü±¾Éí²¢²»¸ºÔðÕæÕýÀàµÄ¼ÓÔØ£¬Ö»ÊÇÀà¼ÓÔØµÄÒ»¸ö·Ö·¢Æ÷£¬DispatchClassLoader ³ÖÓÐËÞÖ÷¼°ËùÓÐ Bundle µÄ ClassLoader¡£¹ØÏµÈçͼ 2 Ëùʾ¡£

ͼ2 ²å¼þ»¯¿ò¼Ü ClassLoader ¹ØÏµ

ÈçºÎ Hook ϵͳµÄ ClassLoader£¿

Ó¦ÓÃÀàͨ¹ý PathClassLoader À´¼ÓÔØ£¬PathClassLoader ´æÔÚÓÚ LoadedApk ÖУ¬ÄÇô£¬ÈçºÎ²ÅÄÜÌæ»» LoadedApk ÖÐ PathClassLoader ΪÎÒÃÇµÄ DispatchClassLoader ÄØ£¿´ó¼ÒÊ×ÏÈÏëµ½µÄÊÇ·´É䣬µ«¿Éϧ LoadedApk ¶ÔÏóÊÇ @Hide µÄ£¬ÒªÌæ»»Ê×ÏÈÐèÒª Hook Äõ½ LoadedApk ¶ÔÏó£¬È»ºóÔÙͨ¹ý·´ÉäÌæ»» PathClassLoader¡£Òª·´ÉäÁ½´ÎÌØ±ðÊÇ LoadedApk ¶ÔÏóµÄ»ñÈ¡ÎÒÃÇÈÏΪ·çÏպܸߣ¬ÄÇ»¹ÓÐûÓÐÆäËû·½°¸¿ÉÒÔ×¢Èë DispatchClassLoader£¿ÎÒÃÇÖªµÀ Java Àà¼ÓÔØÊ±»ùÓÚË«Ç×ίÅÉ»úÖÆ£¬¼ÓÔØÓ¦ÓÃÀàµÄ PathClassLoader Æä Parent Ϊ BootClassLoader£¬ÄÜ·ñÔÚµ÷ÓÃÁ´ÉϲåÈë DispatchClassLoader ÄØ£¿

ͼ3 ClassLoader ίÅɹØÏµ

´Óͼ 3 ´ó¼Ò¿ÉÒÔ¿´µ½£¬ÎÒÃÇͨ¹ýÐÞ¸ÄÀàµÄ¸¸×Ó¹ØÏµ³É¹¦µØ°Ñ DispatchClassLoader ²åÈëµ½ÀàµÄ¼ÓÔØÁ´ÖС£ÐÞ¸ÄÀàµÄ¸¸×Ó¹ØÏµÖ±½Óͨ¹ý·´ÉäÐÞ¸Ä ClassLoader µÄ parent ×ֶμ´¿É£¬ËäȻҲÊÇ·´ÉäµÄ˽ÓÐÊôÐÔ£¬µ«Ïà¶ÔÓÚ Hook LoadedApk Õâ¸ö˽ÓжÔÏóµÄ˽Óз½·¨£¬·çÏÕÒªÏà¶ÔСºÜ¶à¡£

Àà¼ÓÔØÓÅ»¯

²»¹ÜÊÇ DispatchClassLoader »ò BundleClassLoader£¬¶ÔÓÚÒÀÀµ Bundle ÀàµÄ²éÕÒ¶¼ÊÇͨ¹ý±éÀúÀ´ÊµÏֵġ£ÓÉÓÚÎÒÃÇ°Ñ Network¡¢Cache µÈ»ù´¡×é¼þÒ²½øÐÐÁ˲å¼þ»¯£¬ËùÒÔ Bundle ÒÀÀµ»á±È½Ï¶à£¬Õâ¸ö±éÀú¹ý³Ì»áÓÐÒ»¶¨µÄÐÔÄÜËðºÄ¡£ÎÒÃÇÏë¼ÓÔØÀàʱÄÜ·ñ¸ù¾Ý ClassName ¿ìËÙ¶¨Î»µ½¸ÃÀàÊôÓÚÄÄÒ»¸ö Bundle£¿×îÖÕ£¬ÎÒÃDzÉÓõķ½°¸ÊÇ£ºÔÚ±àÒë½×¶Î»áÊÕ¼¯ Bundle Ëù°üº¬µÄ PackageName ÐÅÏ¢£¬ÔÚ²å¼þ°²×°½×¶Î¹¹ÔìÒ»¸ö PackageName Óë Bundle µÄ¶ÔÓ¦±í£¬ÕâÑù¼ÓÔØ Class ʱ£¬¸ù¾Ý°üÃû¿É¿ìËÙ¶¨Î»¸Ã Class ÊôÓÚÄÄÒ»¸ö Bundle¡£µ±È»£¬ÓÉÓÚ»ìÏýµÄÔ­Òò£¬²»Í¬²å¼þµÄ°üÃû¿ÉÄÜÖØ¸´£¬¶Ô´Ë£¬ÎÒÃÇͨ¹ý¹æ·¶À´½øÐб£Ö¤¡£

×ÊÔ´¼ÓÔØ

×ÊÔ´¼ÓÔØ·½°¸¿ÉÑ¡ÔñµÄÓàµØ²»¶à£¬¶¼ÊÇÓà AssetManager µÄ @hide ·½·¨ addAssetPath£¬Ö±½Ó¹¹Ôì²å¼þ Apk µÄ AssetManager ºÍ Resouce ¶ÔÏó¡£ÐèҪעÒâµÄÊÇ£¬ÎÒÃDzÉÓõÄÊÇ×ÊÔ´ºÏ²¢µÄ·½°¸£¬Í¨¹ý addAssetsPath ·½·¨Ìí¼Ó×ÊԴʱ£¬ÐèҪͬʱÌí¼Ó²å¼þ³ÌÐòµÄ×ÊÔ´ÎļþºÍËÞÖ÷³ÌÐòµÄ×ÊÔ´£¬¼°ÆäÒÀÀµµÄ×ÊÔ´¡£ÕâÑù¿ÉÒÔ½« Resource ºÏ²¢µ½Ò»¸ö Context ÖУ¬½â¾ö×ÊÔ´·ÃÎÊʱÐèÒªÇл»ÉÏÏÂÎĵÄÎÊÌâ¡£ÁíÍ⣬Èô²»½øÐÐ×ÊÔ´ºÏ²¢£¬²å¼þÒ²ÎÞ·¨ÒýÈëËÞÖ÷µÄ×ÊÔ´¡£

×ÊÔ´ ID ³åÍ»ÎÊÌâ

ÓÉÓÚÎÒÃÇÔÚ¹¹Ôì AssetManager ʱ£¬»á°ÑËÞÖ÷¡¢²å¼þ¼°ÒÀÀµ²å¼þµÄ×ÊÔ´ºÏ²¢ÔÚÒ»Æð£¬ÄÇôËÞÖ÷×ÊÔ´ ID Óë²å¼þ×ÊÔ´ ID£¬»ò²å¼þ×ÊÔ´ ID Ö®¼ä¶¼ÓпÉÄÜÖØ¸´¡£ÎÒÃÇÖªµÀ×ÊÔ´ ID ÊÇÔÚ±àÒëʱÉú³ÉµÄ£¬ÆäÉú³ÉµÄ¹æÔòÊÇ 0xPPTTNNNN£¬Òª½â¾ö³åÍ»¾ÍÐèÒª¶Ô×ÊÔ´½øÐзֶΣ¬×ÊÔ´·Ö¶Î³£ÓõÄÓÐÁ½ÖÖ·½Ê½£¬·Ö±ðΪ¹Ì¶¨ PP ¶ÎÓë¹Ì¶¨ TT ¶Î¡£µ±Ê±²ÉÓÃÄÄÖÖ×ÊÔ´·Ö¶Î·½°¸¶ÔÓÚÎÒÃÇÀ´ËµÊÇÒ»¸ö±È½Ï¾À½áµÄÑ¡Ôñ£¬¹Ì¶¨ PP ¶ÎÐèÒªÐÞ¸Ä AAPT£¬´ú¼Û±È½Ï´ó£¬¹Ì¶¨ TT ¶ÎÏà¶ÔÀ´ËµÔò½ÏΪ¼òµ¥¡£³õʼÎÒÃDzÉÓõÄÊǹ̶¨ TT ¶Î£¬µ«ºóÀ´Ëæ×Ųå¼þµÄÔö¶à£¬TT ¶ÎÃ÷ÏÔ²»¹»Ó㬺óÀ´»¹ÊDzÉÓÃÐÞ¸Ä AAPT ¹Ì¶¨ PP ¶Î¡£´ó¼ÒÒªÉϲå¼þ»¯£¬Èç¹û¿ÉÔ¤¼ûºóÐø²å¼þ±È½Ï¶à£¬½¨ÒéÖ±½Ó²ÉÓù̶¨ PP ¶Î·½°¸¡£

³ýÁË ID ³åÍ»ÒÔÍ⣬×ÊÔ´ÃûÒ²ÓпÉÄÜÖØ¸´£¬¶ÔÓÚ×ÊÔ´ÃûÖØ¸´µÄÎÊÌâÎÒÃÇͨ¹ý¹æ·¶À´Ô¼Êø£¬ËùÓеIJå¼þ¶¼·ÖÅäÓй̶¨µÄ×ÊԴǰ׺¡£

ÈçºÎ Hook ×ÊÔ´¼ÓÔØ¹ý³Ì

android ͨ¹ý Resources ¶ÔÏóÍê³É×ÊÔ´¼ÓÔØ£¬Òª Hook ×ÊÔ´¼ÓÔØ¹ý³Ì£¬Ê×ÏÈÏëµ½µÄÊÇÄÜ·ñÌæ»»ÏµÍ³µÄ Resources ¶ÔÏóΪÎÒÃÇ×Ô¶¨ÒåµÄ Resources ¶ÔÏó¡£

µ÷Ñз¢ÏÖÒªÌæ»» Resouce ¶ÔÏó£¬ÖÁÉÙÒªÌæ»»Á½¸öϵͳ¶ÔÏó LoadedApk¡¢ContextImpl µÄ mResources ÊôÐÔ£¬²¢ÇÒ LoadedApk ¼° ContextImpl ¶¼ÊÇ˽ÓжÔÏ󣬻ùÓÚ¼æÈÝÐԵĿ¼ÂÇÎÒÃÇ·ÅÆúÁËÕâÖÖ·½°¸£¬¶ø²ÉÓÃÖ±½Ó¸´Ð´ Activity ¼° Application µÄ»ñÈ¡×ÊÔ´µÄÏà¹Ø·½·¨À´Íê³É Bundle ×ÊÔ´µÄ¼ÓÔØ¡£ÓÉÓڸ÷½°¸¶Ô Application ¼° Activity ¶¼ÓÐÇÖÈ룬ËùÒÔ»á´øÀ´Ò»¶¨µÄ½ÓÈë³É±¾¡£Îª´Ë£¬ÎÒÃÇÔÚ±àÒë¹ý³ÌÖÐÓôúÂë×¢ÈëµÄ·½Ê½Íê³É×ÊÔ´¼ÓÔØµÄ Hook£¬×ÊÔ´µÄ¼ÓÔØ²Ù×÷¶Ô²å¼þ¿ª·¢À´ËµÊÇÍêȫ͸Ã÷µÄ¡£

×¢£º×ÊÔ´ Hook Éæ¼°µ½¸´Ð´µÄ·½·¨ÓÐÈçϼ¸¸ö£º

Override
public Resources getResources() {
}

Override
public AssetManager getAssets() {
}

Override
public Resources.Theme getTheme() {
}

@Override
public Object getSystemService(String name) {
if (Context.LAYOUT_INFLATER_SERVICE.equals(name)) {
// ×Ô¶¨Òå LayoutInflater
}
return super.getSystemService(name);
}

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

¶ÔÓÚ Android À´Ëµ£¬²¢²»ÊÇÀà¼ÓÔØ½øÀ´¾Í¿ÉÒÔʹÓÃÁË£¬ºÜ¶à×é¼þ¶¼ÊÇÓÐÉúÃüµÄ¡£Òò´Ë¶ÔÓÚÕâЩÓÐѪÓÐÈâµÄÀ࣬±ØÐë¸øËüÃÇ×¢ÈëÉúÃüÁ¦£¬Ò²¾ÍÊÇËùνµÄ×é¼þÉúÃüÖÜÆÚ¹ÜÀí¡£ºÜ¶à²å¼þ»¯¿ò¼Ü£¬±ÈÈç DroidPlugin ͨ¹ý´óÁ¿ Hook AMS¡¢PMS µÈÀ´ÊµÏÖ×é¼þµÄÉúÃüÖÜÆÚ£¬´Ó¶øÊµÏÖÎÞÇÖÈëÐÔ¡£µ«¼¼Êõ¿Ï¶¨ÊÇ·þÎñÓÚÒµÎñ£¬ËÄ´ó×é¼þÕæµÄ¶¼ÐèÒª×ö²å¼þ»¯Âð£¿ÔÚÎÞÇÖÈëÐԺͼæÈÝÐÔÉϸÃÈçºÎ¾ñÔñ£¿¶ÔÓÚÕâ¸öÎÊÌâÎÒÃǸø³öµÄ´ð°¸ÊÇÎȶ¨Ñ¹µ¹Ò»ÇС£×ۺϵ±Ç°µÄÒµÎñÐÎ̬£¬ÎÒÃDzå¼þ»¯¿ò¼Ü¶¨Î»Ö»ÊµÏÖ Activity ¼° BroadCastReceiver ²å¼þ»¯£¬ÎþÉü²¿·Ö¹¦ÄÜÒÔÇóÎȶ¨ÐԿɿء£BroadCastReceiver ²å¼þ»¯Ö»ÊǰѾ²Ì¬¹ã²¥×ªÎª¶¯Ì¬¹ã²¥£¬ÏÂÃæÖØµã·Ö½âһϠActivity ²å¼þ»¯¡£

Activity ²å¼þ»¯

Activity ²å¼þ»¯ÊµÏÖ´óÖÂÓÐÒÔÏÂÁ½ÖÖ·½Ê½£º

Ò»ÖÖÊǾ²Ì¬´úÀí£¬Ð´Ò»¸ö PluginActivity ¼Ì³Ð×Ô Activity »ùÀ࣬°Ñ Activity »ùÀàÀïÉæ¼°ÉúÃüÖÜÆÚµÄ·½·¨È«¶¼ÖØÐ´Ò»±é£»

ÁíÒ»ÖÖ·½Ê½ÊǶ¯Ì¬Ìæ»»£¬ËÞÖ÷ÖÐԤע²á×® StubActivity£¬Í¨¹ýÔÚϵͳ²»Í¬²ã´Î Hook£¬´Ó¶øÊµÏÖ StubActivity ºÍ RealActivity Ö®¼äµÄת»»£¬ÒԴﵽ͵Áº»»ÖùµÄÄ¿µÄ¡£

ÓÉÓÚµÚÒ»ÖÖ·½°¸¶Ô²å¼þ¿ª·¢ÇÖÈëÐÔÌ«´ó£¬ÎÒÃDzÉÓõÄÊǵڶþÖÖ·½°¸¡£¼ÈÈ»Èç´Ë£¬ÎÒÃǾÍÐèÒª¶Ôͼ 4 ÖТٺ͢ÚÁ½¸öµã½øÐÐ Hook¡£

ͼ4 Hook µãѡȡ

¶ÔÓÚ¢ÙHook£ºÒµÄÚÒ»°ãµÄ×ö·¨ÊÇ Hook ActivityThread ÀàÓгÉÔ±±ä mInstrumentation£¬Ëü»á¸ºÔð´´½¨ Activity µÈ²Ù×÷£¬¿ÉÒÔͨ¹ý´Û¸Ä mInstrumentation ΪÎÒÃÇ×Ô¼ºµÄ InstrumentationHook£¬ÔÚÆä execStartActivity() ·½·¨ÖÐÍê³É RealActivity->StubActivity µÄת»¯¡£

¶ÔÓÚ¢ÚHook£º²»Í¬µÄ¿ò¼ÜÑ¡ÔñÔÚϵͳ²»Í¬µÄ²ã´ÎÉϽøÐÐ Hook£¬À´Íê³É StubActivity->RealActivity µÄ»¹Ô­¡£

ͼ5 ÏÖÓвå¼þ»¯¿ò¼Ü Hook ²ßÂÔ

´Óͼ 5 ¿ÉÒÔ¿´³öµÚ¶þÖÖ·½°¸²»¹ÜÔÚÄÄÒ»µãÉ쵀 Hook ¶¼»áÉæ¼°µ½ÏµÍ³Ë½ÓжÔÏóµÄ²Ù×÷£¬´Ó¶øÒýÈë²»¿É¿Ø·çÏÕ¡£¶øÎÒÃǵÄÔ­ÔòÊǾ¡Á¿ÉÙµØ Hook£¬ÈôÊÇÒÔÎþÉüµÍÇÖÈëÐÔΪ´ú¼Û£¬ÓÐûÓÐÒ»ÖÖ¸ü°²È«µÄ·½°¸ÄØ£¿²¢ÇÒÓÉÓÚÖ»¶Ô Activity ½øÐвå¼þ»¯£¬ËùÓÐÆô¶¯ Activity µÄµØ·½¶¼ÊÇͨ¹ý Context µÄ startActivity ·½·¨µ÷Æð£¬ÎÒÃÇÖ»Òª¸´Ð´ Application ¼° Activity µÄ startActivity() ·½·¨£¬ÔÚ startActivity() ·½·¨µ÷ÓÃʱÍê³É RealActivity->StubActivity£¬ÔÚÀà¼ÓÔØÊ±ÊµÏÖ StubActivity->RealActivity ¾Í¿ÉÒÔÁË¡£Í¬Ñù£¬¸´Ð´·½·¨ËùÒýÈëµÄÇÖÈëÐÔÍêÈ«¿ÉÒÔÔÚ±àÒëÆÚͨ¹ý´úÂë×¢ÈëµÄ·½Ê½½â¾öµô¡£

×¢£ºÊµ¼ÊÉÏ£¬ËäÈ» startActivity ÓкܶàÖØÐ´·½·¨£¬µ«ÎÒÃÇÖ»Ð踴дÒÔÏÂÁ½¸ö¾Í¿ÉÒÔÁË£º

@Override
public void startActivityForResult(Intent intent, int requestCode) {
}

@Override
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
}

ÁíÍ⣬¶ÔÓÚ Activity µÄ LanchMode£¬ÎÒÃÇÊÇͨ¹ýÔÚËÞÖ÷ÖÐÿÖÖ LaunchMode ¶¼Ô¤×¢²áÁ˶à¸ö£¨8 ¸ö£©StubActivity À´ÊµÏÖ¡£ÖµµÃ×¢ÒâµÄÒ»µãÊÇ£¬Èç¹û²å¼þ Activity Ϊ͸Ã÷Ö÷Ì⣬ÓÉÓÚϵͳÏÞÖÆ²»Äܶ¯Ì¬ÉèÖÃ͸Ã÷Ö÷Ì⣬ËùÒÔ¶ÔÓÚÿÖÖ LaunchMode ÀàÐÍÎÒÃǶ¼Ôö¼ÓÁËÒ»¸öĬÈÏÊÇ͸Ã÷Ö÷ÌâµÄ StubActivity¡£

ΪÁ˾¡¿ÉÄܵر£Ö¤Îȶ¨ÐÔ£¬ÎÒÃDzå¼þ Activity Ö§³ÖÁ½ÖÖÔËÐÐģʽ£¬Ò»ÖÖÊÇԤע²áģʽ£¬Ò»ÖÖÊÇÃâ×¢²áģʽ¡£¶ÔÓÚ¾²Ì¬²å¼þ£¨Ëæ App ´ò°ü£©ÎÒÃÇĬÈÏÔËÐÐÔÚԤע²áģʽÏ£¬¶ÔÓÚ¶¯Ì¬²å¼þ£¨·þÎñÆ÷Ï·¢£©²ÅÔËÐÐÔÚÃâ×¢²áģʽÏ¡£ÖµµÃ˵Ã÷µÄÊÇ£¬¾²Ì¬²å¼þÓëËÞÖ÷ AndroidManifest ºÏ²¢ÊÇÔÚ±àÒëÆÚ×Ô¶¯Íê³ÉµÄ¡£

²å¼þ¼äÒÀÀµ

ÎÒÃDzð·Ö²å¼þʱ£¬Ê×ÏÈÃ÷È·µÄÊÇÿ¸ö²å¼þµÄÒµÎñ±ß½ç£¬ÓÐÁ˱߽ç²ÅÓÐËùνµÄÄÚ¾ÛÐÔ£¬²ÅÄÜÇø·ÖÍⲿʹÓÃÕߺÍÄÚ²¿ÊµÏÖÕß¡£»ùÓÚÕâÑù²ð·Ö£¬ÎÒÃÇ¿ÉÒÔ¿´³öÿ¸ö²å¼þ¼È¿ÉÒÔÒÀÀµÓÚÆäËû²å¼þ£¬Ò²¿ÉÄܱ»ÆäËû²å¼þÒÀÀµ¡£ÎªÁ˼ò»¯ÒµÎñ²å¼þÓë»ù´¡²å¼þÖ®¼äµÄÒÀÀµ¹ØÏµ£¬ÎÒÃǹ涨»ù´¡²å¼þ²»ÄÜÒÀÀµÒµÎñ²å¼þ£¬ÒµÎñ²å¼þ¿ÉÒÔÒÀÀµ»ù´¡²å¼þ£¬ÒµÎñ²å¼þÓëÒµÎñ²å¼þÖ®¼ä¡¢»ù´¡²å¼þÓë»ù´¡²å¼þÖ®¼ä¿ÉÒÔ»¥ÏàÒÀÀµ¡£×ܽáÀ´¿´£¬²å¼þÖ®¼äµÄÒÀÀµÖ÷ÒªÓÐÁ½ÖÖÐÎʽ£º

Ò³ÃæÌø×ª£¨±ÈÈçÉÌÆ· Bundle Ìø×ªµ½µêÆÌ Bundle Ä³Ò»Ò³Ãæ£©£ºAndroid ¿ÉÒÔÓà Intent ½âñîÒ³ÃæÌø×ª£¬µ«¿¼Âǵ½¶à¶Ëͳһ£¬ÎÒÃDzÉÓõÄÊÇÀàËÆÓÚ×ÜÏß»úÖÆ£¬ËùÓÐÌø×ª¶¼Í¨¹ý Page Bus ´¦Àí£¬Ã¿¸öÒ³Ãæ¶¼¶ÔÓ¦Ò»¸ö±ðÃû£¬Ìø×ªÊ±¸ù¾Ý±ðÃûÀ´½øÐС£

¹¦Äܵ÷Óã¨ÉÌÆ· Bundle Óõ½µêÆÌ Bundle ÐÅÏ¢£©£ºÎÒÃǰÑÿ¸ö²å¼þ³éÏóΪһ¸ö·þÎñÌṩÕߣ¬²å¼þ¶ÔÍⱩ¶µÄ·þÎñ³ÆÖ®Îª±¾µØ Service£¬ËüÒÔ Interface µÄÐÎʽ¶¨Ò壬·þÎñÌṩÕß±£Ö¤°æ±¾Ö®¼äµÄ¼æÈÝ¡£±¾µØ Service ÔÚ²å¼þµÄ AndroidManifest ÖÐÉùÃ÷£¬²å¼þ°²×°Ê±Ïò¿ò¼Ü×¢²á±¾µØ Service£¬ÆäËû²å¼þʹÓÃʱֱ½Ó¸ù¾Ý·þÎñ±ðÃû²éѯ·þÎñ¡£ÎÒÃÇ»á°Ñ±¾µØ Service µÄ²éѯ¹ý³ÌÖ±½Ó°ó¶¨µ½ Context µÄ getSystemService() ·½·¨ÉÏ£¬Õû¸öʹÓùý³Ì¾ÍºÍµ÷Óà Android ϵͳ·þÎñÒ»Ñù¡£´ËÍ⣬³ýÁË·þÎñÒÔÍ⣬²å¼þ»¹ÓпÉÄܶÔÍⱩ¶һЩ Class£¬ÎªÁËÔö¼ÓÄÚ¾ÛÐÔ£¬ÎÒÃÇͨ¹ý@annotation µÄ·½Ê½ÉùÃ÷¶ÔÍⱩ¶µÄ Class£¬ÔÚ±àÒë½×¶Î Export ¹©ÆäËû²å¼þÒÀÀµ£¬Î´±»×¢½âµÄÀà¾ÍËãÊÇ public£¬¶ÔÆäËû²å¼þÒ²ÊDz»¿É¼ûµÄ¡£

²å¼þµÄÒÀÀµ¹ØÏµ¶¨ÒåÔÚÿ¸ö²å¼þµÄ AndroidManifest ÎļþÖС£

¾Ù¸öÀý×Ó£¬ÏÂÃæÊÇ Shop-Management Ä£¿éÔÚ AndroidManifest ÖеÄÉùÃ÷£º

<!-- ÒÔ϶¨ÒåµÄΪ Shop-Management ÒÀÀµµÄ Bundle-->
<dependent-bundle android:name ="com.koudai.weishop.lib.network" android:versionName="7.7.0.0"/>
<dependent-bundle android:name ="com.koudai.weishop.lib.location" android:versionName="7.7.0.0"/>
<dependent-bundle android:name ="com.koudai.weishop.lib.image" android:versionName="7.7.0.0"/>
<dependent-bundle android:name ="com.koudai.weishop.lib.boostbus" android:versionName="7.7.0.0"/>
<dependent-bundle android:name ="com.koudai.weishop.lib.base" android:versionName="7.7.5.0"/>
<dependent-bundle android:name ="com.koudai.weishop.lib.account" android:versionName="7.7.0.0"/>

<!-- ÒÔ϶¨ÒåµÄΪ Shop -Management ¶ÔÍⱩ¶µÄ·þÎñ-->
<local-service android:name ="ShopManagerService" android:value= "com.koudai.weishop.shop.management .impl.ShopManager"/>

ÆäÖУ¬versionName ΪÉùÃ÷µÄÒÀÀµ²å¼þµÄ×îС°æ±¾ºÅ£¬²å¼þ°²×°½×¶Î»áУÑéÒÀÀµÌõ¼þÊÇ·ñÂú×㣬Èô²»Âú×ã»á½øÐÐÏàÓ¦´¦Àí£¨Debug ģʽÅ× RuntimException£¬Release ģʽÊä³ö error log ²¢Éϱ¨¼à¿Øºǫ́£©¡£

¶¯Ì¬²¿Êð¼° HotPatch

²å¼þ»¯ÒԺ󣬶¯Ì¬²¿ÊðºÍ HotPatch Ò²ÊÇÐèҪ˵Ã÷µÄÁ½¸öµã£º

¶¯Ì¬²¿Êð

ÎÒÃÇ¿ò¼ÜÖ§³Ö Activity¡¢BroadcastReceiver µÄÃâ×¢²á£¬Èô²å¼þûÓÐÐÂÔöÆäËûÀàÐÍ£¨Service¡¢Provider£©µÄ×é¼þ£¬Ôò¸Ã²å¼þÖ§³Ö¶¯Ì¬²¿Êð¡£ÓÉÓÚÎÒÃDzÉÓöà ClassLoader »úÖÆ£¬ÀíÂÛÉÏÊÇÖ§³ÖÈȸüÐµģ¬µ«¿¼Âǵ½²å¼þÓжÔÍâµ¼³ö Class£¬ÎªÁ˼õÉÙ·çÏÕ£¬ÎÒÃǶÔÓÚ¶¯Ì¬²å¼þÉúЧʱ¼äÑÓ³Ùµ½Ó¦ÓÃÇл»ÖÁºǫ́ÒԺ󣬵±Óû§Çл»µ½ºǫ́ʱֱ½Ó Kill ½ø³Ì¡£

×¢£º

²å¼þ¸üÐÂÖ§³ÖÔöÁ¿¸üУ»

¶ÔÓÚ²å¼þ¸üмì²éÓÐÁ½¸ö´¥·¢Ê±»ú£ºÒ»¸öÊǽø³Ì³õʼ»¯Ê±£¨Pull£©£¬ÁíÒ»¸öÊÇÖ÷¶¯ Push ´¥·¢£¨Push£©¡£

HotPatch

²å¼þ»¯ºó£¬App ·ÖΪËÞÖ÷ºÍ²å¼þ£¬ËÞÖ÷ΪԴÂëÒÀÀµ£¬²å¼þΪ¶þ½øÖÆÒÀÀµ¡£¶ÔÓÚËÞÖ÷ºÍ²å¼þ£¬ÎÒÃDzÉÓò»Í¬µÄ HotPatch ·½°¸£º

²å¼þ¡ª¡ªÒòΪ²å¼þÖ§³Ö¶¯Ì¬²¿Êð£¬Èô²å¼þÐèÒª²¹¶¡£¬ÎÒÃÇÖ±½ÓÉý¼¶²å¼þ¼´¿É¡£¿öÇÒ²å¼þÖ§³ÖÔö

ÊÇÉý¼¶£¬²¹¶¡°üµÄ´óСҲ¿ÉÒԵõ½ÓÐЧ¿ØÖÆ£»

ËÞÖ÷¡ª¡ªËÞÖ÷²»Ö§³Ö¶¯Ì¬²¿Êð£¬Ö»ÄÜ×ß´«Í³µÄ HotPatch ·½°¸£¬¾­¹ý¶àÖÖ·½°¸µÄ¶Ô±È£¬ÎÒÃDzÉ

ÓõÄÊÇÀàËÆÓÚ Tinker ·½°¸£¬¾ßÌåÔ­Òò´ó¼Ò¿ÉÒԲο¼¡¶Î¢ÐÅÈȲ¹¶¡ÑݽøÖ®Â·¡·¡£

µ«ÎÒÃDz¢²»ÊÇÖ±½ÓʹÓÃµÄ Tinker£¬¶øÊÇÔÚʵÏÖ˼·ÉÏÓë Tinker Ò»Ö£¬²ÉÓÃÈ« Dex Ìæ»»µÄ·½Ê½À´¹æ±ÜÆäËû·½°¸µÄÎÊÌâ¡£ÓÉÓÚÎÒÃDz»½öÒµÎñ×é¼þʵÏÖÁ˲å¼þ»¯£¬¶øÇҴ󲿷ֻù´¡×é¼þ£¨Network¡¢Cache µÈ£©Ò²ÊµÏÖÁ˲å¼þ»¯£¬ËùÒÔËÞÖ÷²¢²»ÊǺܴó£¨<2.5M£©£¬¿öÇÒËÞÖ÷ÀïµÄ´úÂë¶¼±È½ÏÎȶ¨¡£

΢ÐÅµÄ Tinker ·½°¸ÔÚ²¹¶¡°üµÄ´óСÉϵÄÈ·ÓкܴóµÄÓÅÊÆ£¬ÎÒÃǾ´ÅåÆä¼¼Êõ̽¾¿µÄ¾«Éñ£¬µ«¶ÔÓÚÆäÎȶ¨ÐÔ³ÖÓл³ÒÉ̬¶È£¬»ùÓÚËÞÖ÷°ü¿É¿ØµÄǰÌáÏ£¬ÎÒÃÇÑ¡ÔñÎþÉüÁ÷Á¿À´±£Ö¤Îȶ¨ÐÔ¡£

´úÂë¹ÜÀí

ÎÒÃǶ¨Î»Ã¿¸ö²å¼þ¶¼ÊÇ¿ÉÒÔ¶ÀÁ¢µü´ú App£¬²å¼þ»¯ÒÔºó£¬Õû¸öµÄ¹¤³Ì×éÖ¯·½Ê½ÎªÈçͼ 6 µÄÐÎʽ¡£

ͼ6 ΢µê¹¤³Ì×éÖ¯·½Ê½

ÔÚ´ËÖ®ÖÐÿ¸ö¹¤³Ì¶¼¶ÔÓ¦Ò»¸ö Git ¿â£¬Ö÷¿â°üº¬¶à¸ö×ӿ⣬¶ÔÓÚÕâÖÖ¹¤³Ì½á¹¹£¬ÎÒÃǺÜ×ÔÈ»µØÏëµ½Óà SubModule À´¹ÜÀí΢µê¹¤³Ì¡£È»¶øÊÂÓëԸΥ£¬Ê¹ÓÃÒ»¶Î SubModule ºó·¢ÏÖÓÐÁ½¸öÎÊÌâÑÏÖØÓ°Ï쿪·¢Ð§ÂÊ£º

¿ª·¢Ä³¸ö²å¼þʱ£¬¶ÔÓÚÆäËû²å¼þÓ¦¸Ã¶¼ÊǶþ½øÖÆÒÀÀµ£¬²»ÔÙÐèÒªÆäËû²å¼þµÄÔ´Â룬µ« SubModule »á°ÑËùÓÐ×Ó¹¤³ÌµÄÔ´Âë¶¼ Checkout ³öÀ´¡£¿¼Âǵ½ Gradle µÄÉúÃüÖÜÆÚ£¬ÕâÑùÑÏÖØÓ°ÏìÁ˱àÒëËÙ¶È£»ÁíÍ⣬Ö÷¹¤³Ì°üº¬ËùÓÐ×Ó¹¤³ÌµÄÔ´ÂëÒ²Ôö¼ÓÎó²Ù×÷µÄ·çÏÕ£¨È«Á¿±àÒë¡¢ÒýÓñ¾µØ°ü¶ø·Ç Release °ü£©£»

´úÂëÌá½»¸´ÔÓÇÒ¾­³£³öÏÖ³åÍ»£ºÎÒÃÇÖªµÀÿ´Î git Ìá½»¶¼»á²úÉúÒ»¸ö Sha Öµ£¬Ö÷¹¤³Ì¹ÜÀíËùÓÐ×Ó¹¤³ÌµÄ Sha Öµ£¬Ã¿´Î×Ó¹¤³Ì±ä¶¯£¬³ýÁËÌá½»×Ó¹¤³ÌÒÔÍ⣬»¹ÐèҪͬ²½¸üÐÂÖ÷¹¤³ÌµÄ Sha Öµ¡£ÕâÑùÿ´Î×Ó¹¤³ÌµÄ±ä¶¯¶¼Éæ¼°µ½Á½´Î Commit£¬¸üÑÏÖØµÄÊÇ£¬Èç¹ûÁ½¸öÈËͬʱ¸Ä¶¯Í¬Ò»¸ö×Ó¹¤³Ì£¬µ«Íü¼ÇÁËͬ²½Ìá½»Ö÷¹¤³ÌµÄ Sha Öµ£¬Ôò»á²úÉú³åÍ»£¬¶øÇÒÕâÖÖÇé¿öÏÂÎÞ·¨¸üС¢ÎÞ·¨»Ø¹ö¡¢ÎÞ·¨ºÏ²¢£¬±ÀÀ£¡­¡­

Õë¶ÔʹÓà Submodule ¹ý³ÌÖÐÓöµ½µÄÎÊÌ⣬ÎÒÃÇÒýÈëÁË Repo À´¹ÜÀí¹¤³Ì´úÂë¡£Repo ²»Ïñ Submodule ÄÇÑù£¬Í¨¹ý½¨Á¢Ò»ÖÖÖ÷´Ó¹ØÏµ£¬ÓÃÖ÷ Module ¹ÜÀí×Ó Module¡£ÔÚ Repo ÀËùÓÐ Module ¶¼ÊÇÆ½¼¶¹ØÏµ£¬Ã¿¸ö Module µÄ°æ±¾¹ÜÀíÍêÈ«¶ÀÁ¢ÓÚÈÎºÎÆäËû Module£¬²»»áÏñ Submodule ÄÇÑù£¬Ìá½»ÁË×Ó Module ´úÂ룬Ҳ»á¶ÔÖ÷ Module Ôì³ÉÓ°Ïì¡£

ÁíÍ⣬ÎÒÃÇÔÚʹÓùý³ÌÖУ¬»¹·¢ÏÖÁËÁíÍâһЩºÃ´¦£º

°þÀëÁËÖ÷ Module ºÍ×Ó Module µÄ¹ØÏµ£¬¼ì³ö¡¢Í¬²½¡¢Ìá½»µÈ²Ù×÷¶¼±È Sumodule Òª¿ìºÃ¶à±¶£»

Ä£¿é¹ÜÀíÅäÖÃÓÉÒ»¸öİÉúµÄ .gitmodules ±ä³ÉÁËËùÓÐÈ˶¼¸üÊìϤµÄ XML Îļþ£¬±ãÓÚÅäÖùÜÀí¡£

¿ª·¢µ÷ÊÔ

²å¼þ»¯ÒÔǰ£¬ÎÒÃǶÔËùÓÐÄ£¿é¶¼ÊÇÔ´ÂëÒÀÀµ¡£²å¼þ»¯ÒÔºó£¬ÔËÐÐijһģ¿éʱ£¬½ö¶ÔËÞÖ÷¼°µ±Ç°Ä£¿éÊÇÔ´ÂëÒÀÀµ£¬¶ÔÓÚÆäËûÄ£¿éÈ«²¿ÊǶþ½øÖÆÒÀÀµ¡£¼¯³É·½Ê½µÄ¸Ä±ä¾ÍÉæ¼°µ½ÈçÏÂÁ½¸öÎÊÌ⣺

´ò°üʱÈçºÎ¼¯³É²å¼þ°ü£¿

ÈçºÎ½øÐжϵãµ÷ÊÔ£¿

²å¼þ°ü¼¯³É

ÎÒÃDzå¼þµÄ¶þ½øÖưüÊÇ so °ü£¬ÆäʵÕâЩ so ¶¼ÊÇÕý³£µÄ Apk ½á¹¹£¬¸ÄΪ so ·ÅÈë lib Ŀ¼ֻÊÇΪÁ˰²×°Ê±½èÓÃϵͳµÄÄÜÁ¦´Ó Apk Öнâѹ³öÀ´£¬·½±ãºóÐø°²×°¡£ÎÒÃÇĿǰËùÓеĿⶼÊÇ»ùÓÚ Maven À´¹ÜÀí£¬²å¼þ¼ÈÈ»ÊÇ so °ü£¬ÕýºÃ½èÓà Maven ¹ÜÀíÄÜÁ¦Í¬Ê±£¬»ùÓÚ¿ªÔ´µÄ Gradle ²å¼þ android-native-dependencies ʵÏÖÁ˲å¼þµÄ¼¯³É¡£

¶Ïµãµ÷ÊÔ

¿ª·¢²å¼þʱ£¬¶ÔÓÚÆäËû²å¼þµÄ¶þ½øÖưü¶¼ÊÇÒÀÀµµÄÒÑ·¢²¼°æ£¬ËùÓÐÒÑ·¢²¼µÄ²å¼þ¶¼ÊÇ»ìÏý°ü¡£Èô¿ª·¢¹ý³ÌÖÐÉæ¼°µ½ÆäËû²å¼þµÄ¶Ïµãµ÷ÊÔ£¬Ôò»á³öÏÖÎÞ·¨¶ÔÓ¦Ô´Âë¡£

¶ÔÓÚÕâÖÖÇé¿ö£¬ÎÒÃÇÖÆ¶¨ÁËÒ»¸ö²ßÂÔ£¬ÔÚ Debug ģʽÏ£¬»áÓÅÏÈʹÓñ¾µØ±àÒëµÄ°ü¡£ÈôÒªµ÷ÊÔÆäËû²å¼þ£¬¿ÉÒ԰Ѳå¼þÔ´Âë¼ì³öÀ´±àÒë±¾µØ°ü£¨µÃÒæÓÚ Repo ¼ì³ö¹ý³Ì·Ç³£·½±ã£©£¬´ò°ü¹ý³ÌÈô¼ìË÷µ½Óб¾µØ°ü£¬»áÌæ»»µô´Ó Maven Ô¶³Ì²Ö¿âÏÂÔØµÄ°ü£¬µ±È»£¬Õâ¸öÌæ»»¹ý³ÌÊÇͨ¹ý±àÒë½Å±¾×Ô¶¯Íê³ÉµÄ¡£

×ܽá

ËäÈ» Android ²å¼þ»¯ÔÚ¹úÄÚ·¢Õ¹Óм¸Ä꣬¸÷ÖÖ·½°¸°Ù»¨Æë·Å£¬µ«ÕæµÄÒªÔÚÒµÎñ¿ìËÙµü´úµÄ¹ý³ÌÖÐÍê³É²å¼þ»¯¸ÄÔ칤×÷£¬ÆäÖÐËáˬҲֻÓÐÇ×ÀúÕß²ÅÄÜÌå»áµ½¡£½üÄêÀ´Ëæ×Å React Native¡¢Weex ¼°Î¢ÐÅС³ÌÐòµÄÐËÆð£¬ºÜ¶àÒÔǰÐèÒª²å¼þ»¯²ÅÄܽâ¾öµÄÎÊÌ⣬ÏÖÔÚ»òÐíÓÐÁ˸üºÃµÄ½â¾ö·½Ïò¡£µ«£¬¼¼Êõ·þÎñÓÚÒµÎñ£¬Îȶ¨Ñ¹µ¹Ò»ÇУ¬Óë´ó¼Ò¹²Ãã¡£

 

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

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

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

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