±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ51cto£¬½éÉÜÁËËÕÄþÒ×¹ºÒƶ¯¿ª·¢²¿×ÔÖ÷Ñз¢³öÁËÐÂÐͲå¼þ»¯¼¼Êõ¡ª¡ªAPNP¡£ |
|
¼ò½é
´Ó´óÍŶӲ¢¼ç×÷Õ½µ½Ð¡ÍŶӴøÍ·³å·æ£¬¸ßЧµÄÑз¢Ä£Ê½Ê¹µÃ App ±¾ÉíµÄÕûÌå±ÀÀ£ÂÊʼÖÕά³ÖÔÚ 0.02%
ÒÔÏ¡£
±¾×ÅÒÔÓû§ÎªÖÐÐÄ¡¢ÒÔ¿ª·¢ÕßΪ³ö·¢µã£¬¸ù¾ÝÏÖÓпªÔ´·½°¸È¡³¤²¹¶Ì£¬ËÕÄþÒ×¹ºÒƶ¯¿ª·¢²¿ÓÚ 2017 Äê³õ×ÔÖ÷Ñз¢³öÁËÐÂÐͲå¼þ»¯¼¼Êõ¡ª¡ªAPNP£¨Android
Plugin And Play£©£¬Ö¼ÔÚÈÃÑз¢¸üÃô½Ý£¬È÷¢²¼¸üÁé»î£¬×îÖÕÂú×ãÓû§¶Ô²úÆ·µÄ¼«ËÙÌåÑé¡¢°´ÐèÏÂÔØ¡¢¶¯Ì¬¸üС£
ÐèÇó·ÖÎö
¼¼ÊõµÄÒýÈëÀ´×ÔÓÚʵ¼ÊÒµÎñ³¡¾°¶Ô¼¼ÊõµÄÐèÇ󣬲å¼þ»¯ÒàÊÇÈç´Ë£¬ÄÇôµ½µ×ÊÇʲôÔÒòÍÆ¶¯ÁËËÕÄþÒ×¹º App
µÄ²å¼þ»¯£¬ÓÖÊÇʲôÔÒòÈÃËÕÄþÒ×¹º¿ª·¢Õß×ßÉÏ×ÔÑвå¼þ»¯µÄµÀ·£¿
ΪʲôËÕÄþÒ×¹º App ÐèÒª²å¼þ»¯£¿
·¢²¼ÖÜÆÚ³¤£¬²úÆ·µü´ú¸ú²»ÉÏÊг¡ÐèÇó
¶ÔÓÚÒ»¸öµçÉÌ App£¬²»Í¬µÄʱ¼ä¡¢µØµã£¬°éËæ×ÅÓû§Ç§±äÍò»¯¡¢ÉÔ×ݼ´ÊŵÄÏû·ÑÐèÇó£¬ËÄÜÔÚµÚһʱ¼äÂú×ãÕâЩÐèÇó£¬Ë¾ÍÄܰÑÎÕסÐèÇó´øÀ´µÄÏúÁ¿¡£
¶ø´«Í³µÄ App ¿ª·¢Ä£Ê½ÖÜÆÚ¹ý³¤£¬ÎÒÃÇÐèÒª¸üÃô½ÝµÄ·¢²¼·½°¸£¬ËùÒÔÎÒÃÇ×öÁ˲å¼þ»¯£¬ÕâÒ²ÊÇËÕÄþÒ×¹º¶Ô²å¼þ»¯×îÔʼµÄÐèÇó¡£
µ¥ÏßÑз¢£¬¹ÜÀí¡¢Ð×÷³É±¾¹ý¸ß
Ëæ×ÅËÕÄþÒ×¹ºÒµÎñµÄ²»¶ÏÍØÕ¹¡¢ÏîÄ¿²ÎÓëÈËÔ±ÊýÁ¿µÄÔö¶à£¬µ¥Ïß App ¿ª·¢Ä£Ê½ËùÒþ²ØµÄÎÊÌâÈÕÒæÍ¹ÏÔ£ºÒ»Ãæ´ÓÐèÇó·ÖÎöµ½Ñз¢²âÊÔ£¬ÐèÒª¼à¹ÜµÄÄÚÈÝÔ½À´Ô½¶à£»ÁíÒ»·½Ãæ´Ó·½°¸¾ö²ßµ½Á÷³ÌÉóÅú£¬Ð×÷¹µÍ¨Ô½À´Ô½Æµ·±£¬³É±¾Ô½À´Ô½¸ß¡£
Òò´ËÎÒÃÇÐèÒª¶àÏß¡¢Ð¡ÍŶӵÄÑз¢Ä£Ê½£¬ÕâÈÃÎÒÃǽøÒ»²½È·ÈÏÁ˲å¼þ»¯¡£
°²×°°ü¹ý´ó£¬ÔËÓªÍÆ¹ãЧÂÊ×ßµÍ
ÐèÇóÔÚÈÕÒæÔö³¤µÄͬʱ£¬°²×°°üÌå»ýÒ²ÔÚͬ²½ÅòÕÍ¡£Ãæ¶ÔºÄʱ¡¢ºÄÁ÷Á¿µÄ°²×°°üÏÂÔØ£¬ÐÂÓû§ÌåÑé¡¢ÀÏÓû§Éý¼¶µÄ×èÁ¦Ò²Ô½À´Ô½´ó¡£
ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇÐèÒª²ð°ü¡¢ÐèÒª¶¯Ì¬ÏÂÔØ¡¢ÐèÒª¾Ö²¿¸üУ¬Òò´ËÎÒÃÇÕýʽÒýÈëÁ˲å¼þ»¯¡£
ʲôѡÔñ×ÔÑжø²»ÊÇʹÓÿªÔ´·½°¸£¿
ûÓÐÍêÃÀÎÞϾµÄ¿ªÔ´·½°¸£¬È´Óвã³ö²»ÇîµÄ½ÓÈëÎÊÌâ
ÒÆ¶¯ÍŶÓÔÚÒ»¿ªÊ¼Ñ¡Ôñ¹ý¼¸ÖÖ¿ªÔ´·½°¸£¬¸ö±ð·½°¸µÄ¿ÉÓÃÐÔÒ²±È½Ï¸ß£¬µ«ÊÇÔÚ½ÓÈëÖ®ºó£¬²âÊÔ»·½Ú×Ü»á³öÏÖЩÒÉÄÑÔÓÖ¢£¬ÐÞ¸´ÆðÀ´Ïà¶ÔÀ§ÄÑ£¬Ò»·½ÃæÊÇÔ´Âë±¾ÉíµÄÕÆÎճɱ¾½Ï¸ß£¬ÁíÒ»·½Ãæ¾ÍÊÇ¿ªÔ´·½°¸±¾Éí´æÔÚµÄȱÏÝ¡£
ҪôÁíÆð¯ÔҪôź¶ÏË¿Á¬
ÏÖÓеĿªÔ´·½°¸£¬ÒªÃ´¾ÍÊǶÔÏÖÓй¤³ÌµÄ¸ÄÔì½Ï´ó£¬¿ª·¢ÓÐÐÄÎÞÁ¦£»ÒªÃ´¾ÍÊDzå¼þ¹¤³ÌºÍËÞÖ÷¹¤³ÌÏ໥ÒÀÀµ£¬Ç£Ò»·¢¶ø¶¯È«Éí£¬³É±¾¡¢·çÏÕ¶¼ºÜ¸ß¡£
²å¼þ·½°¸Ñ¡ÐÍ
»ùÓÚÉÏÊöÖÖÖÖÔÒò£¬ÎÒÃǾö¶¨×ÔÑвå¼þ»¯¼¼Êõ£¬ÓÚÊǾÍÓÐÁË APNP¡£APNP²ÉÓõIJå¼þ·½°¸ÊÇÖ±½Ó¼ÓÔØ APK
Îļþ£¨APK ¸ñʽ²»±ä£¬ÄÚÈÝÓÐËùÐ޸ģ©£¬ÔÒòÓÐÈçϼ¸µã£º
¼æÈÝÐÔ¸ß
APK ÎļþµÄ¸ñʽ·Ç³£Îȶ¨£¬Ëü°üº¬Ò»¸ö App Õý³£ÔËÐеıØÒª×ÊÔ´£»Èκΰ汾µÄ Android ϵͳ£¬¶¼Ó¦¸ÃÕý³£½âÎö²¢ÔËÐÐÈÎÒâ°æ±¾Æ¥ÅäµÄ
APK Îļþ£¬ÎÞÂÛÕâ¸ö APK ÎļþÊǺÎʱ²úÉúµÄ£»ÎÒÃÇÖ»ÒªÕýÈ·Ä£·Âϵͳ¼ÓÔØ APK µÄÐÐΪ£¬¾Í¿ÉÒÔ¼ÓÔØÈÎÒâÒ»¸ö²å¼þ
APK Îļþ¡£
Ñз¢¸ôÀë
¼ÈÈ»ÊÇÖ±½Ó¼ÓÔØ APK Îļþ£¬ËùÒÔÔÚ APNP µÄÉè¼Æ·½°¸ÖУ¬Ã¿¸ö²å¼þ¶¼ÊÇÒ»¸öµ¥¶À¹¤³Ì£¬Õâ¾ÍÒâζ×ųýÁË×îºóµÄ¼¯³É²âÊԽ׶Σ¬²å¼þ¶ÔÓ¦µÄÕû¸öÈí¼þÉúÃüÖÜÆÚ¶¼ÊǶÀÁ¢µÄ£¬¼È½µµÍÁ˹ÜÀí¡¢Ð×÷³É±¾£¬ÓÖ´Ùʹ²å¼þ²úÆ·µÄ·¢²¼¸ü¼ÓÁé»î¡£
½ÓÈë¼òµ¥
¼ÈÈ»ÊǶÀÁ¢¹¤³Ì£¬ÎÞÂÛÏÖÓеŤ³ÌÊÇÈçºÎÔËתµÄ£¬¿ª·¢ÕßΨһҪ×öµÄ¾ÍÊǰѲå¼þ¹¤³Ì´ÓÏÖÓй¤³ÌÖгéÀë³öÀ´¡£
ºËÐÄÊֶμ°ÔÀí
Èç¹ûÖ±½Ó¼ÓÔØÒ»¸öÔʼ²å¼þµÄ APK Îļþ£¬¾ø´ó¶àÊýÇé¿öÏÂÊÇÎÞ·¨ÔËÐеģ¬Èç Class pre-verified
Òì³£¡¢ResourceNotFound µÈ¡£
Òò´Ë APNP ÔÚ±£³Ö APK ¸ñʽ²»±äµÄÇé¿öÏ£¬¶ÔAPKÀïÃæµÄÄÚÈÝ×öÁËÕë¶ÔÐÔÐ޸ģ¬ºËÐÄÊÖ¶ÎÈçÏ£º
¹²Í¬ Dependency ÌÞ³ý
ÔÚÑз¢¹ý³ÌÖУ¬¾³£ÐèÒªµÚÈý·½ÒÀÀµ Library£¨Dependency£©£¬¶øµ±²å¼þ¹¤³Ì£¨ÒÔϼò³Æ Plugin£©ºÍËÞÖ÷¹¤³Ì£¨ÒÔϼò³Æ
Host£©°üº¬ÏàͬµÄ Dependency ʱ£¬¾ÍÐèÒªÌÞ³ý Plugin ÖÐµÄ Dependency¡£
ÕâÑùÒ»·½Ãæ¿ÉÒÔ±ÜÃâ Class pre-verified Òì³££¬ÁíÒ»·½ÃæÒ²¿ÉÒÔ¼õÉÙ²å¼þ°üµÄ´óС£¬ÌáÉý²å¼þ°üµÄÏÂÔØ
& ¼ÓÔØËÙ¶È¡£
ʵÏÖ·½°¸£¨ÒÔ϶¼Ä¬ÈÏ IDE Ϊ Android Studio£©£ºÍ¨¹ý Gradle ²å¼þ£¬ÔÚ Plugin
µÄ Transform ¹ý³ÌÖУ¬ÌÞ³ýÓë Host Ïàͬ Dependency µÄËùÓÐ×ÊÔ´¡£
Package ID ÐÞ¸Ä
ÔÚ Android ϵͳÖУ¬App ¶ÔÓ¦µÄ Package ID Êǹ̶¨µÄ£¬Ò²¾ÍÊÇ˵Èç¹ûÎÒÃDz»ÈËΪ¸ÉÔ¤£¬Plugin
ºÍ Host ´ò°üÉú²úµÄ APK ÎļþÖУ¬ËùÓÐ Resource ID ÖÐµÄ Package ID
¶¼ÊÇÒ»ÑùµÄ£¬¼´£¨0x7f£©¡£

