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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android¸ß¼¶»ìÏýºÍ´úÂë±£»¤¼¼Êõ
 
À´Ô´:51CTO ·¢²¼ÓÚ2017-7-31
  2146  次浏览      27
 

ÕâÊÇһƪ¹ØÓÚ Android ´úÂë±£»¤µÄÎÄÕ£¬Ö¼ÔÚ½éÉÜ´úÂë»ìÏý¡¢·ÀֹĿÏò¹¤³ÌµÄ¸÷Öָ߼¶¼¼ÇÉ¡£´ó¼Ò¶¼ºÜ棬ÎÒÒ²¸Ï×Å»ØÈ¥¼ÌÐø¿ª·¢ÎÒµÄÐÂÓ¦Óã¬Òò´Ë»°²»¶à˵£¬Ô½¸É(gan, Ò»Éù)Ô½ºÃ¡£

¿ªÊ¼Ö®Ç°£¬ÖµµÃһ˵µÄÊÇ£¬±¾Îij¬¹ýÎåǧ×Ö£¬ÍêÈ«ÓÉÎÒ¿ª·¢µÄ¡¸´¿´¿Ð´×÷¡¹Êéд¶ø³É£¬´¿´¿Ð´×÷Ö÷´ò°²È«¡¢Ð´×÷ÌåÑéºÍÓÀ²»¶ªÊ§ÄÚÈÝ£¬ÓÚÊDZ¾×ÅÕä°®ÉúÃü£¬ÎÒÓô¿´¿Ð´×÷À´Ð´ÕâÆªÎÄÕ¡£

±¾ÎÄÓÐÁ½²¿·ÖÄÚÈÝ£¬Ò»²¿·Ö½²»ìÏý£¬Ò»²¿·Ö½éÉÜһЩ»ìÏý֮ϵݲȫÊֶΡ£»ù×¼Ô­Ôò¶¼ÊÇ£ºÔÚ±£Ö¤²»Âé·³µ½×ÔÉí ÒÔ¼° Äܹ»Õý³£ÔĶÁÒì³£ÈÕÖ¾µÄǰÌáÏ£¬¾¡¿ÉÄÜÌá¸ß»ìÏýÇ¿¶ÈºÍ±£»¤´úÂ밲ȫ¡£

»ìÏý

Android ¹Ù·½¼¯³ÉÁË Proguard ÒÔ¹©ÎÒÃǽøÐдúÂë»ìÏý¹¤×÷£¬¹ØÓÚ Proguard Äã¿ÉÒÔËÑË÷µ½¸÷ÖÖËüµÄ rules ½âÊÍ£¬ÕâЩÎÄÕÂǧƪһÂÉ£¬Òò´ËÎÒ²»ÔÙ׸Êö£¬Ö»ËµÒ»Ð©ÌرðµÄÓÐÓõļ¼ÇÉ£º

Ò»°ãÇé¿öÏ£¬Android µÄ gradle Öж¼»áĬÈÏд×Å£º

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

ÕâÒ»ÐдúÂëºÜ¶àÈ˲»Á˽⡣ËüµÄÒâ˼ÊÇ£¬Ö¸¶¨ÁËÁ½¸ö Proguard rules Îļþ£¬Ò»¸öÊÇͨ¹ýgetDefaultProguardFile() ·½·¨»ñµÃ¹Ù·½×Ô´øµÄ»ìÏý¹æÔòÎļþ·¾¶£¬ÁíÒ»¸öÊÇÓ뵱ǰ gradle ÏàͬĿ¼Ï嵀 proguard-rules.pro Îļþ·¾¶¡£

ºóÕß¾ÍÔÚÎÒÃÇÏîÄ¿ÖУ¬ÓÉÎÒÃÇÊéдµÄ£¬Ã»Ê²Ã´ºÃ˵µÄ£¬ÎÒÃÇÒª¹Ø×¢µÄÊÇǰÕßÕâ¸öĬÈÏ Proguard Îļþ£¬ËüµÄÄÚÈÝÊÇʲôÄãÓÐÔøÌ½¾¿¹ýÂð?ûÓеϰ£¬Äã¿ÉÒÔÔÚÄãµÄϵͳÎļþÀïËÑË÷proguard-android.txt ¾ÍÓ¦¸ÃÄܰÑËüÕÒ³öÀ´£¬¾ßÌå×Ô¼ºÈ¥¿´£¬ÎÒ¾Í˵һЩ¹Ø¼üµÄ£¬Õâ¸öĬÈÏÎļþÖаïÎÒÃÇÉùÃ÷ÁËÐí¶à»ìÏý¹æÔòÄÚÈÝ£¬°üÀ¨£ºkeep ËùÓм̳Ð×Ô View µÄÀ࣬keep ËùÓм̳Ð×Ô Activity µÄÀ࣬keep ËùÓÐ JavascriptInterface¡¢native ·½·¨ÉùÃ÷£¬ÒÔ¼° keep һЩע½âÁË@Keep µÄÄÚÈÝ¡£

