Board logo

¼ÐÃD: ¡u¦w¤ß¥X¦æ¡v¤º¸m¤HÁyÃѧO¥\¯à ¸ê¬ì¿ì©Ó»{ ºÙ±q¥¼¨Ï¥Î ¥¿¬ã¨s§R°£ [¥´¦L¥»­¶]

§@ªÌ: ¥e¤h¨¹    ®É¶¡: 2022-5-4 01:21     ¼ÐÃD: ¡u¦w¤ß¥X¦æ¡v¤º¸m¤HÁyÃѧO¥\¯à ¸ê¬ì¿ì©Ó»{ ºÙ±q¥¼¨Ï¥Î ¥¿¬ã¨s§R°£



¶Ç¯uªÀ©î¸ÑAndroidª©¥»ªº¦w¤ß¥X¦æ¤â¾÷À³¥Îµ{¦¡¡Aµo²{µ{¦¡¤º¸m¤HÁyÃѧO¼Ò²Õ¡A¨ã¦³¥]¬AÃѧOÁy³¡¤­©x¯S¼x©M¦ì¸mªº¥\¯à¡C¥Ñ©ó¬F©²©Úµ´¤½¶}¦w¤ß¥X¦æªº·½¥N½X¡AµLªk½T©wµ{¦¡¦b¹B§@®É¦³§_¶i¦æ¤HÁyÃѧO¡C¬F©²¸ê°T¬ì§ÞÁ`ºÊ¿ì¤½«Ç¦^ÂжǯuªÀ¬d¸ß®É©Ó»{¡A©Ó¿ì°Ó¦b¶}µoµ{¦¡®É¨Ï¥Î¤F¥]§t¤HÁyÃѧO¥\¯àªº²{¦¨¼Ò²Õ¡A¦ý±j½Õ¦w¤ß¥X¦æ¨S¦³¥ç¤ð¶·±Ä¥Î¬ÛÃö¥\¯à¡A¤w­n¨D©Ó¿ì°Ó¬ã¨s¡u¦b¤£¼vÅTµ{¦¡¥¿±`¹B§@ªº«e´£¤U¡v±qµ{¦¡¤¤§R°£¦³Ãö¼Ò²Õªº¥i¦æ©Ê¡C
¦w¤ß¥X¦æ¤â¾÷À³¥Îµ{¦¡©ó¤W¤ë18¤é§ó·s¦Ü3.2.0ª©¥»¡A¶Ç¯uªÀ¦­«e±q¬F©²¦w¤ß¥X¦æºô¯¸¤U¸ü3.2.0¡B¥H¤Î¤§«e6­Ó¤£¦P®É´Áª©¥»ªºAndroidµ{¦¡¦w¸ËÀÉ(¤SºÙapkÀÉ)¶i¦æ©î¸Ñ¡A´£¨ú¸Ì­±ªº°õ¦æÀÉ(classes.dex)¨ÃÂà´«¬°¤HÃþ¥iŪ(human readable)®æ¦¡java·½¥N½XÀÉ(java source file)¡A¥H¨ú±oÀ³¥Îµ{¦¡ªº·½¥N½X¡C
±N¦w¤ß¥X¦æÀ³¥Îµ{¦¡ªºclasses.dexÀÉÂà´«¦¨java«á¡A¥i¥HŪ¨ú¥]§t20¦h­ÓÀɮק¨ªº·½¥N½X®w¡C¨ä¤¤¦b¡uorg¡vªºÀɮק¨¤¤¡A¦³¤@­Ó¦W¬°¡ureactnative¡vªºÀɮק¨¡A¸Ì­±¸ü¦³3­Ó¤À§O¦W¬°¡ufacedetector¡v¡B¡ucamera¡v¤Î¡umaskedview¡vªºÀɮק¨¡CReact Native¬O¡u¦w¤ß¥X¦æ¡v±Ä¥Îªº¤@­Ó¶}·½À³¥Îµ{¦¡®Ø¬[(framework)¡A¨ä¼Ò²Õ¥i¥H¬°µ{¦¡´£¨Ñ¤£¦P¥\¯à¡A¦Ó±q¤W­zªº¡ucamera¡vÀɮק¨¥i¨£¡A¦w¤ß¥X¦æ¨Ï¥Î¤F¥Î§@±Ò°Ê¹q¸Ü¬Û¾÷ÃèÀYªºreact-native-camera¥N½X®w¡C



¤£¹L¡A¦w¤ß¥X¦æ¨Ï¥Î¤F¬°«OÅ@ª©Åv¤Î¨¾¤îµ{¦¡³Q¯}¸Ñªº¥N½X²V²c³B²z(code obfuscation)§Þ³N¡A¥Î­^¤å¦r¥À©Î¡uf2¡v¡B¡ui6¡vµ¥¥N¸¹¨ú¥N¤F·½¥N½X¤¤¤j³¡¥÷¼Ò²Õ(module)¡B¨ç¼Æ(function)©MÃþ(class)ªº¦WºÙ¡C



¦bfacedetectorÀɮק¨¤ºªº4­ÓjavaÀÉ¡A´N¦³3­Óªº¦W¦r§¡³Q¸m´«¦¨¥N¸¹¡A¶Ç¯uªÀ±N¨ä¥N½X¤º®e»P¤½¶}ªºreact-native-camera-master¥D¥N½X®w¤ñ¹ï«á¡Aµo²{¨âªÌµ²ºc§k¦X¡AÅã¥Ü·í¤¤ªº¤HÁyÃѧO¼Ò²Õ¦³³Q¾É¤J¨ì¦w¤ß¥X¦æÀ³¥Îµ{¦¡¤º¡C¥´¶}¹ïÀ³¦w¤ß¥X¦æ¤¤¥N¸¹¡ua.java¡vªº¡uFaceDetectorUtils.java¡vÀɮסA¥i¨£¸Ì­±¼g¦³°»´ú¤HÁy¯S¼xªº¥N½X¡A°»´ú¥]¬A¼L¡B¥ª¥kÁyÀU¡B¥ª¥k²´¡B¥ª¥k¦Õ¡B»ó¦y¡B¥ª¥k¦Õ¯]µ¥¯S¼xªº¦ì¸m¡A¨Ã¥i±N¦ì¸mÂà¤Æ¬°¼Æ¾Ú¡C¥N½X¤S¥i¥H°»´ú¥Ø¼ÐÀY³¡¶É°¼ªº¨¤«×¡A­pºâ¥Ø¼ÐÂù²´¥´¶}¥H¤Î¥¿¦b¯ºªº¾÷²v¡C





°£3.2.0ª©¥»¥~¡A¶Ç¯uªÀ¹ï¨ä¥Lª©¥»1.0.4¡B1.0.5¡B2.1.4¡B2.1.5¡B3.0.2©M3.1.0ªº¦w¤ß¥X¦æ¶i¦æ¬Û¦Pªº©î¸Ñ¡Aµ²ªGµo²{¥þ³¡§¡¸ü¦³¤HÁyÃѧO¼Ò²Õ¡AÅã¥Ü¸Ó¼Ò²Õ¦b2020¦~¦w¤ß¥X¦æ±À¥X¦­´Á¤w¦s¦b¡A¦ý¦w¤ß¥X¦æºô¯¸©M¤â¾÷À³¥Îµ{¦¡°Ó©±ªº¤¶²Ð§¡¨S¦³´£¤Îµ{¦¡¦³¬ÛÃö¥\¯à¡C
¦w¤ß¥X¦æÀ³¥Îµ{¦¡¥Ñ¬F©²©e°U³Ð©_«ä¦³­­¤½¥q(Cherrypicks Limited)¶}µo¡A®Ú¾Ú¦w¤ß¥X¦æºô¯¸¤½¶}ªº§Þ³N¤å¥ó¡A©Ó¿ì°Ó¨Ï¥ÎªºÀ³¥Îµ{¦¡®Ø¬[React Native¥i¦P®É½s¼giOS¡BAndroid¨t²ÎªºÀ³¥Îµ{¦¡¡A¨âªÌ¨Ï¥Î¬Û¦Pªº¥N½X®w(codebase)¡A¬GiOS¡BAndroidª©¥»ªº¦w¤ß¥X¦æµ{¦¡·½¥N½X¤j­P¬Û¦P¡C¶Ç¯uªÀ¥¼¦³´ú¸ÕiOSª©ªº¦w¤ß¥X¦æµ{¦¡¡CiOSª©©ó¤W©P¤»(30¤é)§ó·s¦Ü3.2.1ª©¥»¡AAndroid«h¤´§ó·s¦Ü3.2.0ª©¥»¡C
¶Ç¯uªÀÁpµ¸­t³dºûÅ@react-native-camera¥N½X®w¡B±Mªù½s¼gReact Native®Ö¤ßªººû¤]¯Ç³n¥ó¤½¥qMargelo³Ð¿ì¤HMarc Rousavy¡A¨Ã±N¤w©î¸Ñªº¦w¤ß¥X¦æÀɮץ椩¥L¾\Äý¡CRousavy«ü¥X¡A¦w¤ß¥X¦æµ{¦¡¤¤¦³¤HÁyÃѧO¼Ò²Õ¡A¬O¦]¬°µ{¦¡¨Ï¥Îreact-native-camera¥N½X®w§@¬°ÃèÀY±±¨î²Õ¡A·í¤¤¥]¬A¸Ó¤HÁyÃѧO¼Ò²Õ¡C¥Lªí¥Ü²{¶¥¬q«ÜÃø§PÂ_¦w¤ß¥X¦æ¦³¨S¦³¨Ï¥Î¤HÁyÃѧO¥\¯à¡A¦]¬°¦w¤ß¥X¦æµ{¦¡¥´¥]ÀɨϥΤFReact Native Hermes¾÷¾¹½sĶ¦¨«D¤HÃþ¥iŪªº¤G¶i¨î¥N½X(bytecode)¡A­n¦A¤Ï½sĶ¦^¥iŪªºJavascript«D±`§xÃø¡C
¤£¹LRousavyµo²{¡A¦b3.1.0ª©¥»¦w¤ß¥X¦æªºµ{¦¡¥´¥]ÀÉ(index.android.bundle)¤º¡A¤HÁyÃѧO¥\¯à(onFaceDetected)³Q½s°t¤@­Ó½s¸¹¡A¦¹½s¸¹¨Ã³Q¶Ç»¼¦Ü¥t¤@­Ó¨ç¼Æ(function)¡AÁöµM¤£²M·¡¸Ó¨ç¼Æªº¹ê»Ú§@¥Î¡A¥H¤Î¥¼¯à½T»{¤HÁyÃѧO¥\¯à¦³¨S¦³±Ò¥Î¡A¦ýRousavy«ü¥X³oÅã¥Ü¦w¤ß¥X¦æ¦b°»´ú¨ì¤HÁyªº¦P®É¡A¦³¥i¯à·|¦VµwºÐ¼g¤J¸ê®Æ¡C
½¬d3.2.0ª©¥»ªºµ{¦¡¥´¥]ÀÉ¡AonFaceDetectedµL½×¶Ç»¼¦Ü¥t¤@­Ó¨ç¼Æ©Î¦Û¨­§@¬°¨ç¼Æ¡A§¡¥X²{¦³¥i¯àŪ¨ú¸ê®Æªº¦æ¬°¡C





´¿©Ó±µ¬F©²¦X¬ùªº³n¥ó¤uµ{®vLeo To¦P¼Ëªí¥Ü¡A¬Û«H¦w¤ß¥X¦æ­n¨Ï¥Îªº¬Oreact-native-camera¤¤Åª¨ú¤Gºû½Xªº¥\¯à¡A¦ý©ó¶}µoµ{¦¡®É¤@¨Ö¾É¤J¸Ó¥N½X®w¸Ìªº¤HÁyÃѧO¼Ò²Õ¡C¥L¸ÑÄÀ¡Areact-native ¥N½X®w¬O¥Î§@±±¨î¤â¾÷ÃèÀY¡A¥i¥H¨ú±oÃèÀYªº¹ê®É¼v¹³¡A¥H²{®É¾É¤J¨ìµ{¦¡ªº¥N½X¨Ó»¡¡A¥i¥H¿ë»{¨ìbarcode©ÎªÌQR code¡A¥ç¥i¥HÃÑ»{¨ì¤HÁy¡C
¤£¹LLeo To±j½Õ¡A¤ð¶·¨Ï¥Îªº¼Ò²ÕÀ³¸Ó§R°£¡A¡u³o¥ó¨Æ(µ{¦¡«O¯d¤HÁyÃѧO¼Ò²Õ)¦b°õ¦æ¤W¬O¤@©w¦³°ÝÃDªº¡A§Ú¤£·|¹w´Á¦b³o¸Ì¬Ý¨ì¤@­Ó¤HÁyÃѧO¼Ò²Õ¡C¦Ó§Ú¬O§_¥i¥H¾É¤J¾ã­Ó¥N½X®w¡A¦A§R°£¤HÁyÃѧO¥\¯à©O¡H¬Oµ´¹ï¥i¥H¡C¡v
³n¥ó¤uµ{®vLeo To¥ç«ü¥X¡A®Ú¾Ú¹L©¹¸gÅç¡A©Ó±µ¬F©²ªºÀ³¥Îµ{¦¡¦X¬ù¡A¤@©w­n¦V¬F©²¥æ¥X·½¥N½X(source code)¡A¡u¦ý¥æ¤W¥h¥L­Ì¸ê¬ì¿ì¬O¤£·|¬Ýªº¡A¥L­Ì¥u·|§i¶D§A¡AÁ`¤§²{®É§Ú¹J¨ì³o­Ó°ÝÃD¡A§A§ÖÂIµ¹§Ú³B²z¦n¡C¡v¥Lªí¥Ü¡A¡u§Þ³N¤WCherrypicksªº¶}µo¤H­û¬O§_µLªk§R°£¤HÁyÃѧO¥\¯à¡H·íµM¥i¥H§R°£¡A¥u¦b©ó¥L­Ì·|¤£·|³o¼Ë°µ¡A¥H¤ÎOGCIO(¸ê¬ì¿ì)¬O§_ª¾±¡¡A¥i¯àOGCIO³£¤£ª¾¹D¡C¡v
¤@¥¹¦w¤ß¥X¦æ±N¨Ó±Ò¥Î¤HÁyÃѧO¥\¯à¡ALeo To»{¬°¥¼¥²»Ý­n¯Á¨úÃB¥~ªºÅv­­¡A¡u¤HÁyÃѧO¥u»Ý­nÃèÀYÅv­­¡C¦]¬°ÃèÀY¼v¹³´Nµ¥¦P¤@±ø¼v¤ù¦ê¬y¡A¼v¤ù¦ê¬y¦b«á¥x¦p¦ó³B²z¡A¸òÅv­­¤w¨SÃö«Y¡C¡v
¶Ç¯uªÀ¥t¥~¨Ï¥ÎAndroid Studio©M¹êÅé¹q¸Ü¶i¤J°£¿ù¼Ò¦¡(debug mode)´ú¸Õ¦w¤ß¥X¦æ¡Aµo²{µ{¦¡¶È¨Ï¥Î¤F¡ucamera ID 0¡vªºµw¥ó¡A§Y¤â¾÷«á­Iªº¥DÃèÀY¡A¨Ã¥¼¨Ï¥Î«eÃèÀY¡C°²¦p¥«¥Á¨Ï¥Î¦w¤ß¥X¦æ®ÉÁy¦V¤â¾÷µe­±¡A¥H¤â¾÷«áÃèÀY±½ºË¤Gºû½X¡A¦bµ{¦¡¥¼¦³¨Ï¥Î«eÃèÀYªº±¡ªp¤U¡A¯à°÷¹ï¨Ï¥ÎªÌ¶i¦æ¤HÁyÃѧOªº¾÷·|¬Û·í¤p¡C



¶Ç¯uªÀ¦V¬F©²¸ê°T¬ì§ÞÁ`ºÊ¿ì¤½«Ç¬d¸ß¦³Ãö±¡ªp¡A¬F©²¦^ÂЫü¡A®Ú¾Ú¸ê¬ì¿ì»P©Ó¿ì°ÓCherrypicks¤F¸Ñ¡A©Ó¿ì°Ó¦b¶}µo¡u¦w¤ß¥X¦æ¡v®É¨Ï¥Î¤F¥«³õ¤W²{¦¨ªº¡ureact-native-camera¡v¼Ò²Õ¡A¾Þ§@¤â¾÷ÃèÀY¥H±½´y³õ©Ò¤Gºû½X¡B¹q¤l°w¥d¤Gºû½X©Mªº¤h¨®µP¸¹½X¡C¬F©²«ü¸Ó¼Ò²Õ¨ã¦³¦h¶µ¥\¯à¡A¥]¬A¤HÁyÃѧO¥\¯à¡A¤£¹LCherrypicks±q¨S¦³¦b¡u¦w¤ß¥X¦æ¡vµ{¦¡¨Ï¥Î¼Ò²Õ¤¤ªº¤HÁyÃѧO¥\¯à¡A¦Ó¥B¡u¦w¤ß¥X¦æ¡vªº¹B§@¨S¦³¥ç¤ð¶·±Ä¥Î¬ÛÃö¥\¯à¡C¬F©²ªí¥Ü¡A¦b¥»ªÀ¬d¸ß¤§«e¡A¨Ã¤£ª¾±x¦w¤ß¥X¦æµ{¦¡¸Ì¦³face detector¼Ò²Õ¡A¤w§Y®É­n¨DCherrypicks¡u¬ã¨s¦b¤£¼vÅTµ{¦¡¥¿±`¹B§@ªº«e´£¤U¡A±qµ{¦¡¤¤§R°£face detector¼Ò²Õªº¥i¦æ©Ê¡A§K°£¤½²³¤£¥²­nªººÃ¼{¡C¡v
¸ê¬ì¿ì¤S«ü®Ú¾Ú¬F©²»P¶}µo¤Î¹Bºû©Ó¿ì°Ó(Cherrypicks Limited)ªº¦X¬ù¦w±Æ¡A¡u(¬F©²)¾Ö¦³¡u¦w¤ß¥X¦æ¡vµ{¦¡¤Î¨ä­ì©l½X(source code)ªºª¾ÃѲ£Åv¡A¦ý³o¨Ã¤£¥]¬A¥Ñ©Ó¿ì°Ó¦b¶}µo®É©Ò´£¨Ñªº³n¥óªº­ì©l½X(¨Ò¦pCherrypicks©Ò¾Ö¦³ªº³n¥ó²£«~©Î¥«³õ¤W²{¦¨ªº°Ó·~(commercial)¡þ¶}·½(open source)³n¥ó²£«~¤Îµ{§Ç®w¡þ¼Ò²Õµ¥)¡C¡v
¸ê¬ì¿ì¦b¦^ÂФ¤¥ç«ü¥X¡Aµ{¦¡¦³¥²­nŪ¨ú¤â¾÷¸ê®Æ¡A¥]¬A¦bÀx¦s©ÎŪ¨ú¹q¤l°w¥d¥\¯à®ÉÀˬd¤â¾÷¦³§_±Ò°Ê±K½X©Î¥Íª«ÅçÃÒ¡BÀˬd¡u¦w¤ß¥X¦æ¡vª©¥»¡B¤â¾÷ªº¨t²Îª©¥»¡B¤â¾÷«¬¸¹¡B¥H¤ÎAndroid¨t²Î¤¤ªºAPI level¡C
¦^ÂЫü¡A¡u§Ú­Ì¤@ª½­«µø¤½²³¹ï¨pÁôªºÃöª`¡A¨C¦¸¦b¡y¦w¤ß¥X¦æ¡v¡zµ{¦¡¥[¤J·s¥\¯à®É§¡·|¼x¸ß­Ó¤H¨pÁô±M­û¤½¸pªº·N¨£¡A½T«O²Å¦X¡m­Ó¤H¸ê®Æ¡]¨pÁô¡^±ø¨Ò¡nªº³W©w¡C¡y¦w¤ß¥X¦æ¡z¥ç¤w³q¹L¥Ñ¿W¥ß²Ä¤T¤è¶i¦æªº¨pÁô¼vÅTµû¦ô©M¸ê°T«O¦w­·ÀIµû¦ô¤Î¼f­p¡A¥H½T«O¦w¥þ¥i¾a¡C¡v
¤£¹L½¬d¦w¤ß¥X¦æ©xºô¤W¤½¶}ªº¦w¥þ­·ÀIµû¦ô³ø§i¤Î¨pÁô¼vÅTµû¦ô³ø§i¡A¦w¥þ­·ÀIµû¦ô³ø§i¤¤¥¼¦³´£¤Î·|¼f®Ö¦h¾lªº¼Ò²Õ¡C¨pÁô¼vÅTµû¦ô³ø§iªºµû¦ô½d³ò¤Î¥Ø¼Ð(Assessment Scope and Objectives)´£¨ì¡A©Ó¿ì°Ó¦³³d¥ôÃѧO¨pÁô­·ÀI¤Î¨t²Î°ÝÃD¡B¥H¤ÎÃѧO¨t²Î¹ï­Ó¤H¸ê®Æªº¼ç¦b¼vÅTµ¥¡A¦ý¥ç¥¼¦³´£¤Î¼f®Ö·½¥N½X¤¤¦h¾lªº¼Ò²Õ¡C
¶Ç¯uªÀ¦V¦w¤ß¥X¦æµ{¦¡©Ó¿ì°Ó³Ð©_«ä¬d¸ß¬ÛÃö¨Æ©y¡A¹ï¤è¥¼¦³¦^À³°ÝÃD¡A¶È¦^Âе۰OªÌ¦V¸ê¬ì¿ì¬d¸ß¡C
¦w¤ß¥X¦æ©ó2020¦~11¤ë16¤é±À¥X¨Ñ¥«¥Á¤U¸ü¡A¥Î§@¶i¤J«ü©w³õ©Ò®É±½ºË¤Gºû½X¡A°O¿ý¶i¤J¤ÎÂ÷¶}ªº®É¶¡©M¦aÂI¡A¥H¨ó§U¬F©²°lÂÜ·s«aªÍª¢¶Ç¼½Ãì¡CÀ³¥Îµ{¦¡¤ä´©iOS¡BAndroid¤ÎµØ¬°¨t²Î¡C¶}µo°ÓCherrypicks ³Ð©_«ä¦³­­¤½¥q¥À¤½¥q¬°¤¤¸êºôµ¸¹CÀ¸°ÓºôÀsºôµ¸±±ªÑ¦³­­¤½¥q(Áp¥æ©Ò¥N¸¹¡G777)¡C¬F©²¸ê°T¬ì§ÞÁ`ºÊ¿ì¤½«Ç4¤ë13¤é®Ñ­±¦^ÂХߪk·|¡A«ü©ó2022-23°]¬F¦~«×¡A¬F©²¸ê°T¬ì§ÞÁ`ºÊ¿ì¤½«Ç´NÀç¹B¤Î´£¤É¡u¦w¤ß¥X¦æ¡v¬y°ÊÀ³¥Îµ{¦¡¥H¤ä«ù¬F©²³Ì·s¨¾¬Ì§Ü¬Ì±¹¬Iªº¶}¤ä¹wºâ¬ù¬°860¸U¤¸¡A·í¤¤¥]¬A¬ù360¸U¤¸¬°¬y°ÊÀ³¥Îµ{¦¡¤Î«á¥x¨t²Îªº¤É¯Å¤ÎºûÅ@¤ä¥X¡A¥H¤Î500¸U¤¸¬°¤ä´©¤ÎÀç¹B¤ä¥X(¥]¬A¬ÛÃöªº­û¤u¶}¤ä)¡C
³Ð¬ì§½§½ªøÁ§¥ÃùÚ¥»¤ë13¤é¦b¥ßªk·|°]©e·|¤Wªí¥Ü¡A´Á±æ©ó5¤ëªì·|§ó·s¦w¤ß¥X¦æª©¥»¡A´£¨Ñ½T¶E±d´_ªÌ¬ö¿ýµ¥·s¥\¯à¡A·sª©¥»3.2.0³Ì²×¦b¶È5¤é«á¡B§Y4¤ë18´N¤w±À¥X¡C

https://hk.news.yahoo.com/%E3%80%8C%E5%AE%89%E5%BF%83%E5%87%BA%E8%A1%8C%E3%80%8D%E5%85%A7%E7%BD%AE%E4%BA%BA%E8%87%89%E8%AD%98%E5%88%A5%E5%8A%9F%E8%83%BD-%E8%B3%87%E7%A7%91%E8%BE%A6%E6%89%BF%E8%AA%8D-%E7%A8%B1%E5%BE%9E%E6%9C%AA%E4%BD%BF%E7%94%A8-%E6%AD%A3%E7%A0%94%E7%A9%B6%E5%88%AA%E9%99%A4-105831448.html




Åwªï¥úÁ{ ®á®³µó½×¾Â (http://sauna-88.com/forum/) Powered by Discuz! 6.0.0