ÕâʱÈç¹ûÖ±½Ó¼ÓÔØ Plugin APK£¬±ØÈ»»á³öÏÖ Resource ÀàÐͲ»Æ¥Åä¡¢ÏÔʾ´íÂÒµÈÒì³££¬ËùÒÔÎÒÃÇÐÞ¸Ä
Plugin µÄ APK µÄ Package ID¡££¨Package ID Âú×ã 0x01 <
PID < 0x7f ¼´¿É£©
ʵÏÖ·½°¸£ºÒµÄÚ¹ØÓÚÐÞ¸Ä Package ID µÄ·½°¸ÓкܶࣨÈçÐÞ¸Ä aapt Ô´ÂëµÈ£©£¬APNP ²ÉÓõķ½°¸ÊÇÖ±½ÓÐÞ¸Ä×îºóÉú³ÉµÄ
APK Îļþ¡£
ÏÈ¿´ÏÂÒ»¸ö¼òµ¥ APK µÄÎļþ½á¹¹£¬ÈçÏÂͼ£º

Éæ¼° Package ID Ð޸ĵĵط½ÓÐ 3 ´¦£º
R.class£¨classes.dex£©
resources.arsc
xml Îļþ
ÐÞ¸Ä R.class ÖÐµÄ Package ID
ÔÚ Gradle assemble Ö®ºó£¬»áÔÚ build/generated/source/r ÎļþÏÂÉú³ÉÏàÓ¦µÄ
R.java Îļþ£¬ÈçÏÂͼ£º