ËùÒÔÄãÖªµÀΪʲôĬÈÏÇé¿öÏ£¬¼´Ê¹Äã×Ô¼ºÒ»Ìõ¹æÔò¶¼Ã»ÓмÓÈ룬ÄãµÄ×Ô¶¨Òå View ºÍ Activity ¶¼±»±£ÁôÏÂÀ´Á˰ɣ¬ÖÁÉÙÀàÃû¶¼Ã»Óб»»ìÏý¡£

ÄÇôΪʲô¹Ù·½Ä¬ÈÏ»á°ïÎÒÃÇдÏÂÕâЩ?Ϊʲô View ºÍ Activity ĬÈÏÇé¿öÏÂÓ¦¸Ã±»±£ÁôÄØ?

¼òµ¥À´Ëµ£¬ÒòΪ Proguard Ô­±¾ÊÇΪ Java ´òÔìµÄ£¬ËüÎÞ·¨ËÑË÷µ½ÎÒÃÇ AndroidManifest¡¢²¼¾ÖµÈÎļþÖÐÒýÓÃÁËÄÄЩ Java À࣬Òò´ËÈç¹û Java ´úÂë±äÁ˶ø XML ÎļþÖеÄÒýÓÃû±ä£¬¾Í»áÔì³É·´Éäʧ°Ü¡£ËùÒÔÕâЩ±» XML ʹÓõ½µÄÀàÐèÒª keep ס¡£

¶ÔÓÚÕâ¸öÎÊÌ⣬¶öÁËô µÄÍŶÓÌṩÁËÒ»¸öÏÊΪÈËÖªµÄ gradle ²å¼þ ÓÃÀ´ÎÞÉË»ìÏý Activity ºÍ View£¬Õâ¸öÏîÄ¿½Ð Mess£ºhttps://github.com/eleme/Mess £¬¾ßÌåÄÚÈݸ÷λ¿ÉÒÔÉÔºó×ÔÐÐÈ¥ÔĶÁÆäÎĵµºÍ½Ì³Ì£¬Á´½Ó×îºó¶¼»¹»á¸½ÓÚĩβ¡£¼òµ¥À´Ëµ£¬Mess ÃÖ²¹ÁË Proguard ²»ÄܼìË÷ XML ÎļþµÄȱµã£¬°ï Proguard Íê³ÉÁË Activity ºÍ View µÄ¸ÄÃû¼° mapping¡£

