ÕâÊÇһƪ¹ØÓÚ 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 ÍøÂç´«Ê䰲ȫÀíÂÛÖ¸ÄÏ¡· µÄÎÄÕ£¬¸ÐÐËȤ¿ÉÒÔÖ®ºóÒÆ²½ÔĶÁ¡£
×ÜÖ®£¬´úÂ밲ȫºÍ»ìÏýÊÇÒ»¸öÒâʶ¼Ó¼¼ÇɵÄÎÊÌ⣬µ«¶¼²»ÄÑ£¬ÕÆÎÕÒÔÉÏÄÚÈݾÍÒѾʮ·ÖºÃÁË¡£·ÖÏíµ½´Ë½áÊø£¬ÈçÓÐÒÉÎÊ»òÎÊÌâ»¶ÓÀ´ÐŽ»Á÷¡£
|