´ËʱÎÒÃǽ« R ÎļþÖÐµÄ 0x7f Ö±½ÓÌæ»»³ÉÄ¿±ê Package ID £¬È»ºó¼ÌÐø½»¸ø Gradle
×öºóÐø²Ù×÷¡£
ÕâÑùÔÚ×îÖÕµÄ classes.dex ÖУ¬ÀïÃæµÄ R.class Îļþ¶ÔÓ¦µÄ Package ID
¾ÍÊÇÎÒÃÇÏëÒªÉèÖÃµÄ Package ID¡£
ÐÞ¸Ä arsc + xml ÖÐµÄ Package ID
²»Í¬ÓÚÉÏÃæÍ¨¹ý Hook Gradle ¹ý³ÌÐÞ¸ÄÖмäÉú³ÉµÄ R Îļþ£¬arsc + xml ÔòÊÇÖ±½Ó½âѹ×îÖÕµÄ
APK ²¢ÐÞ¸ÄÄ¿±êÎļþ£¬È»ºóÖØÐÂÇ©Ãû¡£
Ê×ÏÈÎÒÃÇÐèÒª¶Ô APK ÎļþÖÐµÄ arsc + xml µÄÎļþ¸ñʽÓÐÒ»¶¨µÄÈÏʶ£¬Android ΪÁ˳ä·Ö¼õÉÙ
APK ×ÔÉíµÄ´óС£¬ÔÚ±àÒëµÄ¹ý³ÌÖлá¶ÔËùÓеÄ×ÊÔ´½øÐÐÖØ×é + ѹËõ¡£
ÀýÈç values ÎļþϵÄÄÚÈݻᱻͳһÊÕ¼¯µ½ arsc ÎļþÖУ¬¶ø²»ÔÙÒÔÎļþµÄÐÎʽ´æÔÚ£»¶ø xml
Ò²²»ÔÙÊÇÔʼµÄ xml Îļþ£¬xml ÖÐÄÚÈݻᱻ½øÒ»²½ÕûºÏ + ¸´Óá£
¶øÎÞÂÛÊÇ arsc Îļþ£¬»¹ÊÇ xml Îļþ£¬ÔÚËüÃÇÄÚ²¿¶¼ÊÇͨ¹ýÒ»¸ö¸ö¹Ì¶¨Êý¾Ý½á¹¹µÄ ResChunk
ÒÔǶÌ× + ×éºÏµÄÐÎʽ¸÷×Ô´æ´¢×Å¡£
×ÊÔ´ÐÅÏ¢£ºÃ¿¶Î ResChunk µÄÄÚÈݶ¼ÒÔ 8 ×Ö½ÚµÄ ResChunk_header ¿ªÍ·£¬ÓÃÓÚÃèÊö
ResChunk µÄÀàÐÍ + ³¤¶È£¬ÈçÏÂͼ£º