»°Ëµ»ØÀ´£¬Ç°ÃæÎÒ½¨Òé¸÷λ¶¼È¥ÖðÐÐÁ˽âÏÂĬÈÏ»ìÏýÅäÖÃÎļþ£¬ÒòΪֻÓÐÕâÑù£¬Äã²ÅÖªµÀÕû¸ö»ìÏý¹¤¾ß°ïÄã×öÁËʲô£¬Á˽âÇå³þÖ®ºó£¬ÎÒ½¨ÒéµÄÒ»¸ö×ö·¨ÊÇ£¬°ÑÕâ¸öĬÈÏÎļþ¿½±´µ½ÄãµÄÏîĿĿ¼֮Ï£¬É¾µô getDefaultProguardFile('proguard-android.txt')£¬ÔÙÒýÈëÏÖ´æÓÚÄãĿ¼֮ϵÄԭĬÈÏÎļþ¡£Õâô×öµÄºÃ´¦ÊÇ£¬·½±ãÄãÐÞ¸ÄÕâ¸öĬÈÏÎļþ£¬ÒòΪËüÓÐЩÄÚÈÝÊDz»±ØÒª»òÕß¿ÉÒÔ¸ü¸ÄµÄ¡£²»¹ý»ù±¾ÉÏÎÒÃÇ¿ÉÒÔ±£ÁôÆäÔ­Ñù¡£¸´ÖƹýÀ´µÄÁíÒ»¸öºÃ´¦ÊÇ£¬±ÜÃâÆä±»Íâ·½¸üе¼ÖÂÄãÒýÓùýÀ´ºó²úÉú±äÊý¡£×ÜÖ®£¬proguardFiles Õâ¸öÅäÖÃÏî(ÆäʵÊÇÒ»¸ö gradle ·½·¨)¿ÉÒÔ½ÓÊÜÎÞÏÞ¸ö rules Îļþ·¾¶£¬ËüµÄ²ÎÊýÊÇÒ»¸ö¿É±ä×Ö·û´®²ÎÊý£¬²»¹ýΪÁ˱ÜÃâ´úÂëºáÏò·¢Õ¹£¬ÎÒ¸üÔ¸ÒâʹÓÃÁíÒ»¸ö·½·¨£¬½Ð proguardFile£¬×¢Ò⣬ÉÙÁËÒ»¸ö s ÓÐûÓУ¬Ëü½ÓÊܵ¥¸ö²ÎÊý£¬Ï൱ÓÚ add Ò»¸ö rules¡£¶Ô´Ë£¬ÌṩÎÒµÄÅäÖÃÒÔ¹©²Î¿¼£º

release {
debuggable false
minifyEnabled true
zipAlignEnabled true
shrinkResources true
signingConfig signingConfigs.release
proguardFile 'proguard-common.pro'
proguardFile 'proguard-rules.pro'
proguardFile 'proguard-rules-google-ads.pro'}

ÆäÖÐ proguard-common.pro Õâ¸öÎļþ¾ÍÊÇÉÏÊöÎÒ˵µÄ¸´ÖƹýÀ´µÄ¹Ù·½Ä¬ÈÏÅäÖÃÎļþ£¬Ëü±»ÎÒ·ÅÔÚµ±Ç° module Ŀ¼֮ÏÂºÍ proguard-rules.pro ²¢ÁС£ÕâôдºÜÇå³þ¶øÇÒ±ãÓÚ¸´Óá£

½²Íê»ù±¾ÄÚÈÝÖ®ºó£¬ÎÒ¾ö¶¨ÔÙ½éÉÜÁ½ÌõÌØ±ðʵÓÃµÄ Proguard rules£º

-repackageclasses

-repackageclasses ÕâÌõ¹æÔòÅäÖÃÌØ±ðÇ¿´ó£¬Ëü¿ÉÒÔ°ÑÄãµÄ´úÂëÒÔ¼°ËùʹÓõ½µÄ¸÷ÖÖµÚÈý·½¿â´úÂëÍ³Í³ÒÆ¶¯µ½Í¬Ò»¸ö°üÏ£¬¿ÉÄÜÓÐÈËÖªµÀÕâÌõÅäÖ㬵«½ö½öÖªµÀËü»¹²»ÄÜ·¢»ÓËü×î´óµÄ×÷Óã¬Ä¬ÈÏÇé¿öÏ£¬ÄãÖ»ÒªÔÚ rules ÎļþÖÐдÉÏ -repackageclasses ÕâÒ»ÐдúÂë¾Í¿ÉÒÔÁË£¬Ëü»á°ÑÉÏÊöµÄ´úÂëÎļþ¶¼Òƶ¯µ½¸ù°üĿ¼Ï£¬¼´ÔÚ / °ü֮ϣ¬ÕâÑùµ±ÓÐÈË·´±àÒëÁËÄãµÄ APK£¬½«»áÔÚ¸ù°ü֮Ͽ´µ½ ³ÉǧÉÏÍò µÄÀàÎļþ²¢ÁÐ×Å£¬³ý´ËÖ®Í⣬ÓÉÓÚÎÒÃÇÓÐʱ²»µÃ²» keep һЩÀàÎļþ£¬ÓÚÊÇÄãÓ¦ÓõİüÃû²ã´ÎÈÔÈ»»á´æÔÚ£¬ÓÐһЩû±»ÍêÈ«»ìÏýµÄÀཫ¼ÌÐø´æÁôÔÚÄãµÄ°üÃû֮ϣ¬ÕâЩÀàÎļþ¾ÍÏà¶ÔµÃ²»µ½ºÜºÃµÄ±£»¤¡£ÓÚÊÇÎÒÒª½éÉÜÒ»¸öС¼¼ÇÉ£¬¾ÍÊÇ -repackageclasses ºó¸úÉÏÒ»¸öÄãÓ¦ÓõİüÃû£¬È磺

-repackageclasses com.drakeet.purewriter.debug

Õâô×öÒÔºó£¬×îÖÕ Proguard »á½«°üÀ¨µÚÈý·½¿âµÄËùÓÐÀàÎļþ¶¼Òƶ¯µ½ÄãµÄ°üÃû֮ϣ¬Ëùν²ØÒ¶ÓÚÁÖ£¬ÕâʱºòÄÇЩÄãδÄÜÍêÈ«»ìÏýµÄÀàÒ²¿ÉÒÔ²ØÉíÔÚÕâÀàÎļþ´óº£Ö®ÖУ¬¶øÇÒÕâЩÀàÎļþÃû¶¼»á±»»ìÏý³É abcd ×Öĸ×éºÏµÄÃû×Ö¡£

ÐèҪעÒâµÄÊÇ£¬-repackageclasses + ÄãµÄ°üÃû ÕâÖÖ×ö·¨´æÔÚ»ìÏý bug£¬¶øÄ¬ÈÏ -repackageclasses ²»¼Ó°üÃû²»»á³öÏÖ bug£¬ËùÒÔ³õ´ÎʹÓô˷¨ÐèÒª½øÐвâÊÔ£¬·ñÔòÇëÍ˶øÇóÆä´Î£¬¹ØÓÚÕâ¸ö bug µÄ¾ßÌåÄÚÈݲ»¶à˵£¬ºÜ׸Êö¡£

µÚ¶þ¸öʵÓà rules ÅäÖÃÏ-obfuscationdictionary

-obfuscationdictionary ºóÃæ¼ÓÒ»¸ö´¿Îı¾Îļþ·¾¶£¬ËüµÄ×÷ÓÃÊÇÖ¸¶¨Ò»¸ö×ÖµäÎļþ×÷Ϊ»ìÏý×ֵ䡣ĬÈÏÇé¿öÏÂÎÒÃǵĴúÂëÃüÃû»á±»»ìÏý³É abcdefg... ×Öĸ×éºÏµÄÄÚÈÝ£¬ÐèÒªÐ޸ĿÉÒÔʹÓÃÕâ¸öÅäÖÃÏ×ÖµäÐ޸ijÉÂÒÂë»òÖÐÎÄÄÚÈÝ¡£ÂÒÂëÃüÃû¿ÉÒÔÁî·´±àÒëÕß»³ÒÉÈËÉú¡£ÖÐÎÄÃüÃûÔòÄܹ»ÆÆ»µÒ»Ð©·´±àÒëÈí¼þµÄÕý³£¹¤×÷£¬¶øÇÒÓеÄÖÐÎÄÃüÃû»¹ÄÜÆðµ½ÂÒ»¨½¥ÓûÃÔÈËÑÛµÄЧ¹û£¬±ÈÈç GitHub ÉϽÏΪÁ÷ÐеÄij³¤ÕߵϰÓï×÷Ϊ×ֵ䣬Ôڴ˲»±ãÌù³ö(¿ÉÄÜ»áÓÐÈËÉíΣÏÕ)£¬¸÷λ¿ÉÒÔ×ÔÐÐËÑË÷£¬ÕÒ²»µ½±ð¹ÖÎÒ¡£ÕâЩ»°Óï×÷Ϊ´úÂëÃüÃû£¬¿ÉÒÔÁî·´±àÒëÕß³Á½þÆäÖУ¬ÎÞÐÄ·ÖÎö´úÂë :P¡£