Ò²¾ÍÊÇ˵ arsc + xml ÖеÄËùÓÐÄÚÈݶ¼¿ÉÒÔ±»·´Ïò½âÎö³öÀ´£¬µ±³ä·ÖÁ˽âÿ¸ö ResChunk
µÄÊý¾Ý½á¹¹ÒÔ¼°ÕÆÎÕ ResChunk ÖÐÄÄЩÄÚÈÝÊÇÐèÒªÐÞ¸ÄµÄ Package ID£¬¾Í¿ÉÒÔÏà¶ÔÇáËɵÄÍê³É¶Ô¶þ½øÖÆÎļþµÄÐ޸ġ£
Library Chunk ²åÈë
ÐÞ¸ÄÍê Package ID ºó£¬»¹ÐèÒªÔÚ resources.arsc ÎļþÖвåÈëÒ»¶Î Library
Chunk £¬ÈçÏÂͼ£º

Library Chunk ÔÚ Android 5.0 Ö®ºó²Å³öÏÖ£¬¶ÔÓ¦µÄÀàÐÍÈçÏÂͼ£º

ÄÇôΪʲôÐèÒª²åÈë Library Chunk£¿ÔÒòÊÇÔÚ Android 5.0 Ö®ºó£¬ResTableÔÚ»ñÈ¡×ÊÔ´ÐÅϢʱ£¬Èç¹û×ÊÔ´º¬ÓÐ
Parent£¨ResTable_map_entry£¬Èç style£©£¬»áÑéÖ¤ Parent µÄ Package
ID ÊÇ·ñºÏ·¨£¬Ò²¾ÍÊÇ Package ID ÊDz»ÊÇÒѾע²á¹ýÁË¡£