×îºó£¬¹ØÓÚ»ìÏýµÄÄÚÈÝ£¬ÎÒÃÇ»¹ÓÐÒ»¿éÈíÀߣ¬¾ÍÊÇ×ÊÔ´Îļþ£¬Proguard ÍêÈ«²»»á¹ÜÎÒÃǵÄ×ÊÔ´Îļþ£¬Òò´ËÈç¹û×ÊÔ´ÎļþÃûûÓÐ×ö±£»¤µÄ»°£¬ºÜÈÝÒ×±»Ë³ÌÙÃþ¹ÏÕÒµ½¹ØÁªµÄ Java ´úÂ룬¶Ô´Ë£¬Î¢ÐÅÍŶÓÌṩÁËÒ»¸öºÃÓõÄ×ÊÔ´»ìÏý¹¤¾ß£¬Ëü²»½öÄܰïÄãÈ«Ãæ»ìÏý×ÊÔ´Îļþ£¬»¹ÄܰïÄãËõ¼õ×ÊÔ´ÎļþµÄÕûÌåÌå»ý£¬Õâ¸ö¹¤¾ß½Ð AndResGuard£¬¿ªÔ´µØÖ·£ºhttps://github.com/shwenzhang/AndResGuard

ºÃÁË£¬ÖÕÓÚ¼òµ¥½²ÍêÁËһЩ¹ØÓÚ»ìÏýµÄÒªµã£¬¹ØÓÚ»ìÏýÆäʵ»¹ÓÐÐí¶àСÄÚÈÝ£¬±ÈÈç¿ÉÒÔʹÓÃconsumerProguardFiles Ϊһ¸ö library »ò SDK ÏîÄ¿ÅäÖûìÏýÎļþ£¬ÕâÑùµ±Ä³¸ö app ÒýÓÃÁËÄãÕâ¸ö¿â£¬ÎÞÐèÔÙÅäÖÃÏà¹Ø»ìÏýÄÚÈÝ£¬¸Ã app ¾Í»á×Ô¶¯´Ó consumerProguardFiles ÅäÖõÄÎļþÖжÁÈ¡ÐèÒª½øÐÐµÄ keep ¶¯×÷£¬Õâ¶ÔÓڿ⿪·¢ÕßÊǺÜÓÐÓõÄÒ»¸ö¹¦ÄÜ¡£¸ü¶à¾Í²»Ï¸ËµÁË£¬ÎÄÕÂĩβÎһḽÉÏÎҵĻìÏýÅäÖÃÎļþƬ¶Î¡£

°²È«

ÓÐÁË´úÂë»ìÏý»¹²»¹»£¬ÎÒÃÇÐèÒª¸ü¶à¼¼ÇÉÀ´±£»¤ÎÒÃǵĴúÂë£¬ÌØ±ðÊǶÔÓÚÐèÒª×ö»ìÏýµ«ÓÖÐèÒª±©Â¶Ðí¶à API µÄ SDK ¿ª·¢ÕßÀ´Ëµ¡£»ìÏýÊÇ»ù´¡£¬´úÂ밲ȫÊÇÒâʶ¡£

Ê×ÏÈÎÒÃÇÒªÖªµÀÎÒÃÇ»ìÏý´úÂëÊÇÈçºÎ±»¹¥ÆÆµÄ£¬Æäʵ¶ÔÓÚ·´±àÒëÕßÀ´Ëµ£¬×î¼òµ¥µÄÈëÊÖµã¾ÍÊÇ×Ö·û´®ËÑË÷£¬ÎÒÃÇÓ²±àÂëÁôÔÚ´úÂëÀïµÄ×Ö·û´®Öµ¶¼»áÔÚ·´±àÒë¹ý³ÌÖб»Ô­Ñù»Ö¸´£¬Òò´ËÕâÊÇÎÒÃÇÊ×Òª¹Ø×¢¶ÔÏó¡£±ÜÃⱻͨ¹ý×Ö·û´®¹¥ÆÆ£¬ÎÒÃÇÓ¦¸Ã×öµ½ÒÔϼ¸µã£º

Ò»£¬²»ÒªÓ²±àÂëдÈë×Ö·û´®Öµ£¬¼´Ê¹Äã²»µÃ²»Õâô×ö£¬Ò²ÖÁÉÙÓ¦¸ÃÁíÆðÒ»¸öÀ࣬±ÈÈç½Ð×öHardStrings£¬ÓÃÓÚ¾²Ì¬´æ·ÅÕâЩӲ±àÂëµÄ×Ö·û´®¡£ÕâÑù·´±àÒëÕßÖ»ÄÜËÑË÷µ½ÄãÕâ¸ö³£Á¿À࣬¶ø½ÏÄÑÒÔËÑË÷µ½ÕâЩ×Ö·û´®³£Á¿±»ÄÄÀïÒýÓá£

¶þ£¬ÔÚ release »ìÏý¹ý³ÌÖÐɾ³ý Log ´úÂ룬ʹÓà -assumenosideeffects Õâ¸öÅäÖÃÏî¿ÉÒÔ°ïÎÒÃÇÔÚ±àÒë³É APK ֮ǰ°ÑÈÕÖ¾´úÂëÈ«²¿É¾µô£¬Õâô×ö²»½öÓÐÖúÓÚÌáÉýÐÔÄÜ£¬¶øÇÒÈÕÖ¾´úÂëÍùÍù»á±£ÁôºÜ¶àÎÒÃǵÄÒâͼºÍÐí¶à¿É±»·´±àÒëµÄ×Ö·û´®£º

-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int d(...);
public static int w(...);
public static int v(...);
public static int i(...);
}

Èý£¬¶ÔÓÚÄã²»µÃ²»ÁôϵÄһЩӲ±àÂëºÍÈÕÖ¾ÄÚÈÝ£¬¿ÉÒÔ²ÉÓñàÂëÐÎÊ½Ìæ»»£¬Èç Äã¿ÉÒԹ涨 "4001" ´ú±íijÖÖ´íÎ󣬶ø²»ÊÇÔÚÄãµÄ´úÂëÀïдÈëÕâ¸ö´íÎóµÄ¾ßÌåÃèÊö×Ö·û´®¡£Õâô×öµÄ»°£¬ÄãÐèÒªÓиöµØ·½¼ÇÏÂÕâЩ±àÂëÓ³ÉäµÄÄÚÈÝ£¬¹ØÓÚ´ËÓиö¼¼ÇÉ£ºÄã¿ÉÒÔÔÙ´´½¨Ò»¸ö³£Á¿À࣬ÆäÄÚÈÝÊÇÒ»¶Ñ¾²Ì¬×Ö·û´®¶ÔÏó£¬Õë¶ÔÉÏÃæÄǸöÀý×Ó£¬Äã¿ÉÒÔ°ÑÕæÕýµÄ´íÎóÐÅÏ¢×÷Ϊһ¸ö×Ö·û´®±äÁ¿µÄÃû×Ö£¬¶ø°ÑËüµÄֵд³ÉÒ»¸ö±àÂ룬ÈçÏ£º

public static final String SHOULD_REGISTER_FIRST_ERROR = "ssrrffe";

ÕâÑùµ±ÄãÔÚ¿´Ã»»ìÏýµÄ´úÂëÒýÓÃÕâ¸ö¾²Ì¬±äÁ¿£¬ÄãÄܹ»Ò»Ä¿ÁËÈ»ËüµÄÒâ˼¡£¶ø·´±àÒëÕß¿´µ½µÄÔòÊÇ£º

public static final String abc = "ssrrffe";

ÃüÃû¿´²»¶®£¬ÖµÒ²¿´²»¶®¡£

ËÄ£¬°Ñ AppKey Ö®ÀàÌØ±ðÃô¸ÐµÄ×Ö·û´®ÄÚÈݲØÔÚ native so ÎļþÖС£

¹ØÓÚ×Ö·û´®¼¼ÇɵÄÄÚÈݲ¶à¾ÍÕâÑùÁË£¬ÄÜ×öµ½ÕâЩ¾Í²»´íÁË£¬»¹ÓÐһЩ¼«¶Ë×ö·¨²»¶à˵£¬ÎªÁË×è°­ºÚ¿ÍÔĶÁ£¬×Ô¼ºÒ²±äµÃ·Ç³£Âé·³£¬Ë«Èн££¬Õâ²»ÊÇÎÒÃÇÏëÒªµÄ½á¹û¡£

È»ºóÎÒÃǽ²ÁíÒ»¸ö»ìÏýºó´úÂëµÄÈíÀߣ¬¾ÍÊÇһЩÎÒÃDz»µÃ²» keep µÄÄÚÈÝ£¬Èç¹ûÊDZÕÔ´ SDK ¿ª·¢Õߣ¬ÐèÒª keep µÄÄÚÈݽ«»á¸ü¶à£¬¼¸ºõÖ»ÒªÊÇ public µÄÀà¡¢±äÁ¿£¬·½·¨£¬È«²¿Òª keep£¬ÄÇôÕë¶ÔÕâ¸öÎÊÌ⣬ÎÒÃǸÃÔõô°ì?½éÉÜÒ»¸ö·½·¨£º