Èç¹û lookupResourceId ûÓзµ»Ø NO_ERROR£¬Ôò±¨´í£¬¼ÌÐø¸ú½ø£¬ÈçÏÂͼ:

ÓÉÓÚÔÚÉÏÒ»»·½ÚÖУ¬ÎÒÃÇÒѾ°Ñ Plugin ÖÐµÄ Package ID ÐÞ¸ÄÁË£¬ÉÏͼÖеľֲ¿±äÁ¿
packageId ¿Ï¶¨²»»áÊÇ APP_PACKAGE_ID ¡£
×îºó»áÔÚ mLookupTable Êý×éÖÐѰÕÒ packageId ÊÇ·ñÓжÔÓ¦µÄÖµ£¬Èç¹ûûÓУ¨ÖµÎª
0£©ÔòÅ׳öÒì³£¡£
ËùÒÔÎÒÃÇÐèÒª°Ñ×Ô¶¨ÒåµÄ Package ID ×¢²áµ½ mLookupTable Êý×éÖУ¬ÄÇôע²áµÄ¶¯×÷ÊÇÔÚʲôʱºò·¢ÉúµÄ£¿
ÔÚ App Æô¶¯²¢×ÊÔ´Ê״μÓÔØÊ±£¬»áµ÷ÓÃÏÂÃæµÄ·½·¨È¥½âÎö arsc Îļþ£¬ÈçÏÂͼ£º

Èç¹û·¢ÏÖÊÇ Library Chunk »áµ÷Óà addMapping£¬ÈçÏÂͼ£º

ÔÚ addMapping ÖУ¬ÎÒÃÇ»á°Ñ Library Chunk ÖÐµÄ packageId ÔÚ
mLookupTable Êý×éÖнøÐÐ×¢²á£¨¾ÍÊǼòµ¥µÄ¸³Öµ£©£¬×¢²áÖ®ºóÎÒÃÇ×Ô¶¨ÒåµÄ Package ID
²Å»á±»ÏµÍ³ÈϿɣ¬´Ó¶øÈ·±£º¬ÓÐ Parent ×ÊÔ´µÄÕý³£½âÎö¡£
Attr ID Ìæ»»
Íê³ÉÉÏÃæ 3 ²½ºó£¬APK ¾ÍÒѾ¿ÉÒÔ¼ÓÔØÁË£¬µ«ÊDzå¼þÉæ¼°µ½×Ô¶¨ÒåÊôÐ﵀ View £¬×Ô¶¨ÒåÊôÐÔ×ÜÊÇÎÞ·¨Õý³£¸³Öµ£¬ÕâÓÖÊÇʲôÔÒòÄØ£¿
ÒÔ ConstraintLayout ΪÀý£¬¼ÙÈç Plugin ºÍ Host µÄ Layout ²¼¾ÖÖж¼°üº¬
ConstraintLayout£¬²¢Í¬Ê±¶¼ÉèÖÃÁË ConstraintLayout µÄ×Ô¶¨ÒåÊôÐÔÈçÏ£º

ÄÇôÔÚ App ÔËÐеĹý³ÌÖУ¬ConstraintLayout »áͨ¹ý android.support.constraint.R.class
»ñÈ¡½âÎö×Ô¶¨ÒåÊôÐÔ£¬ÈçÏÂͼ£º

¶ø android.support.constraint.R.class ÔÚÄÚ´æÖÐÖ»ÓÐÒ»·Ý£¬²¢ÇÒ»áÓÅÏȼÓÔØ
Host£¬Òò´ËÔÚʵ¼ÊµÄÔËÐÐÄÚ´æÖУ¬R.class À´×ÔÓÚ Host¡£

ÓÉÓÚ Host ÖÐ R.class ÀïÃæµÄ Package ID ¶¼ÊÇ 0x7f £¬¶øÔÚÉÏÃæµÚ¶þ½ÚµÄÐÞ¸Ä
Package ID »·½ÚÖУ¬Plugin ÀïÃæµÄ xml µÄ Package ID ÒѾ±»ÎÒÃÇÐÞ¸ÄÁË£¨°üÀ¨
xml ÖÐËùÒýÓÃµÄ Attr ID£©¡£
Òò´Ëµ± Plugin ͨ¹ý Host µÄ R.class È¥½âÎö ConstrainLayout ʱ£¬±ØÈ»»á³öÏÖ×Ô¶¨ÒåÊôÐÔÎÞ·¨Õý³£½âÎöµÄÒì³£¡£
ËùÔÚ APNP ÔÚÐÞ¸Ä Plugin xml Îļþ Package ID µÄͬʱ£¬Èç¹û·¢ÏÖ Attr
ͬÑù´æÔÚÓÚ Host ÖУ¬»á°Ñ Plugin xml ÎļþÖÐµÄ Attr ID Ìæ»»³É Host ÖеÄ
Attr ID£¬´Ó¶ø±£Ö¤ Plugin ÖÐËùÓеÄ×Ô¶¨ÒåÊôÐÔÄܹ»Õý³£½âÎö£¨ºì¿ò£º0x7f01000f£¬0x7f010022£¬0x7f010026£¬0x7f01002b£©£¬ÈçÏÂͼ£º