¸øÕâЩÐèÒª keep µÄÄÚÈÝÉèÖÃίÍÐÕߣ¬È»ºó½«Î¯ÍÐÕßͶÈë´óº£Ö®ÖС£

ºÜÐþºõ°É?¹þ¹þ£¬Õâô½²ÓÐÖúÓÚ¼ÇÒä¡£ÆäʵºÍÎÒÃÇÔÚ»ìÏýÕ½Ú˵µÄ²ØÒ¶ÓÚÁÖµÄ˼ÏëÊÇÒ»ÑùµÄ¡£Èç¹ûÒ»¸öÀ಻µÃ²» keep£¬ÄǾͰÑËüËù×öµÄÈ«²¿ÄÚÈݶ¼×ª½»¸øÒ»¸ö private »ò internal µÄÀà¶ÔÏóÈ¥Íê³É£¬Õâ¸öίÍÐÀà¶ÔÏó´úÂë¿ÉÒÔÍêÈ«»ìÏý£¬È»ºóÄãÔÙ°ÑÕâ¸öίÍÐÀàͨ¹ý»ìÏý¹¤¾ß²ØÔÚ´óÁ¿µÄ´úÂëÖ®ÖУ¬ÕâÑù¾Í×ã¹»¸ø·´±àÒëÕß´øÀ´Á˺ܴóµÄÂé·³£¬Ïà±ÈÖ±½Ó»ñÈ¡Âß¼­´úÂ룬Õâô×öÒÔºóÒªÕÒµ½ÊµÌåµÄÂß¼­´úÂ뽫·Ñ¾¢µÃ¶à¡£

Òò´Ë£¬Èç¹ûÄãÖªµÀÓÐÕâôһ¸ö·½Ê½£¬ÆäʵÄãÍêÈ«¿ÉÒÔ²»Ê¹ÓööÁËôÌṩµÄÄǸö Activity ºÍ View »ìÏý¹¤¾ß£¬Ò²Äܺܺõر£»¤ÄãµÄ Activity ºÍ View¡£

²»¹ýÒ»°ãÇé¿öÎÒÃÇÎÞÐèËùÓÐÄÚÈݶ¼±£»¤£¬Ö»Òª°Ñ¹Ø¼ü¡¢ºËÐÄÄÚÈÝίÍгöÈ¥¾Í¿ÉÒÔÁË¡£

×îºóµÄ×îºó£¬ÎÒÃÇ»¹ÐèÒª×öµÄ¾ÍÊÇ·ÀÖ¹·´±àÒëÕßÖØÐ´ò°ü£¬È«·½Î»¾øÈË֮·ѽ£¬ÄÜ×öµÄ¾ÍÊÇÔÚ´úÂëÖмÓÈëÇ©ÃûÑéÖ¤£¬²¢×öË«ÏòÒÀÀµ¡£¹ØÓÚ´ËÎÒд¹ýÒ»¸öÀàËÆ°¢ÀïºÚÏ»×ӵĶ«Î÷£¬Äܹ»ÔÚ native ¼ì²éÇ©ÃûºÍ¼Ó½âÃÜÄÚÈÝ£¬ºóÐøÒ²Óмƻ®ÕûÀí¿ªÔ´£¬ÕâÀïÔÝÇҾͲ»¶à˵ÁË¡£

³ý´ËÖ®Í⣬ÎÒרÃÅд¹ýһƪ½Ð×÷¡¶Android ÃÜÔ¿±£»¤ºÍ C/S ÍøÂç´«Ê䰲ȫÀíÂÛÖ¸ÄÏ¡· µÄÎÄÕ£¬¸ÐÐËȤ¿ÉÒÔÖ®ºóÒÆ²½ÔĶÁ¡£

×ÜÖ®£¬´úÂ밲ȫºÍ»ìÏýÊÇÒ»¸öÒâʶ¼Ó¼¼ÇɵÄÎÊÌ⣬µ«¶¼²»ÄÑ£¬ÕÆÎÕÒÔÉÏÄÚÈݾÍÒѾ­Ê®·ÖºÃÁË¡£·ÖÏíµ½´Ë½áÊø£¬ÈçÓÐÒÉÎÊ»òÎÊÌâ»¶Ó­À´ÐŽ»Á÷¡£

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

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