·ñÔòÖ±½ÓÐÞ¸Ä Package ID£¨À¶¿ò£º0x7e010000£¬0x7e010001£¬0x7e010002£©¡£
ʵ¼ù³É¹û
ÔÚ APNP ʵ¼ÊÓ¦ÓÃÖ®ºó£¬Í¨¹ýËÕÄþÔÆ¼£Æ½Ì¨µÄʵʱÊý¾Ý¼à¿Ø£¬²¢Ã»Óз¢ÏÖÒò APNP ±¾ÉíÒýÆðµÄÃ÷ÏÔÒì³£¡£
´Ó´óÍŶӲ¢¼ç×÷Õ½µ½Ð¡ÍŶӴøÍ·³å·æ£¬¸ßЧµÄÑз¢Ä£Ê½Ò²Ê¹µÃ App ±¾ÉíµÄÕûÌå±ÀÀ£ÂÊʼÖÕά³ÖÔÚ 0.02%
ÒÔÏ¡£
Ïà±È֮ǰµÄÑз¢Á÷³Ì£¬APNP ´øÀ´µÄÓ°ÏìÖ÷ÒªÓÐÏÂÃæ¼¸¸öµã£º
²úÆ·¸ü¾«Ï¸¡¢¶¨Î»¸üÃ÷È·
APNP ÊDzúÆ·¾«Ï¸»®·ÖºÍÃ÷È·¶¨Î»µÄ¼¼ÊõÖ§³Å£¬Ð¡ÍŶӵÄÑз¢Ä£Ê½£¬¼Ó¿ìÁ˲úÆ·µÄÂäʵÓëÉý¼¶¡£
Ñз¢ÖÜÆÚ¶Ì¡¢·¢²¼¸üÁé»î
²å¼þ¿Éµ¥¶ÀÉý¼¶¡¢¿É¶ÀÁ¢·¢²¼µÄÌØÕ÷£¬ÅäºÏ¶ÀÁ¢ÍŶӵÄרÈËרְ£¬µ¥Ò»²úÆ·¿ÉÒÔ´ïµ½Ò»ÖÜÒ»°æ±¾¡£
¹ÜÀí¸üÇáËÉ¡¢Ñз¢¸ü¸ßЧ
ͬ²½²úÆ·Ïߵľ«Ï¸»®·Ö£¬Ñз¢ÍŶÓÒ²Ç÷ÓÚ¸üС¡¢¸ü¶ÀÁ¢£¬¹ÜÀíÒ²ÏԵøü¼ÓÇáËÉ£»Í¬Ê±Ã÷È·µÄÔðÈηֹ¤£¬Ò²´Ù½øÁËÑз¢ÈËÔ±µÄ¹¤×÷ЧÂÊ¡£
·¢Õ¹Ç°¾°
Google ÔÚ½ñÄêµÄ IO ´ó»áÉÏÍÆ³öÁËÒ»ÖÖ¶¯Ì¬¼ÓÔØ·½°¸¡ª¡ªApp Bundles£¬¿ÉÒÔÈÃÓû§Í¨¹ý
Google Play ¶¯Ì¬ÏÂÔØÓ¦Óù¦ÄÜ£¬¶øÇÒ App Bundles ²ÉÓõķ½°¸Ò²ÊÇÖ±½Ó¼ÓÔØ APK
Îļþ¡£
ͨ¹ý·ÖÎö×îÖÕµÄ Feature Master APK Îļþ£¬Äã»á·¢ÏÖ App Bundles ¶Ô APK
×öÁËºÍ APNP ÏàͬµÄ²Ù×÷£ºÌÞ³ý Dependency¡¢ÐÞ¸Ä Package ID¡¢²åÈë Library
Chunk¡¢Ìæ»» Attr ID¡£
Õâ¿´ËÆÇɺÏʵÔò±ØÈ»£¬ÒòΪ App Bundles ºÍ APNP ¶¼ÊÇÖ±½Ó¼ÓÔØ APK Îļþ£¬ËùÒÔÃæ¶ÔµÄÎÊÌâ¶¼ÊÇÒ»ÑùµÄ¡£
ÔÚ·½°¸ÉÏ APNP ¿ÉÒÔ˵ÓÐÁ˹ٷ½±£ÕÏ£¬¶øÇÒ APNP ÔÚºóÃæ»¹¿ÉÒÔ½è¼ø App Bundles µÄʵÏÖϸ½Ú£¬Èòå¼þ¼ÓÔØ¸ü¼Ó¸ßЧ¡¢°²È«¡£
¶øÓÉÓÚ Android P ¶ÔÒþ²Ø API µ÷ÓõÄÏÞÖÆ£¬ºÜ¶àÈËÈÏΪ²å¼þ»¯·½°¸½«²»ÔÙ¿ÉÐС£
µ«ÊÇ Google ҲͬʱÌṩÁË light greylist£¬²¢ÇÒ¹úÄÚÊÖ»ú³§É̿϶¨²»ÔÊÐíÈÃÖ÷Á÷ App
ÎÞ·¨Ê¹ÓõÄÇé¿ö·¢Éú£¬ËùÒÔÎÒ¾õµÃÔںܳ¤Ò»¶Îʱ¼äÄÚ£¬²å¼þ»¯ÒÀÈ»¿ÉÒÔÕý³£ÔËת¡£
|