{"id":115,"date":"2026-07-22T09:08:35","date_gmt":"2026-07-22T01:08:35","guid":{"rendered":"https:\/\/www.deartester.com\/index.php\/2026\/09\/01\/app%e7%a8%b3%e5%ae%9a%e6%80%a7%e6%b5%8b%e8%af%95%e8%bf%98%e5%9c%a8%e7%94%a8monkey%ef%bc%9f-%e6%99%ba%e8%83%bd%e9%81%8d%e5%8e%86%e8%ae%a9%e5%b4%a9%e6%ba%83%e7%8e%87%e9%99%8d%e4%bd%8e80\/"},"modified":"2026-09-03T23:17:34","modified_gmt":"2026-09-03T15:17:34","slug":"app%e7%a8%b3%e5%ae%9a%e6%80%a7%e6%b5%8b%e8%af%95%e8%bf%98%e5%9c%a8%e7%94%a8monkey%ef%bc%9f-%e6%99%ba%e8%83%bd%e9%81%8d%e5%8e%86%e8%ae%a9%e5%b4%a9%e6%ba%83%e7%8e%87%e9%99%8d%e4%bd%8e80","status":"publish","type":"post","link":"https:\/\/www.deartester.com\/index.php\/2026\/07\/22\/app%e7%a8%b3%e5%ae%9a%e6%80%a7%e6%b5%8b%e8%af%95%e8%bf%98%e5%9c%a8%e7%94%a8monkey%ef%bc%9f-%e6%99%ba%e8%83%bd%e9%81%8d%e5%8e%86%e8%ae%a9%e5%b4%a9%e6%ba%83%e7%8e%87%e9%99%8d%e4%bd%8e80\/","title":{"rendered":"App\u7a33\u5b9a\u6027\u6d4b\u8bd5\u8fd8\u5728\u7528Monkey\uff1f \u667a\u80fd\u904d\u5386\u8ba9\u5d29\u6e83\u7387\u964d\u4f4e80%"},"content":{"rendered":"<table>\n<tbody>\n<tr>\n<td data-colwidth=\"576\">\n<p data-pm-slice=\"0 0 []\" data-nest-level=\"6\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"7\">\u261e&nbsp;<span textstyle=\"\" style=\"color: rgb(122, 79, 214);\">\u5bfc\u8bfb<\/span><\/span><\/p>\n<p><span data-nest-level=\"6\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(255, 76, 65);\">\u5927\u591a\u6570\u6d4b\u8bd5\u56e2\u961f\u505aApp\u7a33\u5b9a\u6027\u6d4b\u8bd5\uff0c\u7b2c\u4e00\u6b65\u5c31\u662f\u638f\u51faMonkey\u2014\u2014\u968f\u673a\u70b9\u51fb\u5c4f\u5e55\uff0c\u7b49\u7740App\u5d29\u6e83\u3002Android\u6709Monkey\uff0ciOS\u6709Swift Monkey\uff0c\u9e3f\u8499\u6709Wukong\uff0c\u601d\u8def\u90fd\u4e00\u6837\uff1a\u968f\u673a\u6ce8\u5165\u4e8b\u4ef6\uff0c\u7b49\u5d29\u6e83\u53d1\u751f\u3002\u4f46\u8fd9\u79cd\u65b9\u6cd5\u80fd\u53d1\u73b0\u7684\u95ee\u9898\u4e0d\u5230\u7ebf\u4e0a\u771f\u5b9e\u5d29\u6e83\u768430%\u2014\u2014ANR\u65e0\u54cd\u5e94\u3001\u540e\u53f0\u5185\u5b58\u6cc4\u6f0f\u3001WebView\u5f02\u5e38\u3001\u72b6\u6001\u9519\u4e71\u5f15\u53d1\u7684\u5d29\u6e83\uff0cMonkey\u51e0\u4e4e\u662f\u76f2\u6d4b\u3002<\/span><\/span><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section style=\"text-indent: 2em;\" data-nest-level=\"2\"><span leaf=\"\" style=\"color: rgba(0, 0, 0, 0.9);font-size: 17px;font-family: mp-quote, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height: 1.6;letter-spacing: 0.034em;font-style: normal;font-weight: normal;\" data-pm-slice=\"1 1 [&quot;table&quot;,{&quot;interlaced&quot;:null,&quot;align&quot;:null,&quot;class&quot;:null,&quot;style&quot;:null},&quot;table_body&quot;,{},&quot;table_row&quot;,{&quot;class&quot;:null,&quot;style&quot;:null},&quot;table_cell&quot;,{&quot;colspan&quot;:1,&quot;rowspan&quot;:1,&quot;colwidth&quot;:[576],&quot;width&quot;:null,&quot;valign&quot;:null,&quot;align&quot;:null,&quot;style&quot;:null},&quot;node&quot;,{&quot;tagName&quot;:&quot;span&quot;,&quot;attributes&quot;:{&quot;style&quot;:null,&quot;data-nest-level&quot;:&quot;2&quot;},&quot;namespaceURI&quot;:&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;}]\" data-nest-level=\"3\"><span textstyle=\"\" style=\"font-size: 15px;\">\u672c\u6587\u4ece\u7a33\u5b9a\u6027\u6d4b\u8bd5\u7684\u57fa\u672c\u6982\u5ff5\u51fa\u53d1\uff0c\u5168\u666f\u5bf9\u6bd4Android\u3001iOS\u3001\u9e3f\u8499\u4e09\u5927\u7cfb\u7edf\u7684\u6d4b\u8bd5\u65b9\u6848\uff0c\u6df1\u5165\u5256\u6790Monkey\u7684\u5e95\u5c42\u539f\u7406\u4e0e\u4e09\u5927\u81f4\u547d\u7f3a\u9677\uff0c\u5f15\u51fa\u667a\u80fd\u904d\u5386\u7684\u6838\u5fc3\u601d\u60f3\u4e0e\u4e3b\u6d41\u5de5\u5177\uff0c\u6700\u540e\u7528\u5b8c\u6574\u5b9e\u6218\u4ee3\u7801\uff08Python + AI + CI\/CD\uff09\u624b\u628a\u624b\u6559\u4f60\u642d\u5efa\u667a\u80fd\u904d\u5386\u6d4b\u8bd5\u4f53\u7cfb\uff0c\u5b9e\u73b0\u5d29\u6e83\u7387\u964d\u4f4e80%\u7684\u5b9e\u6218\u6548\u679c\u3002<\/span><\/span><\/section>\n<section data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e00<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u4ec0\u4e48\u662fApp\u7a33\u5b9a\u6027\u6d4b\u8bd5\uff1f<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">1.1 \u7a33\u5b9a\u6027\u6d4b\u8bd5\u7684\u5b9a\u4e49\u4e0e\u8fb9\u754c<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">App\u7a33\u5b9a\u6027\u6d4b\u8bd5\uff08Stability Testing\uff09\u662f\u6307\u5728<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u957f\u65f6\u95f4\u3001\u9ad8\u9891\u7387\u3001\u591a\u573a\u666f<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u6761\u4ef6\u4e0b\uff0c\u6301\u7eed\u8fd0\u884cApp\u5e76\u76d1\u63a7\u5176\u662f\u5426\u51fa\u73b0\u5d29\u6e83\u3001\u65e0\u54cd\u5e94\u3001\u5185\u5b58\u6cc4\u6f0f\u3001\u5f02\u5e38\u91cd\u542f\u7b49\u95ee\u9898\u7684\u4e00\u79cd\u6d4b\u8bd5\u65b9\u6cd5\u3002\u5b83\u4e0e\u529f\u80fd\u6d4b\u8bd5\u7684\u6838\u5fc3\u533a\u522b\u5728\u4e8e\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7ef4\u5ea6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u529f\u80fd\u6d4b\u8bd5<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7a33\u5b9a\u6027\u6d4b\u8bd5<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6d4b\u8bd5\u76ee\u6807<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9a8c\u8bc1&#8221;\u529f\u80fd\u662f\u5426\u6b63\u786e&#8221;<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9a8c\u8bc1&#8221;App\u662f\u5426\u6301\u7eed\u7a33\u5b9a\u8fd0\u884c&#8221;<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8fd0\u884c\u65f6\u957f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5355\u6b21\u64cd\u4f5c\uff0c\u79d2\u7ea7~\u5206\u949f\u7ea7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u957f\u65f6\u95f4\u8fd0\u884c\uff0c\u5206\u949f\u7ea7~\u5c0f\u65f6\u7ea7<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5173\u6ce8\u6307\u6807<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Pass\/Fail<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u7387\u3001ANR\u7387\u3001\u5185\u5b58\u8d8b\u52bf\u3001FPS<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u89e6\u53d1\u65b9\u5f0f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9884\u8bbe\u7528\u4f8b\uff0c\u7cbe\u786e\u8def\u5f84<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\/\u534a\u968f\u673a\/\u667a\u80fd\u904d\u5386\uff0c\u5e7f\u8986\u76d6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7f3a\u9677\u7c7b\u578b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u903b\u8f91\u9519\u8bef\u3001UI\u5f02\u5e38<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Crash\u3001ANR\u3001OOM\u3001\u5185\u5b58\u6cc4\u6f0f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53d1\u73b0\u96be\u5ea6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4f4e\uff08\u6709\u660e\u786e\u9884\u671f\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9ad8\uff08\u9700\u7279\u5b9a\u72b6\u6001\/\u65f6\u5e8f\u624d\u80fd\u89e6\u53d1\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">1.2 \u7a33\u5b9a\u6027\u6d4b\u8bd5\u7684\u56db\u5927\u6838\u5fc3\u6307\u6807<\/span><\/h3>\n<section style=\"text-align: center;\" nodeleaf=\"\" data-nest-level=\"2\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-ratio=\"0.12663755458515283\" data-s=\"300,640\" data-type=\"png\" data-w=\"687\" type=\"block\" data-imgfileid=\"100000514\" data-aistatus=\"1\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1ItccrjTx6xDibNCiaqWmxC5xl6Jd4caBmhh8JgDZGKOAu38CmePCC8oqcyvBxjiba1HEP3Hfm2dZfo7iaiaoTAzbSZ2Ric3FFDqgWnk\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6307\u6807<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5b9a\u4e49<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u884c\u4e1a\u5408\u683c\u7ebf<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u4f18\u79c0\u6807\u51c6<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53d1\u751f\u5d29\u6e83\u7684\u4f1a\u8bdd\u6570 \/ \u603b\u4f1a\u8bdd\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 0.3%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 0.1%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53d1\u751fANR\u7684\u4f1a\u8bdd\u6570 \/ \u603b\u4f1a\u8bdd\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 0.47%\uff08Google Play\u6807\u51c6\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 0.2%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\u6cc4\u6f0f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">PSS\u5185\u5b58\u6301\u7eed\u589e\u957f\u4e14\u4e0d\u56de\u6536<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0\u4e25\u91cd\u6cc4\u6f0f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0\u6cc4\u6f0f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5f02\u5e38\u91cd\u542f\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u975e\u7528\u6237\u4e3b\u52a8\u91cd\u542f\u6b21\u6570 \/ \u603b\u8fd0\u884c\u65f6\u957f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 1\u6b21\/\u5343\u5c0f\u65f6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&lt; 0.3\u6b21\/\u5343\u5c0f\u65f6<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);\">\u5173\u952e\u8ba4\u77e5\uff1a<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u7ebf\u4e0a\u7528\u6237\u5d29\u6e83\u7684\u771f\u5b9e\u5143\u51f6\u4e2d\uff0cForce Close\uff08Java\u5c42\u5d29\u6e83\uff09\u4ec5\u5360\u7ea640%\uff0cANR\u536025%\uff0c\u5185\u5b58\u6cc4\u6f0fOOM\u536010%\uff0cWebView\u5f02\u5e38\u53605%\uff0c\u72b6\u6001\u9519\u4e71\u53605%\u3002\u7a33\u5b9a\u6027\u6d4b\u8bd5\u5fc5\u987b\u8986\u76d6<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);\">\u5168\u90e8\u56db\u7c7b\u6307\u6807<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u800c\u975e\u53ea\u76ef\u7740&#8221;\u5d29\u4e0d\u5d29&#8221;\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">1.3 \u4e3a\u4ec0\u4e48\u7a33\u5b9a\u6027\u6d4b\u8bd5\u8d8a\u6765\u8d8a\u91cd\u8981<\/span><\/h3>\n<ul style=\"box-sizing: border-box;margin: 10px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">App\u590d\u6742\u5ea6\u7206\u70b8<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u5355App\u4ece\u51e0\u5341\u4e2a\u9875\u9762\u589e\u957f\u5230\u6570\u767e\u4e2a\u9875\u9762\uff0c\u72b6\u6001\u7ec4\u5408\u6307\u6570\u7ea7\u589e\u957f<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u8bbe\u5907\u788e\u7247\u5316<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aAndroid\u8bbe\u5907\u578b\u53f7\u8d854\u4e07\u79cd\uff0c\u5c4f\u5e55\/\u5185\u5b58\/CPU\u5dee\u5f02\u5de8\u5927<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u591a\u7cfb\u7edf\u5e76\u5b58<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aAndroid\u3001iOS\u3001\u9e3f\u8499HarmonyOS\u4e09\u8db3\u9f0e\u7acb\uff0c\u5404\u7cfb\u7edf\u5e95\u5c42\u673a\u5236\u4e0d\u540c<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u7528\u6237\u4f53\u9a8c\u9608\u503c\u63d0\u9ad8<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u7528\u6237\u5bf9\u5d29\u6e83\u7684\u5bb9\u5fcd\u5ea6\u8d8a\u6765\u8d8a\u4f4e\uff0c\u4e00\u6b21\u5d29\u6e83=\u53ef\u80fd\u6d41\u5931\u7528\u6237<\/span><\/section>\n<\/li>\n<\/ul>\n<section data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e8c<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u4e09\u5927\u7cfb\u7edf\u7a33\u5b9a\u6027\u6d4b\u8bd5\u65b9\u6848\u5168\u666f<\/span><\/h2>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u5f53\u524d\u79fb\u52a8\u7aef\u4e09\u5927\u64cd\u4f5c\u7cfb\u7edf\u2014\u2014Android\u3001iOS\u3001\u9e3f\u8499HarmonyOS\u2014\u2014\u5404\u81ea\u62e5\u6709\u4e0d\u540c\u7684\u6d4b\u8bd5\u5de5\u5177\u94fe\u548c\u7a33\u5b9a\u6027\u6d4b\u8bd5\u65b9\u6848\u3002\u4ee5\u4e0b\u505a\u5168\u666f\u5f0f\u68b3\u7406\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">2.1 Android\u65b9\u6848\uff1aMonkey + uiautomator2<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">Android\u662f\u7a33\u5b9a\u6027\u6d4b\u8bd5\u5de5\u5177\u6700\u4e30\u5bcc\u7684\u5e73\u53f0\uff0c\u4e3b\u8981\u65b9\u6848\u5305\u62ec\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5de5\u5177<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6765\u6e90<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7c7b\u578b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6838\u5fc3\u80fd\u529b<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Monkey<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Google\uff08Android SDK\u5185\u7f6e\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4f2a\u968f\u673a\u4e8b\u4ef6\u6ce8\u5165\uff0c\u5d29\u6e83\u76d1\u63a7<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">uiautomator2<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Google + \u5f00\u6e90\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u81ea\u52a8\u5316\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">View\u6811\u89e3\u6790\uff0c\u5143\u7d20\u5b9a\u4f4d\uff0c\u53ef\u7f16\u7a0b<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">AppCrawler<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">TesterHome\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u667a\u80fd\u904d\u5386<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">YAML\u914d\u7f6e\uff0c\u63d2\u4ef6\u5316\uff0c\u8986\u76d6\u7387\u62a5\u544a<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Maxim<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u817e\u8baf\u5fae\u4fe1\u652f\u4ed8<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u667a\u80fd\u904d\u5386<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">DFS\u6df1\u5ea6\u4f18\u5148\uff0c\u96f6\u914d\u7f6e\u542f\u52a8<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Espresso<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Google<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u81ea\u52a8\u5316\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u767d\u76d2\u6d4b\u8bd5\uff0c\u9700\u8981\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Monkey<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u662fAndroid\u5e73\u53f0\u6700\u901a\u7528\u7684\u7a33\u5b9a\u6027\u6d4b\u8bd5\u5de5\u5177\uff0c\u51e0\u4e4e\u6240\u6709Android\u6d4b\u8bd5\u56e2\u961f\u90fd\u7528\u8fc7\u3002\u5b83\u968fSDK\u5185\u7f6e\uff0c\u96f6\u5b89\u88c5\u6210\u672c\uff0c\u4e00\u884c\u547d\u4ee4\u542f\u52a8\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"apache\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u6700\u7b80\u5355\u7684Monkey\u547d\u4ee4<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">adb<\/span>&nbsp;shell monkey -p com.example.app -v&nbsp;<span class=\"code-snippet__number\">10000<\/span><\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">2.2 iOS\u65b9\u6848\uff1aXCTest + Swift Monkey<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">iOS\u5e73\u53f0\u7531\u4e8e\u7cfb\u7edf\u5c01\u95ed\uff0c\u81ea\u52a8\u5316\u6d4b\u8bd5\u5de5\u5177\u8fdc\u6ca1\u6709Android\u4e30\u5bcc\uff0c\u4e3b\u8981\u4f9d\u8d56Apple\u5b98\u65b9\u5de5\u5177\u94fe\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5de5\u5177<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6765\u6e90<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7c7b\u578b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6838\u5fc3\u80fd\u529b<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">XCTest<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Apple\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u81ea\u52a8\u5316\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Xcode\u5185\u7f6e\uff0c\u5143\u7d20\u5b9a\u4f4d\uff0c\u65ad\u8a00<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift Monkey<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5f00\u6e90\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6a21\u62dfUIControl\u4e8b\u4ef6\uff0c\u7c7bAndroid Monkey<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">XCUITest<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Apple\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u6d4b\u8bd5\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u57fa\u4e8eXCTest\uff0c\u652f\u6301Page Object\u6a21\u5f0f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Instruments<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Apple\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6027\u80fd\u5206\u6790\u5de5\u5177<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\/CPU\/\u7f51\u7edc\/GPU\u5b9e\u65f6\u76d1\u63a7<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Appium<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5f00\u6e90\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8de8\u5e73\u53f0UI\u81ea\u52a8\u5316<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u652f\u6301iOS+Android\uff0c\u8bed\u8a00\u65e0\u5173<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">iOS\u7aef\u6ca1\u6709\u50cfAndroid Monkey\u90a3\u6837&#8221;\u5f00\u7bb1\u5373\u7528&#8221;\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6700\u63a5\u8fd1\u7684\u662f<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Swift Monkey<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u2014\u2014\u4e00\u4e2a\u6a21\u62dfUIControl\u968f\u673a\u4e8b\u4ef6\u7684\u5f00\u6e90\u6846\u67b6\uff0c\u9700\u8981\u96c6\u6210\u5230Xcode\u9879\u76ee\u4e2d\u8fd0\u884c\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"swift\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ Swift Monkey \u6700\u7b80\u542f\u52a8<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;SwiftMonkey<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">MyTest<\/span>:&nbsp;<span class=\"code-snippet__title\">XCTestCase<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">func<\/span>&nbsp;<span class=\"code-snippet__title\">testMonkey<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;app&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__type\">XCUIApplication<\/span>()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; app.launch()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;monkey&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__type\">Monkey<\/span>(application: app)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; monkey.randomizeFirstAction&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; monkey.addXCTestTapAlertAction()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; monkey.addDefault&nbsp;<span class=\"code-snippet__type\">XCTestRandomGestureActions<\/span>()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; monkey.monkeyAround(iterations:&nbsp;<span class=\"code-snippet__number\">10000<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">2.3 \u9e3f\u8499HarmonyOS\u65b9\u6848\uff1aHypium + SmartDevEco<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u9e3f\u8499\u7cfb\u7edf\u7684\u6d4b\u8bd5\u4f53\u7cfb\u4e0eAndroid\/iOS\u6709\u672c\u8d28\u533a\u522b\u2014\u2014\u5b83\u57fa\u4e8eArkTS\/ArkUI\u6846\u67b6\uff0c\u6d4b\u8bd5\u5de5\u5177\u94fe\u7531\u534e\u4e3a\u5b98\u65b9\u63d0\u4f9b\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5de5\u5177<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6765\u6e90<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7c7b\u578b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6838\u5fc3\u80fd\u529b<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Hypium<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u534e\u4e3a\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u81ea\u52a8\u5316\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ArkTS\u7f16\u5199\uff0c\u652f\u6301\u5143\u670d\u52a1\/App<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">SmartDevEco Monkey<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u534e\u4e3aDevEco Studio<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7c7bAndroid Monkey\uff0c\u6ce8\u5165\u89e6\u6478\/\u6ed1\u52a8\u4e8b\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">DevEco Testing<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u534e\u4e3a\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e91\u6d4b\u5e73\u53f0<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u771f\u673a\/\u6a21\u62df\u5668\u8fdc\u7a0b\u6d4b\u8bd5\uff0c\u517c\u5bb9\u6027\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Wukong<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u534e\u4e3a\u5f00\u6e90<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7cfb\u7edf\u7ea7\u4e8b\u4ef6\u6ce8\u5165\uff0c\u652f\u6301ArkUI\u7ec4\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u9e3f\u8499\u7684<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Wukong\u5de5\u5177<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u662f\u7a33\u5b9a\u6027\u6d4b\u8bd5\u7684\u4e3b\u529b\uff0c\u5b83\u7684\u5b9a\u4f4d\u7c7b\u4f3cAndroid Monkey\uff0c\u4f46\u9488\u5bf9ArkUI\u6846\u67b6\u505a\u4e86\u9002\u914d\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"shell\"><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;\u9e3f\u8499Wukong\u7a33\u5b9a\u6027\u6d4b\u8bd5\u547d\u4ee4<\/span><\/code><code><span leaf=\"\">hdc shell wukong -p com.example.myapp -v 10000<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;\u53c2\u6570\u4e0eMonkey\u7c7b\u4f3c\uff1a<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;-p \u6307\u5b9a\u5305\u540d<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;-v \u4e8b\u4ef6\u6570\u91cf<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;--throttle \u4e8b\u4ef6\u95f4\u9694<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">#<\/span>&nbsp;--h \u6ce8\u5165\u4e8b\u4ef6\u7c7b\u578b\uff08<span class=\"code-snippet__built_in\">touch<\/span>\/swipe\/key\uff09<\/span><\/code><\/pre>\n<\/section>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"3\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);\">\u5b9e\u6218\u63d0\u793a\uff1a<\/span><\/span><\/strong><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><span textstyle=\"\" style=\"font-size: 12px;\">\u9e3f\u8499Wukong\u7684\u4f7f\u7528\u65b9\u5f0f\u4e0eAndroid Monkey\u9ad8\u5ea6\u7c7b\u4f3c\uff0c\u4f46\u5e95\u5c42\u4e8b\u4ef6\u6ce8\u5165\u673a\u5236\u4e0d\u540c\u2014\u2014Wukong\u901a\u8fc7ArkUI\u7684AccessibilityService\u83b7\u53d6\u7ec4\u4ef6\u6811\uff0c\u800c\u975eAndroid\u7684View\u4f53\u7cfb\u3002\u5982\u679c\u4f60\u7684App\u540c\u65f6\u9002\u914dAndroid\u548c\u9e3f\u8499\uff0cMonkey\u7ecf\u9a8c\u53ef\u4ee5\u76f4\u63a5\u8fc1\u79fb\u3002<\/span><\/span><\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">2.4 \u4e09\u5927\u7cfb\u7edf\u65b9\u6848\u5bf9\u6bd4\u603b\u89c8<\/span><\/h3>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u7ef4\u5ea6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">Android<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">iOS<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u9e3f\u8499HarmonyOS<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Monkey\uff08SDK\u5185\u7f6e\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift Monkey\uff08\u5f00\u6e90\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Wukong\uff08\u5b98\u65b9\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">UI\u81ea\u52a8\u5316\u6846\u67b6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">uiautomator2<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">XCTest\/XCUITest<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Hypium<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u667a\u80fd\u904d\u5386\u5de5\u5177<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e30\u5bcc\uff084+\u5de5\u5177\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6709\u9650<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6682\u65e0\u6210\u719f\u65b9\u6848<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u76d1\u63a7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">adb logcat + dumpsys<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Xcode Organizer + Crash Report<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">hilog + DevEco Profiler<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u68c0\u6d4b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\/data\/anr\/trace.txt<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700XCTest\u81ea\u5b9a\u4e49\u76d1\u63a7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">hilog + Watchdog<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\u5206\u6790<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">dumpsys meminfo \/ hprof<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Instruments (Allocations\/Leaks)<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">DevEco Profiler<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5de5\u5177\u751f\u6001\u6210\u719f\u5ea6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\u2605\u2605\u2605<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\u2605<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\uff08\u5feb\u901f\u53d1\u5c55\u4e2d\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u73b0\u72b6\u603b\u7ed3\uff1a<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><span textstyle=\"\" style=\"font-size: 15px;\">\u4e09\u5927\u7cfb\u7edf\u7684\u7a33\u5b9a\u6027\u6d4b\u8bd5\u76ee\u524d<\/span><\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u90fd\u4ee5\u968f\u673a\u538b\u529b\u6d4b\u8bd5\uff08Monkey\u7c7b\u5de5\u5177\uff09\u4e3a\u4e3b<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><span textstyle=\"\" style=\"font-size: 15px;\">\u2014\u2014Android\u7528Monkey\uff0ciOS\u7528Swift Monkey\uff0c\u9e3f\u8499\u7528Wukong\u3002\u5b83\u4eec\u7684\u5171\u540c\u7279\u70b9\u662f\uff1a\u968f\u673a\u6ce8\u5165\u4e8b\u4ef6\u3001\u7b49\u5f85\u5d29\u6e83\u53d1\u751f\u3001\u7f3a\u4e4f\u8986\u76d6\u7387\u5ea6\u91cf\u3002\u8fd9\u6b63\u662f\u4e0b\u4e00\u6b65\u8981\u6df1\u5165\u5256\u6790\u7684\u6838\u5fc3\u95ee\u9898\u3002<\/span><\/span><\/p>\n<section data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e09<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">Monkey\u7684\u5e95\u5c42\u539f\u7406\uff1a\u5b83\u5230\u5e95\u662f\u600e\u4e48\u5de5\u4f5c\u7684\uff1f<\/span><\/h2>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u4e09\u5927\u7cfb\u7edf\u7684\u968f\u673a\u538b\u529b\u6d4b\u8bd5\u5de5\u5177\u867d\u7136\u540d\u5b57\u4e0d\u540c\uff08Monkey\u3001Swift Monkey\u3001Wukong\uff09\uff0c\u4f46\u5e95\u5c42\u539f\u7406\u9ad8\u5ea6\u4e00\u81f4\u3002\u4ee5Android Monkey\u4e3a\u4f8b\u505a\u6df1\u5ea6\u62c6\u89e3\u2014\u2014\u7406\u89e3\u4e86\u5b83\uff0c\u4e5f\u5c31\u7406\u89e3\u4e86Swift Monkey\u548cWukong\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">3.1 \u5de5\u4f5c\u673a\u5236\u6df1\u5ea6\u89e3\u6790<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">Monkey\u7684\u6838\u5fc3\u662f\u4e00\u4e2a<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u6709\u9650\u72b6\u6001\u673a\uff08FSM\uff09<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u5b83\u6839\u636e\u5f53\u524d\u5c4f\u5e55\u7684Activity\/View\u6811\uff0c\u968f\u673a\u9009\u62e9\u4e00\u4e2a\u53ef\u4ea4\u4e92\u5143\u7d20\uff08Button\u3001EditText\u3001ListItem\u7b49\uff09\uff0c\u7136\u540e\u968f\u673a\u6ce8\u5165\u5bf9\u5e94\u4e8b\u4ef6\uff08Tap\u3001Swipe\u3001LongPress\u7b49\uff09\u3002<\/span><\/p>\n<section style=\"text-align: center;\" nodeleaf=\"\" data-nest-level=\"2\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-ratio=\"0.9388646288209607\" data-s=\"300,640\" data-type=\"png\" data-w=\"687\" type=\"block\" data-imgfileid=\"100000515\" data-aistatus=\"1\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1KO5cJtOsfJ01qjianSBHXcQJhibgXibA7YAiax8pPDicWYAVZbq6bM9FDqgibyKAdAFq3HtQcx4O072BwlWMK3Wiagaxo3YNNLpSIT5Q\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<section style=\"text-align: center;\" data-nest-level=\"2\"><span style=\"color: rgb(136, 136, 136);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-nest-level=\"3\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"4\">Monkey\u6267\u884c\u6d41\u7a0b\u4e0e\u6838\u5fc3\u6a21\u5757<\/span><\/span><\/section>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\"><span textstyle=\"\" style=\"color: rgb(64, 118, 0);\">Monkey\u652f\u6301\u7684\u4e8b\u4ef6\u7c7b\u578b\u53ca\u5176\u9ed8\u8ba4\u6743\u91cd\uff1a<\/span><\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u4e8b\u4ef6\u7c7b\u578b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u53c2\u6570<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u9ed8\u8ba4\u6743\u91cd<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u8bf4\u660e<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Touch\uff08\u70b9\u51fb\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-touch<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">45%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5355\u6307\u70b9\u51fb\uff0c\u6700\u5e38\u7528\u4e8b\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Motion\uff08\u6ed1\u52a8\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-motion<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">20%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5c4f\u5e55\u6ed1\u52a8\uff0c\u62d6\u52a8\u7c7b\u64cd\u4f5c<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Trackball\uff08\u8f68\u8ff9\u7403\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-trackball<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">5%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5386\u53f2\u9057\u7559\uff0c\u73b0\u4ee3\u624b\u673a\u4e0d\u9002\u7528<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Navigation\uff08\u5bfc\u822a\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-nav<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">20%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6a21\u62df\u7cfb\u7edf\u5bfc\u822a\u952e<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">MajorNav\uff08\u5927\u5bfc\u822a\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-majornav<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">5%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">App\u5185\u4e3b\u8981\u5bfc\u822a\u64cd\u4f5c<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">SysKeys\uff08\u7cfb\u7edf\u952e\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-syskeys<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">2%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u97f3\u91cf\u3001\u7535\u6e90\u7b49\u7cfb\u7edf\u952e<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Appswitch\uff08\u5207\u6362\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-appswitch<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">1%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">App\u5207\u6362\u540e\u53f0\u518d\u5207\u56de<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Pinchzoom\uff08\u7f29\u653e\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-pinchzoom<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">1%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53cc\u6307\u7f29\u653e<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Rotation\uff08\u65cb\u8f6c\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">&#8211;pct-rotation<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">1%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5c4f\u5e55\u6a2a\u7ad6\u5c4f\u5207\u6362<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">3.2 \u4e00\u4e2a\u5178\u578b\u7684Monkey\u547d\u4ee4<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"apache\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u6807\u51c6\u7a33\u5b9a\u6027\u6d4b\u8bd5\u547d\u4ee4<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">adb<\/span>&nbsp;shell monkey -p com.example.app&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --throttle&nbsp;<span class=\"code-snippet__number\">300<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --randomize-throttle&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --pct-touch&nbsp;<span class=\"code-snippet__number\">50<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --pct-motion&nbsp;<span class=\"code-snippet__number\">30<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --pct-nav&nbsp;<span class=\"code-snippet__number\">10<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --pct-anyevent&nbsp;<span class=\"code-snippet__number\">10<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; -s&nbsp;<span class=\"code-snippet__number\">12345<\/span>&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; -v -v -v&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --kill-process-after-error&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --hprof&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --monitor-native-crashes&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__number\">100000<\/span><\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"3\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"4\">\u51b7\u77e5\u8bc6\uff1a<\/span><\/strong><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><span textstyle=\"\" style=\"font-size: 14px;\">Monkey\u7684<\/span><\/span><\/span><code style=\"box-sizing: border-box;margin: 0px;padding: 2px 6px;background: rgb(244, 244, 244);border: 1px solid rgb(224, 224, 224);border-radius: 4px;font-family: Consolas, &quot;Courier New&quot;, monospace;font-size: 14px;color: rgb(192, 57, 43);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">-s<\/span><\/code><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><span textstyle=\"\" style=\"font-size: 14px;\">\uff08\u79cd\u5b50\uff09\u53c2\u6570\u53ef\u4ee5\u8ba9\u4e24\u6b21\u8fd0\u884c\u4ea7\u751f\u5b8c\u5168\u76f8\u540c\u7684\u4e8b\u4ef6\u5e8f\u5217\u3002\u5982\u679c\u4f60\u7684\u6d4b\u8bd5\u6bcf\u6b21\u60f3\u8986\u76d6\u76f8\u540c\u8def\u5f84\uff0c\u7528\u540c\u4e00\u4e2aseed\uff1b\u5982\u679c\u60f3\u6269\u5927\u8986\u76d6\u8303\u56f4\uff0c\u6bcf\u6b21\u6362\u4e0d\u540c\u7684seed\u3002<\/span><\/span><\/span><\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><br  \/><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u56db<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u5f53\u524d\u7a33\u5b9a\u6027\u6d4b\u8bd5\u7684\u4e09\u5927\u81f4\u547d\u7f3a\u9677<\/span><\/h2>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">Monkey\u57282010\u5e74\u524d\u540e\u51e0\u4e4e\u662f\u79fb\u52a8\u6d4b\u8bd5\u7684\u6807\u914d\uff0c\u4f46\u968f\u7740App\u590d\u6742\u5ea6\u6307\u6570\u7ea7\u589e\u957f\uff0c\u5b83\u7684\u5c40\u9650\u6027\u4e5f\u8d8a\u6765\u8d8a\u660e\u663e\u3002\u771f\u5b9e\u9879\u76ee\u4e2d\uff0cMonkey<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(192, 57, 43);font-weight: 700;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u53ea\u80fd\u53d1\u73b0\u7ea615%~30%\u7684\u7ebf\u4e0a\u5d29\u6e83<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u5927\u91cf\u5173\u952e\u8def\u5f84\u7684\u7f3a\u9677\u88ab\u9057\u6f0f\u3002\u8fd9\u4e2a\u7ed3\u8bba\u540c\u6837\u9002\u7528\u4e8eSwift Monkey\u548cWukong\u2014\u2014\u5b83\u4eec\u7684\u5e95\u5c42\u903b\u8f91\u5b8c\u5168\u4e00\u81f4\u3002<\/span><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"color: rgb(214, 168, 65);\">\u6838\u5fc3\u95ee\u9898\uff1aMonkey\u662f&#8221;\u72b6\u6001\u76f2&#8221;\u7684\u3002<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u5b83\u5bf9App\u7684\u5f53\u524d\u72b6\u6001\uff08\u767b\u5f55\u6001\u3001\u8d2d\u7269\u8f66\u6709\u5546\u54c1\u3001\u4e2a\u4eba\u4e2d\u5fc3\u5df2\u52a0\u8f7d\uff09\u5b8c\u5168\u65e0\u611f\u77e5\uff0c\u6bcf\u6b21\u70b9\u51fb\u90fd\u50cf\u662f&#8221;\u7b2c\u4e00\u6b21&#8221;\u8fdb\u5165\u8fd9\u4e2a\u9875\u9762\u2014\u2014\u6240\u4ee5\u5927\u91cf\u9700\u8981\u7279\u5b9a\u524d\u7f6e\u72b6\u6001\u624d\u80fd\u89e6\u53d1\u7684\u5d29\u6e83\uff0cMonkey\u6c38\u8fdc\u6d4b\u4e0d\u5230\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">4.1 \u7f3a\u9677\u4e00\uff1a\u968f\u673a\u904d\u5386\u5bfc\u81f4\u9875\u9762\u8986\u76d6\u7387\u6781\u4f4e<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">Monkey\u968f\u673a\u9009\u62e9\u5143\u7d20\uff0c\u5bfc\u81f4\u5927\u91cf\u4e8b\u4ef6\u6d6a\u8d39\u5728<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u91cd\u590d\u533a\u57df<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff08\u5982\u540c\u4e00\u4e2a\u5217\u8868\u53cd\u590d\u6ed1\u52a8\uff09\uff0c\u800c<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u6df1\u5c42\u6b21\u9875\u9762<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff08\u5982&#8221;\u8bbe\u7f6e \u2192 \u8d26\u53f7\u5b89\u5168 \u2192 \u767b\u5f55\u8bbe\u5907\u7ba1\u7406 \u2192 \u8bbe\u5907\u89e3\u7ed1&#8221;\uff09\u51e0\u4e4e\u6c38\u8fdc\u5230\u4e0d\u4e86\u3002<\/span><\/p>\n<section style=\"text-align: center;\" nodeleaf=\"\" data-nest-level=\"2\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-ratio=\"0.3803680981595092\" data-s=\"300,640\" data-type=\"png\" data-w=\"489\" style=\"width:565px;height:215px;\" type=\"block\" data-imgfileid=\"100000516\" data-aistatus=\"1\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1LHBJAyGjBpTIBqSx2SSltmVxMo9cPIDUQibTSLkgjIE8Va15xH4otxEpwa1icicoRrNWj54z2fQHMricKI6HEevRLXjpB9DAQsky0\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<section style=\"text-align: center;\" data-nest-level=\"2\"><span data-nest-level=\"3\"><span style=\"color: rgb(136, 136, 136);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-nest-level=\"4\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"5\">Monkey\u968f\u673a\u91cd\u590d vs \u667a\u80fd\u904d\u5386\u8986\u76d6\u7387\u5bf9\u6bd4<\/span><\/span><\/span><\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">4.2 \u7f3a\u9677\u4e8c\uff1a\u65e0\u72b6\u6001\u611f\u77e5\u5bfc\u81f4\u573a\u666f\u8986\u76d6\u6b8b\u7f3a<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u7ebf\u4e0a\u771f\u5b9e\u7528\u6237\u7684\u5d29\u6e83\uff0c\u5f80\u5f80\u53d1\u751f\u5728<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u7279\u5b9a\u4e1a\u52a1\u72b6\u6001\u4e0b<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff1a<\/span><\/p>\n<ul style=\"box-sizing: border-box;margin: 10px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u8d2d\u7269\u8f66\u67095\u4ef6\u5546\u54c1 \u2192 \u53bb\u7ed3\u7b97 \u2192 \u652f\u4ed8\u5931\u8d25 \u2192 \u518d\u652f\u4ed8 \u2192&nbsp;<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(192, 57, 43);font-weight: 700;\" data-nest-level=\"5\"><span leaf=\"\" data-nest-level=\"6\">Crash<\/span><\/strong><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u64ad\u653e\u89c6\u9891\u65f6\u5207\u6362\u7f51\u7edc\uff084G\u2192WiFi\u2192\u65e0\u7f51\uff09\u2192 \u64ad\u653e\u5668\u72b6\u6001\u5f02\u5e38 \u2192&nbsp;<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(192, 57, 43);font-weight: 700;\" data-nest-level=\"5\"><span leaf=\"\" data-nest-level=\"6\">ANR<\/span><\/strong><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">App\u5728\u540e\u53f0\u88abKill \u2192 \u6062\u590d\u65f6\u5185\u5b58\u672a\u6b63\u786e\u91ca\u653e \u2192&nbsp;<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(192, 57, 43);font-weight: 700;\" data-nest-level=\"5\"><span leaf=\"\" data-nest-level=\"6\">OOM<\/span><\/strong><\/section>\n<\/li>\n<\/ul>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">Monkey\u5b8c\u5168\u4e0d\u7406\u89e3\u8fd9\u4e9b\u524d\u7f6e\u6761\u4ef6\uff0c\u6bcf\u6b21\u90fd\u4ece&#8221;\u51b7\u542f\u52a8&#8221;\u5f00\u59cb\uff0c\u65e0\u6cd5\u6784\u9020\u72b6\u6001\u94fe\u8def\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">4.3 \u7f3a\u9677\u4e09\uff1a\u53ea\u68c0\u6d4b\u5d29\u6e83\uff0cANR\u548c\u5185\u5b58\u6cc4\u6f0f\u5168\u90e8\u6f0f\u62a5<\/span><\/h3>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u7f3a\u9677\u7c7b\u578b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">Monkey\u80fd\u68c0\u6d4b<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u539f\u56e0<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u7ebf\u4e0a\u5360\u6bd4\u4f30\u7b97<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Force Close\uff08Java\u5d29\u6e83\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(232, 245, 233);color: rgb(39, 174, 96);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u80fd\u68c0\u6d4b<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7cfb\u7edf\u629b\u51faJava\u5c42\u5f02\u5e38<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea640%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Native Crash\uff08so\u5c42\u5d29\u6e83\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(232, 245, 233);color: rgb(39, 174, 96);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u80fd\u68c0\u6d4b<\/span><\/span><\/p>\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><br  \/><\/span><span style=\"box-sizing: border-box;margin: 0px;padding: 0px;font-size: 11px;color: rgb(136, 136, 136);\" data-nest-level=\"7\"><span leaf=\"\" data-nest-level=\"8\">(\u9700\u52a0&#8211;monitor-native-crashes)<\/span><\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4fe1\u53f7\u88ab\u7cfb\u7edf\u6355\u83b7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea615%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\uff08\u4e3b\u7ebf\u7a0b\u963b\u585e\uff09<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u68c0\u6d4b\u56f0\u96be<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u8981trace\u6587\u4ef6\u5206\u6790\uff0cMonkey\u4e0d\u81ea\u52a8\u89e3\u6790<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea625%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\u6cc4\u6f0f\uff08OOM\uff09<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0\u6cd5\u68c0\u6d4b<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6e10\u8fdb\u5f0f\u6cc4\u6f0f\u65e9\u671f\u65e0\u4fe1\u53f7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea610%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">WebView\u5f02\u5e38<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u68c0\u6d4b\u56f0\u96be<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">JS\u5f02\u5e38\u4e0d\u89e6\u53d1\u7cfb\u7edf\u5d29\u6e83<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea65%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u72b6\u6001\u9519\u4e71\/\u6570\u636e\u5f02\u5e38<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><span style=\"box-sizing: border-box;margin: 0px;padding: 2px 8px;background: rgb(255, 235, 238);color: rgb(231, 76, 60);font-weight: 600;font-size: 13px;border-radius: 4px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5b8c\u5168\u65e0\u6cd5\u68c0\u6d4b<\/span><\/span><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u8981\u4e1a\u52a1\u5c42\u65ad\u8a00<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7ea65%<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);\">\u6570\u636e\u8bf4\u8bdd\uff1a<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">Monkey\u80fd\u8986\u76d6\u7684\u5d29\u6e83\u7c7b\u578b\uff08Force Close + Native Crash\uff09\u53ea\u5360\u603b\u7ebf\u4e0a\u5d29\u6e83\u7684<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">55%<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u5176\u4f5945%\u7684\u5d29\u6e83\u5728Monkey\u6d4b\u8bd5\u4e2d\u51e0\u4e4e\u65e0\u6cd5\u88ab\u53d1\u73b0\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5f88\u591a\u56e2\u961f&#8221;Monkey\u8dd1\u4e86\u4e00\u591c\u6ca1\u62a5\u9519\uff0c\u53d1\u5e03\u540e\u5d29\u6e83\u7387\u7206\u8868&#8221;\u7684\u6839\u672c\u539f\u56e0\u3002<\/span><\/p>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><br  \/><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e94<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u667a\u80fd\u904d\u5386\uff1a\u91cd\u65b0\u5b9a\u4e49App\u7a33\u5b9a\u6027\u6d4b\u8bd5<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">5.1 \u6838\u5fc3\u601d\u60f3\uff1a\u4ece&#8221;\u968f\u673a&#8221;\u5230&#8221;\u6709\u7b56\u7565\u7684\u63a2\u7d22&#8221;<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u667a\u80fd\u904d\u5386\uff08Smart Monkey \/ Intelligent Traversal\uff09\u7684\u6838\u5fc3\u601d\u60f3\u501f\u9274\u4e86<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"text-decoration: underline;\">\u8f6f\u4ef6\u5de5\u7a0b\u4e2d\u7684\u6a21\u578b\u68c0\u6d4b\uff08Model Checking\uff09<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u548c<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"text-decoration: underline;\">\u5f3a\u5316\u5b66\u4e60\u4e2d\u7684\u63a2\u7d22\u7b56\u7565<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u2014\u2014\u4e0d\u518d\u968f\u673a\u4e71\u70b9\uff0c\u800c\u662f\u8ba9\u6d4b\u8bd5\u7cfb\u7edf&#8221;\u7406\u89e3&#8221;App\u7684\u9875\u9762\u7ed3\u6784\uff0c\u6709\u7b56\u7565\u5730\u904d\u5386\u6240\u6709\u53ef\u80fd\u7684\u72b6\u6001\u8282\u70b9\uff0c\u4f18\u5148\u63a2\u7d22\u66f4\u5bb9\u6613\u89e6\u53d1\u7f3a\u9677\u7684\u8def\u5f84\u3002<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 0px auto;padding: 0px;width: auto;border-collapse: collapse;font-size: 13px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(231, 76, 60);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(0, 0, 0);\">\u5bf9\u6bd4\u7ef4\u5ea6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(231, 76, 60);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(0, 0, 0);\">Monkey<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(39, 174, 96);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(0, 0, 0);\">\u667a\u80fd\u904d\u5386<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u904d\u5386\u7b56\u7565<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5b8c\u5168\u968f\u673a\uff08Random\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u542f\u53d1\u5f0f\/\u5b66\u4e60\u578b\uff08Heuristic\/ML\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9875\u9762\u611f\u77e5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0\u611f\u77e5\uff08\u72b6\u6001\u76f2\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">View\u6811\u5206\u6790 + \u72b6\u6001\u5efa\u6a21<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u91cd\u590d\u8986\u76d6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9ad8\u91cd\u590d\uff08\u540c\u533a\u57df\u53cd\u590d\u70b9\u51fb\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4f4e\u91cd\u590d\uff08\u5df2\u8986\u76d6\u533a\u57df\u8df3\u8fc7\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6df1\u5ea6\u7a7f\u900f<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6781\u4f4e\uff08\u6982\u7387\u4e0a\u96be\u4ee5\u8fdb\u5165\u6df1\u5c42\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9ad8\uff08\u542f\u53d1\u5f0f\u4f18\u5148\u63a2\u7d22\u6df1\u5c42\u8282\u70b9\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u524d\u7f6e\u72b6\u6001<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e0d\u7406\u89e3\uff08\u51b7\u542f\u52a8\u5f00\u59cb\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53ef\u914d\u7f6e\uff08\u652f\u6301\u767b\u5f55\/\u9884\u8bbe\u72b6\u6001\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5f02\u5e38\u68c0\u6d4b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4ec5\u5d29\u6e83\uff08Force Close\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83 + ANR + \u5185\u5b58 + \u6027\u80fd<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8986\u76d6\u7387\u6307\u6807<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(192, 57, 43);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0\uff08\u4e0d\u77e5\u9053\u6d4b\u4e86\u4ec0\u4e48\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Activity\/Fragment\u8986\u76d6\u7387\u53ef\u89c1<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section style=\"text-align: center;\" data-nest-level=\"2\"><span data-nest-level=\"3\"><span style=\"color: rgb(136, 136, 136);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-nest-level=\"4\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"5\">Monkey vs \u667a\u80fd\u904d\u5386\u6838\u5fc3\u5bf9\u6bd4<\/span><\/span><\/span><\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">5.2 \u667a\u80fd\u904d\u5386\u7684\u6280\u672f\u539f\u7406<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u667a\u80fd\u904d\u5386\u7cfb\u7edf\u901a\u5e38\u7531\u56db\u4e2a\u6838\u5fc3\u6a21\u5757\u7ec4\u6210\uff1a<\/span><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u667a\u80fd\u904d\u5386\u56db\u5c42\u67b6\u6784\uff1a<\/span><\/strong><\/p>\n<ul style=\"box-sizing: border-box;margin: 8px 0px 10px 24px;padding: 0px;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u611f\u77e5\u5c42\uff08Perception\uff09<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u901a\u8fc7AccessibilityService\/uiautomator2\u8bfb\u53d6\u5f53\u524d\u9875\u9762View\u6811\uff0c\u7406\u89e3\u6bcf\u4e2a\u5143\u7d20\u7684\u529f\u80fd\u7c7b\u578b\uff08Button\/List\/Input\uff09<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u51b3\u7b56\u5c42\uff08Decision\uff09<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u57fa\u4e8e\u56fe\u641c\u7d22\u7b97\u6cd5\uff08A*\/BFS\/DFS\uff09\u6216\u5f3a\u5316\u5b66\u4e60\u6a21\u578b\uff0c\u51b3\u5b9a\u4e0b\u4e00\u6b65\u70b9\u51fb\u54ea\u4e2a\u5143\u7d20\uff0c\u4f18\u5148\u9009\u62e9&#8221;\u672a\u63a2\u7d22\u8282\u70b9&#8221;<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u6267\u884c\u5c42\uff08Execution\uff09<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u901a\u8fc7uiautomator2\/adb\u6ce8\u5165\u70b9\u51fb\/\u6ed1\u52a8\/\u8f93\u5165\u4e8b\u4ef6<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u68c0\u6d4b\u5c42\uff08Detection\uff09<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u5b9e\u65f6\u76d1\u63a7\u5d29\u6e83\u3001ANR\u3001\u5185\u5b58\u3001\u5e27\u7387\u3001JS\u5f02\u5e38\u7b49\u591a\u7ef4\u6307\u6807<\/span><\/section>\n<\/li>\n<\/ul>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">5.3 \u8986\u76d6\u7387\u6307\u6807\u4f53\u7cfb\uff1a\u667a\u80fd\u904d\u5386\u4e0d\u53ea\u662f&#8221;\u8dd1\u5b8c\u5c31\u884c&#8221;<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u667a\u80fd\u904d\u5386\u7684\u53e6\u4e00\u4e2a\u91cd\u5927\u4f18\u52bf\u662f<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u8986\u76d6\u7387\u53ef\u89c6\u5316<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u3002\u5b83\u80fd\u591f\u91cf\u5316\u5730\u544a\u8bc9\u4f60&#8221;\u8fd9\u6b21\u6d4b\u8bd5\u8986\u76d6\u4e86\u54ea\u4e9bActivity\/Fragment\uff0c\u8986\u76d6\u4e86\u591a\u5c11\u6bd4\u4f8b&#8221;\u3002<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6307\u6807<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u542b\u4e49<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u4f18\u79c0\u6807\u51c6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u8bf4\u660e<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Activity\u8986\u76d6\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u904d\u5386\u5230\u7684Activity\u6570 \/ \u603bActivity\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2265 85%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6838\u5fc3\u4e1a\u52a1\u9875\u9762<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Fragment\u8986\u76d6\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u904d\u5386\u5230\u7684Fragment\u6570 \/ \u603bFragment\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2265 70%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5355Activity\u591aFragment\u67b6\u6784<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5206\u652f\u8986\u76d6\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u904d\u5386\u5230\u7684\u4ee3\u7801\u5206\u652f \/ \u603b\u5206\u652f\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2265 60%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u96c6\u6210JaCoCo<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u91cd\u590d\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u91cd\u590d\u64cd\u4f5c\u540c\u4e00\u5143\u7d20\u7684\u6b21\u6570 \/ \u603b\u64cd\u4f5c\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2264 20%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8d8a\u4f4e\u8d8a\u597d<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5e73\u5747\u6df1\u5ea6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\u5230\u8fbe\u7684\u5e73\u5747\u9875\u9762\u5c42\u7ea7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2265 4<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53cd\u6620\u7a7f\u900f\u6df1\u5ea6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6bcf\u8f6e\u5d29\u6e83\u53d1\u73b0\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5355\u6b21\u6d4b\u8bd5\u53d1\u73b0\u7684\u5d29\u6e83\u6570\u91cf<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2265 Monkey\u76843\u500d<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5bf9\u6bd4\u57fa\u51c6<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><br  \/><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u516d<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u4e3b\u6d41\u667a\u80fd\u904d\u5386\u5de5\u5177\u6a2a\u8bc4<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">6.1 \u5de5\u5177\u6982\u89c8\u4e0e\u5b9a\u4f4d<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u5f53\u524d\u4e3b\u6d41\u7684\u667a\u80fd\u904d\u5386\u5de5\u5177\u4e3b\u8981\u96c6\u4e2d\u5728Android\u5e73\u53f0\uff0ciOS\u548c\u9e3f\u8499\u7684\u65b9\u6848\u76f8\u5bf9\u6709\u9650\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5de5\u5177<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5f00\u6e90\u65b9<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u8bed\u8a00<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5e73\u53f0<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6838\u5fc3\u7279\u70b9<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u914d\u7f6e\u96be\u5ea6<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">AppCrawler<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">TesterHome\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Java<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Android<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u63d2\u4ef6\u5316\u8bbe\u8ba1\uff0cYAML\u914d\u7f6e\uff0c\u751f\u6001\u4e30\u5bcc<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e2d\u7b49<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Maxim<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u817e\u8baf\u5fae\u4fe1\u652f\u4ed8<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Java<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Android<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">DFS\u6df1\u5ea6\u4f18\u5148\uff0c\u8986\u76d6\u7387\u9ad8\uff0c\u96f6\u914d\u7f6e\u542f\u52a8<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7b80\u5355<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Rover<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7f8e\u56e2<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Python<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Android<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u53ef\u6269\u5c55\u6027\u5f3a\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u7b56\u7565\uff0cML\u53cb\u597d<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e2d\u7b49<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Smart Monkey<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">droidbot-project<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Python<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Android<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u57fa\u4e8e\u8f93\u5165\u751f\u6210\u6a21\u578b\uff0c\u5f15\u5bfc\u5f0f\u904d\u5386<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e2d\u7b49<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift Monkey\u589e\u5f3a\u7248<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5f00\u6e90\u793e\u533a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">iOS<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5728Swift Monkey\u57fa\u7840\u4e0a\u52a0\u9875\u9762\u611f\u77e5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8f83\u96be<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Hypium\u904d\u5386<\/span><\/strong><\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u534e\u4e3a\u5b98\u65b9<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ArkTS<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9e3f\u8499<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ArkUI\u7ec4\u4ef6\u6811\u904d\u5386\uff0cDevEco\u96c6\u6210<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8f83\u96be<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">6.2 AppCrawler \u8be6\u89e3<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">AppCrawler<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u662fTesterHome\u793e\u533a\u4e3b\u5bfc\u7684\u5f00\u6e90\u5de5\u5177\uff0c\u7531\u970d\u683c\u6c83\u5179\u6d4b\u8bd5\u5f00\u53d1\u5b66\u9662\u7ef4\u62a4\uff0c\u662f\u76ee\u524d\u793e\u533a\u6d3b\u8dc3\u5ea6\u6700\u9ad8\u7684\u667a\u80fd\u904d\u5386\u5de5\u5177\u3002\u5b83\u7684\u8bbe\u8ba1\u54f2\u5b66\u662f<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">&#8220;\u63d2\u4ef6\u5316 + YAML\u914d\u7f6e&#8221;<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u58f0\u660e\u6d4b\u8bd5\u7b56\u7565\uff0c\u65e0\u9700\u7f16\u5199Java\u4ee3\u7801\u3002<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"287\">\n<p data-pm-slice=\"0 0 []\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(64, 118, 0);font-weight: bold;\">\u4f18\u52bf<\/span><\/span><\/p>\n<ul style=\"box-sizing: border-box;margin: 6px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u63d2\u4ef6\u751f\u6001\u4e30\u5bcc\uff1a\u81ea\u52a8\u622a\u56fe\u3001\u9875\u9762\u5f55\u5236\u3001\u6027\u80fd\u91c7\u96c6<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">YAML\u914d\u7f6e\u7075\u6d3b\uff0c\u652f\u6301\u9ed1\u767d\u540d\u5355\u3001Activity\u8fc7\u6ee4<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u652f\u6301\u767b\u5f55\u6001\u6ce8\u5165\uff08Cookie\/Token\/App\u5185\u90e8\u72b6\u6001\uff09<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u751f\u6210\u8be6\u7ec6HTML\u8986\u76d6\u7387\u62a5\u544a<\/span><\/section>\n<\/li>\n<\/ul>\n<\/td>\n<td data-colwidth=\"287\">\n<p data-pm-slice=\"0 0 []\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);font-weight: bold;\">\u52a3\u52bf<\/span><\/span><\/p>\n<ul style=\"box-sizing: border-box;margin: 6px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u9700\u8981\u4e00\u5b9aYAML\u914d\u7f6e\u5b66\u4e60\u6210\u672c<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u9ed8\u8ba4DFS\u7b56\u7565\uff0c\u90e8\u5206\u573a\u666f\u53ef\u80fd\u6f0f\u6389\u5206\u652f<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">Android only\uff08\u4e0d\u652f\u6301iOS\/\u9e3f\u8499\uff09<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u7a33\u5b9a\u6027\u4f9d\u8d56uiautomator2\u7248\u672c<\/span><\/section>\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\"><br  \/><\/span><\/section>\n<\/li>\n<\/ul>\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><br  \/><\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">6.3 Maxim \u8be6\u89e3<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Maxim<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u662f\u817e\u8baf\u5fae\u4fe1\u652f\u4ed8\u56e2\u961f\u5f00\u6e90\u7684\u5de5\u5177\uff0c\u4ee5<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">&#8220;\u96f6\u914d\u7f6e + \u9ad8\u8986\u76d6\u7387&#8221;<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u8457\u79f0\u3002\u5b83\u7684DFS\uff08\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\uff09\u7b97\u6cd5\u4e13\u95e8\u9488\u5bf9App\u6df1\u5c42\u9875\u9762\u8bbe\u8ba1\uff0c\u80fd\u5feb\u901f\u89e6\u8fbe\u666e\u901a\u904d\u5386\u5de5\u5177\u96be\u4ee5\u5230\u8fbe\u7684\u6df1\u5c42\u9875\u9762\u3002<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"287\">\n<p data-pm-slice=\"0 0 []\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(64, 118, 0);font-weight: bold;\">\u4f18\u52bf<\/span><\/span><\/p>\n<ul style=\"box-sizing: border-box;margin: 6px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u96f6\u914d\u7f6e\u5373\u53ef\u8fd0\u884c\uff08\u4e0b\u8f7djar\u76f4\u63a5\u6267\u884c\uff09<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">DFS\u7b56\u7565\uff0c\u6df1\u5ea6\u7a7f\u900f\u80fd\u529b\u6781\u5f3a<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u5185\u7f6eANR\u76d1\u63a7\u548chprof\u5185\u5b58\u5feb\u7167<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u901f\u5ea6\u6781\u5feb\uff0c\u9002\u5408CI\u96c6\u6210<\/span><\/section>\n<\/li>\n<\/ul>\n<\/td>\n<td data-colwidth=\"287\">\n<p data-pm-slice=\"0 0 []\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"color: rgb(255, 41, 65);\">\u52a3\u52bf<\/span><\/span><\/p>\n<ul style=\"box-sizing: border-box;margin: 6px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u81ea\u5b9a\u4e49\u7b56\u7565\u6587\u6863\u76f8\u5bf9\u8f83\u5c11<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u8986\u76d6\u7387\u62a5\u544a\u529f\u80fd\u4e0d\u5982AppCrawler\u5b8c\u5584<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">Android Only<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\">\n<section data-nest-level=\"8\"><span leaf=\"\" data-nest-level=\"9\">\u9879\u76ee\u66f4\u65b0\u9891\u7387\u8f83\u4f4e<\/span><\/section>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">6.4 \u9009\u578b\u5efa\u8bae\u51b3\u7b56\u77e9\u9635<\/span><\/h3>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u56e2\u961f\u573a\u666f<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u63a8\u8350\u5de5\u5177<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7406\u7531<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5feb\u901f\u9a8c\u8bc1\uff0c\u65e0\u5f00\u53d1\u80fd\u529b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Maxim<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u96f6\u914d\u7f6e\uff0c\u4e0b\u8f7d\u5373\u7528\uff0cDFS\u6df1\u5ea6\u6700\u5f3a<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u8981\u767b\u5f55\u6001\u3001\u591a\u8d26\u53f7\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(42, 95, 168);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">AppCrawler<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u767b\u5f55\u6ce8\u5165\u673a\u5236\u5b8c\u5584\uff0c\u63d2\u4ef6\u4e30\u5bcc<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u8981\u81ea\u5b9a\u4e49\u7b56\u7565\uff08ML\/\u89c4\u5219\u5f15\u64ce\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(42, 95, 168);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Rover \/ Smart Monkey<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Python\u53ef\u7f16\u7a0b\uff0c\u6269\u5c55\u6027\u5f3a<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">iOS App\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(136, 136, 136);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift Monkey\u589e\u5f3a\u7248<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u5728Swift Monkey\u57fa\u7840\u4e0a\u81ea\u7814\u9875\u9762\u611f\u77e5<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9e3f\u8499App\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(136, 136, 136);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Hypium\u904d\u5386 + Wukong<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Hypium\u505a\u529f\u80fd\u904d\u5386\uff0cWukong\u505a\u538b\u529b\u8865\u6d4b<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4f01\u4e1a\u5185\u63a8\u5e7f\uff0cCI\/CD\u96c6\u6210<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(42, 95, 168);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">AppCrawler + Maxim\u53cc\u5de5\u5177<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">AppCrawler\u505a\u4e3b\u6d41\u7a0b\uff0cMaxim\u505a\u6df1\u5ea6\u8865\u6d4b<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u5b9e\u6218\u5efa\u8bae\uff1a<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u4e0d\u8981\u628a\u5de5\u5177\u9009\u62e9\u5f53\u6210\u5355\u9009\u9898\u3002\u63a8\u8350&#8221;AppCrawler + Maxim&#8221;\u53cc\u5de5\u5177\u7b56\u7565\u2014\u2014AppCrawler\u8d1f\u8d23\u529f\u80fd\u8def\u5f84\u8986\u76d6\uff0cMaxim\u8d1f\u8d23\u6df1\u5ea6\u9875\u9762\u7a7f\u900f\uff0c\u4e24\u8005\u7ed3\u5408\u4f7f\u7528\u80fd\u5b9e\u73b0\u6700\u9ad8\u8986\u76d6\u7387\u3002<\/span><\/p>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"4\"><br  \/><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e03<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u5b9e\u6218\u4e00\uff1aAppCrawler\u5b89\u88c5\u914d\u7f6e\u4e0eYAML\u53c2\u6570\u8be6\u89e3<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">7.1 \u73af\u5883\u51c6\u5907\uff1a\u5de5\u5177\u94fe\u5b89\u88c5<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">AppCrawler\u8fd0\u884c\u9700\u8981\u4ee5\u4e0b\u73af\u5883\uff1aJDK 8+\u3001Android SDK\uff08adb\u547d\u4ee4\u53ef\u7528\uff09\u3001Python 3.8+\uff08\u7528\u4e8e\u8f85\u52a9\u811a\u672c\uff09\u3002\u5efa\u8bae\u4f7f\u7528macOS\u6216Linux\u7cfb\u7edf\uff0cWindows\u901a\u8fc7WSL2\u4e5f\u53ef\u4ee5\u8fd0\u884c\u3002<\/span><\/p>\n<h4 style=\"box-sizing: border-box;margin: 16px 0px 8px;padding: 0px;font-size: 15px;font-weight: 600;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u524d\u7f6e\u73af\u5883\u68c0\u67e5<\/span><\/h4>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"nginx\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u68c0\u67e5Java\u7248\u672c\uff08\u9700\u8981JDK 8+\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">java<\/span>&nbsp;-version<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># openjdk version \"1.8.0_352\" \u6216\u66f4\u9ad8<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u68c0\u67e5ADB\uff08\u786e\u4fdd\u8bbe\u5907\u5df2\u8fde\u63a5\uff09<\/span><\/span><\/code><code><span leaf=\"\">adb version<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># Android Debug Bridge version 1.0.41<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u68c0\u67e5\u8bbe\u5907\u8fde\u63a5\u72b6\u6001<\/span><\/span><\/code><code><span leaf=\"\">adb devices -l<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># List of devices attached<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># emulator-5554 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;device product:sdk_phone_x86<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># 8a9c5b4e &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; device product:xxx model:Pixel_6<\/span><\/span><\/code><\/pre>\n<\/section>\n<h4 style=\"box-sizing: border-box;margin: 16px 0px 8px;padding: 0px;font-size: 15px;font-weight: 600;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">AppCrawler \u5b89\u88c5<\/span><\/h4>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"bash\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u65b9\u6cd5\u4e00\uff1aGitHub\u76f4\u63a5\u4e0b\u8f7d\u6700\u65b0JAR\uff08\u63a8\u8350\uff09<\/span><\/span><\/code><code><span leaf=\"\">wget https:\/\/github.com\/testerhome\/appcrawler\/releases\/latest\/download\/appcrawler-2.1.0.jar -O appcrawler.jar<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u65b9\u6cd5\u4e8c\uff1a\u6e90\u7801\u7f16\u8bd1\uff08\u9700\u8981Go\u73af\u5883\uff09<\/span><\/span><\/code><code><span leaf=\"\">git&nbsp;<span class=\"code-snippet__built_in\">clone<\/span>&nbsp;https:\/\/github.com\/testerhome\/appcrawler.git<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__built_in\">cd<\/span>&nbsp;appcrawler &amp;&amp; go build -o appcrawler .<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u9a8c\u8bc1\u5b89\u88c5<\/span><\/span><\/code><code><span leaf=\"\">java -jar appcrawler.jar --version<\/span><\/code><\/pre>\n<\/section>\n<h4 style=\"box-sizing: border-box;margin: 16px 0px 8px;padding: 0px;font-size: 15px;font-weight: 600;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">uiautomator2 \u5b89\u88c5\uff08Android\u7aef\u5fc5\u987b\uff09<\/span><\/h4>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"nginx\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># Python\u5305\u5b89\u88c5<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">pip3<\/span>&nbsp;install uiautomator2 pytest allure-pytest<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u5728\u76ee\u6807\u8bbe\u5907\u4e0a\u5b89\u88c5uiautomator2\u670d\u52a1<\/span><\/span><\/code><code><span leaf=\"\">adb install uiautomator.apk<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u9a8c\u8bc1\u8bbe\u5907\u4e0auiautomator\u670d\u52a1\u8fd0\u884c\u72b6\u6001<\/span><\/span><\/code><code><span leaf=\"\">adb shell dumpsys activity | grep -i uiautomator<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">7.2 YAML\u914d\u7f6e\u6587\u4ef6\u6df1\u5ea6\u89e3\u6790<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">AppCrawler\u7684\u6838\u5fc3\u662fYAML\u914d\u7f6e\u6587\u4ef6\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u5b8c\u6574\u7684\u4f01\u4e1a\u7ea7\u914d\u7f6e<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u9010\u53c2\u6570\u89e3\u91ca\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"bash\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># appcrawler_config.yml<\/span><\/span><\/code><code><span leaf=\"\">appcrawler:<\/span><\/code><code><span leaf=\"\">&nbsp; version:&nbsp;<span class=\"code-snippet__string\">\"2.1.0\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u76ee\u6807\u5e94\u7528\u914d\u7f6e ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; desiredCapabilities:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; app:&nbsp;<span class=\"code-snippet__string\">\"\/path\/to\/your-app.apk\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; appPackage:&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; appActivity:&nbsp;<span class=\"code-snippet__string\">\".MainActivity\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; appWaitActivity:&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp.*\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; noReset:&nbsp;<span class=\"code-snippet__literal\">true<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u4e0d\u91cd\u7f6e\u5e94\u7528\u72b6\u6001\uff08\u4fdd\u7559\u767b\u5f55\u6001\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; newCommandTimeout: 300<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u904d\u5386\u7b56\u7565\u914d\u7f6e ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; traversal:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; strategy:&nbsp;<span class=\"code-snippet__string\">\"depth-first\"<\/span>&nbsp; &nbsp;<span class=\"code-snippet__comment\"># \u904d\u5386\u7b56\u7565: depth-first \/ breadth-first \/ random<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; maxDepth: 8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__comment\"># \u6700\u5927\u6df1\u5ea6\uff08\u8d85\u8fc7\u5219\u56de\u6eaf\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; maxSteps: 5000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u6700\u5927\u6b65\u6570<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; maxDuration: 7200 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u6700\u5927\u8fd0\u884c\u65f6\u957f\uff08\u79d2\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; clickInterval: 500 &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__comment\"># \u6bcf\u6b21\u70b9\u51fb\u95f4\u9694\uff08\u6beb\u79d2\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; backMaxTimes: 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u8fde\u7eed\u8fd4\u56de\u952e\u6700\u591a\u63093\u6b21<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; selectorPriority:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"clickable\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"enabled\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"focusable\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; skipElements:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"android.widget.TextView\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"android.widget.ImageView\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u9ed1\u767d\u540d\u5355\u914d\u7f6e ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; filter:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; blackActivity:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp.ads.**\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp.splash.**\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; whiteActivity:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp.home.**\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp.order.**\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u767b\u5f55\u6001\u914d\u7f6e\uff08\u6838\u5fc3\u529f\u80fd\uff09 ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; login:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; screenshotLogin:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; screenshotPath:&nbsp;<span class=\"code-snippet__string\">\".\/login_screenshots\/\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; initCookies:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; - name:&nbsp;<span class=\"code-snippet__string\">\"SESSIONID\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; value:&nbsp;<span class=\"code-snippet__string\">\"abc123def456\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; domain:&nbsp;<span class=\"code-snippet__string\">\".example.com\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; initCommands:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"adb shell am start -n com.example.myapp\/.LoginActivity\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"adb shell input text username\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"adb shell input text password\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__string\">\"adb shell input keyevent 66\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u5f02\u5e38\u68c0\u6d4b\u914d\u7f6e ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; detection:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; crash:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; enabled:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; monitorNative:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; dumpHprof:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; anr:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; enabled:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; traceTimeout: 5<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; performance:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; enabled:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; metrics: [<span class=\"code-snippet__string\">\"cpu\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"memory\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"fps\"<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u62a5\u544a\u4e0e\u8f93\u51fa\u914d\u7f6e ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; report:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; outputDir:&nbsp;<span class=\"code-snippet__string\">\".\/reports\/appcrawler\/\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; screenshotDir:&nbsp;<span class=\"code-snippet__string\">\".\/reports\/screenshots\/\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; format:&nbsp;<span class=\"code-snippet__string\">\"allure\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; saveState:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__comment\"># ==================== \u667a\u80fd\u8df3\u8fc7\u89c4\u5219 ====================<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; smartSkip:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; enabled:&nbsp;<span class=\"code-snippet__literal\">true<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; rules:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__built_in\">type<\/span>:&nbsp;<span class=\"code-snippet__string\">\"dialog\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; action:&nbsp;<span class=\"code-snippet__string\">\"dismiss\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__built_in\">type<\/span>:&nbsp;<span class=\"code-snippet__string\">\"webview\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; action:&nbsp;<span class=\"code-snippet__string\">\"skip\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; -&nbsp;<span class=\"code-snippet__built_in\">type<\/span>:&nbsp;<span class=\"code-snippet__string\">\"crash_dialog\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; action:&nbsp;<span class=\"code-snippet__string\">\"capture_and_report\"<\/span><\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"4\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"5\"><span textstyle=\"\" style=\"font-size: 15px;\">\u914d\u7f6e\u6280\u5de7\uff1a<\/span><\/span><\/strong><span data-nest-level=\"4\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"5\"><span textstyle=\"\" style=\"font-size: 15px;\">\u9996\u6b21\u8fd0\u884c\u65f6\u5efa\u8bae\u5148\u7528\u6700\u5c0f\u914d\u7f6e\uff08\u53ea\u914d\u7f6eappPackage\uff09\u8dd1\u901a\u6d41\u7a0b\uff0c\u786e\u8ba4\u8bbe\u5907\u548cApp\u901a\u4fe1\u6b63\u5e38\u540e\uff0c\u518d\u9010\u6b65\u6dfb\u52a0\u9ed1\u767d\u540d\u5355\u3001\u767b\u5f55\u6001\u7b49\u9ad8\u7ea7\u914d\u7f6e\u3002<\/span><\/span><\/span><\/span><\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">7.3 \u5feb\u901f\u542f\u52a8\u547d\u4ee4<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"apache\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u65b9\u5f0f\u4e00\uff1a\u6700\u5c0f\u5316\u542f\u52a8\uff08\u96f6\u914d\u7f6e\uff0c\u76f4\u63a5\u6307\u5b9a\u5305\u540d\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">java<\/span>&nbsp;-jar appcrawler.jar&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --platform android&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --appPackage com.example.myapp&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --app \/path\/to\/app.apk&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --output .\/reports\/run1\/<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u65b9\u5f0f\u4e8c\uff1a\u4f7f\u7528YAML\u914d\u7f6e\u6587\u4ef6\u542f\u52a8\uff08\u63a8\u8350\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">java<\/span>&nbsp;-jar appcrawler.jar&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --config appcrawler_config.yml&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --platform android&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --output .\/reports\/run2\/<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u65b9\u5f0f\u4e09\uff1a\u65ad\u70b9\u7eed\u8dd1\uff08\u4ece\u4e0a\u6b21\u4e2d\u65ad\u5904\u6062\u590d\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">java<\/span>&nbsp;-jar appcrawler.jar&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --config appcrawler_config.yml&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --resume .\/reports\/run2\/state.json&nbsp;<span class=\"code-snippet__punctuation\">\\<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; --output .\/reports\/run3\/<\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"5\"><br  \/><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u516b<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u5b9e\u6218\u4e8c\uff1a\u8fd0\u884cAppCrawler\u4e0e\u8986\u76d6\u7387\u62a5\u544a\u89e3\u8bfb<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">8.1 \u4e00\u6b21\u5b8c\u6574\u8fd0\u884c\u7684\u65e5\u5fd7\u89e3\u8bfb<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"cs\"><code><span leaf=\"\">$ java -jar appcrawler.jar --config appcrawler_config.yml --output .\/reports\/run1\/<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] AppCrawler v2<span class=\"code-snippet__number\">.1.0<\/span>&nbsp;starting...<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] Platform: Android | App: com.example.myapp<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] Strategy: depth-first | MaxDepth:&nbsp;<span class=\"code-snippet__number\">8<\/span>&nbsp;| MaxSteps:&nbsp;<span class=\"code-snippet__number\">5000<\/span><\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] Connecting to device:&nbsp;<span class=\"code-snippet__number\">8<\/span>a9c5b4e (Pixel&nbsp;<span class=\"code-snippet__number\">6<\/span>, Android&nbsp;<span class=\"code-snippet__number\">13<\/span>)<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] UIAutomator2 service: OK (v2<span class=\"code-snippet__number\">.2.8<\/span>)<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] App launched: com.example.myapp\/.MainActivity<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] Current screen: MainActivity (depth=<span class=\"code-snippet__number\">0<\/span>)<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">INFO<\/span>] Found&nbsp;<span class=\"code-snippet__number\">12<\/span>&nbsp;clickable elements,&nbsp;<span class=\"code-snippet__number\">8<\/span>&nbsp;enabled<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">STEP 001<\/span>] depth=<span class=\"code-snippet__number\">0<\/span>&nbsp;| Activity=MainActivity<\/span><\/code><code><span leaf=\"\">&nbsp; [<span class=\"code-snippet__meta\">CLICK<\/span>] android.widget.Button[id=user_avatar] -&gt; ProfileActivity<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Progress:&nbsp;<span class=\"code-snippet__number\">1<\/span>\/<span class=\"code-snippet__number\">5000<\/span>&nbsp;| Coverage:&nbsp;<span class=\"code-snippet__number\">3.2<\/span>% | Memory:&nbsp;<span class=\"code-snippet__number\">142<\/span>MB<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">STEP 002<\/span>] depth=<span class=\"code-snippet__number\">1<\/span>&nbsp;| Activity=ProfileActivity<\/span><\/code><code><span leaf=\"\">&nbsp; [<span class=\"code-snippet__meta\">CLICK<\/span>] android.widget.LinearLayout[id=settings_btn] -&gt; SettingsActivity<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Progress:&nbsp;<span class=\"code-snippet__number\">2<\/span>\/<span class=\"code-snippet__number\">5000<\/span>&nbsp;| Coverage:&nbsp;<span class=\"code-snippet__number\">6.1<\/span>% | Memory:&nbsp;<span class=\"code-snippet__number\">155<\/span>MB | CPU:&nbsp;<span class=\"code-snippet__number\">12<\/span>%<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">STEP 005<\/span>] depth=<span class=\"code-snippet__number\">3<\/span>&nbsp;| Activity=AccountSecurityActivity<\/span><\/code><code><span leaf=\"\">&nbsp; [<span class=\"code-snippet__meta\">ERROR<\/span>] java.lang.NullPointerException at ProfileManager.java:<span class=\"code-snippet__number\">142<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;[CRASH] Native crash captured | HPROF saved: crash_005.hprof<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;[SCREENSHOT] crash_screenshot_005.png<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;[BACK] Returning to previous activity...<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">STEP 050<\/span>] depth=<span class=\"code-snippet__number\">4<\/span>&nbsp;| Activity=OrderDetailActivity<\/span><\/code><code><span leaf=\"\">&nbsp; [<span class=\"code-snippet__meta\">PERF<\/span>] Memory leak suspected: PSS&nbsp;<span class=\"code-snippet__number\">245<\/span>MB (+<span class=\"code-snippet__number\">15<\/span>MB&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__number\">20<\/span>&nbsp;steps)<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;[WARNING] Memory growing trend detected<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Progress:&nbsp;<span class=\"code-snippet__number\">50<\/span>\/<span class=\"code-snippet__number\">5000<\/span>&nbsp;| Coverage:&nbsp;<span class=\"code-snippet__number\">41.3<\/span>%<\/span><\/code><code><span leaf=\"\">[<span class=\"code-snippet__meta\">STEP 200<\/span>] Summary Report<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Total Steps:&nbsp;<span class=\"code-snippet__number\">200<\/span>&nbsp;| Duration:&nbsp;<span class=\"code-snippet__number\">45<\/span>min<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Activities Found:&nbsp;<span class=\"code-snippet__number\">23<\/span>\/<span class=\"code-snippet__number\">28<\/span>&nbsp;(<span class=\"code-snippet__number\">82.1<\/span>%)<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Fragments Found:&nbsp;<span class=\"code-snippet__number\">15<\/span>\/<span class=\"code-snippet__number\">22<\/span>&nbsp;(<span class=\"code-snippet__number\">68.2<\/span>%)<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Crashes:&nbsp;<span class=\"code-snippet__number\">2<\/span>&nbsp;(<span class=\"code-snippet__number\">1<\/span>&nbsp;Java crash,&nbsp;<span class=\"code-snippet__number\">1<\/span>&nbsp;ANR)<\/span><\/code><code><span leaf=\"\">&nbsp; -&gt; &nbsp;Report saved: .\/reports\/run1\/summary.html<\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><strong data-nest-level=\"5\" data-pm-slice=\"0 0 []\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(123, 12, 0);font-weight: bold;\">\u5173\u952e\u6307\u6807\u89e3\u8bfb\uff1a<\/span><\/span><\/strong><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><span textstyle=\"\" style=\"font-size: 15px;\">\u65e5\u5fd7\u4e2d\u7684\u8986\u76d6\u7387\u662f\u7d2f\u79ef\u8986\u76d6\u7387\uff08\u5df2\u8986\u76d6Activity\u6570\/\u603bActivity\u6570\uff09\uff0c\u6301\u7eed\u89c2\u5bdf\u5b83\u7684\u589e\u957f\u8d8b\u52bf\u3002\u5982\u679c\u67d0\u4e2a\u9636\u6bb5\u8986\u76d6\u7387\u505c\u6ede\u4e0d\u52a8\uff0c\u8bf4\u660e\u904d\u5386\u9677\u5165\u4e86\u67d0\u4e2a\u91cd\u590d\u533a\u57df\uff0c\u9700\u8981\u8c03\u6574\u904d\u5386\u7b56\u7565\u3002<\/span><\/span><\/span><\/span><\/span><\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">8.2 \u8986\u76d6\u7387\u62a5\u544a\u89e3\u8bfb<\/span><\/h3>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u62a5\u544a\u6a21\u5757<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u6838\u5fc3\u5185\u5bb9<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u5173\u952e\u6307\u6807<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6982\u89c8\u4eea\u8868\u76d8<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8fd0\u884c\u65f6\u957f\u3001\u6b65\u6570\u3001\u5d29\u6e83\u6570\u3001ANR\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8986\u76d6Activity 23\/28 = 82.1%<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Activity\u8986\u76d6\u77e9\u9635<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6bcf\u4e2aActivity\u7684\u8bbf\u95ee\u6b21\u6570\u3001\u505c\u7559\u65f6\u957f\u3001\u53d1\u73b0\u7684\u95ee\u9898<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6807\u7ea2=\u672a\u8986\u76d6\uff0c\u7eff=\u5df2\u8986\u76d6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u8bb0\u5f55<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6bcf\u6b21\u5d29\u6e83\u7684\u622a\u56fe\u3001\u5806\u6808\u3001\u5185\u5b58\u5feb\u7167\u6587\u4ef6\u8def\u5f84<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u7c7b\u578b\u3001\u53d1\u751f\u6b65\u9aa4\u3001\u89e6\u53d1\u64cd\u4f5c\u94fe<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u8bb0\u5f55<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u53d1\u751f\u7684trace\u6587\u4ef6\u3001\u963b\u585e\u4e3b\u7ebf\u7a0b\u7684\u64cd\u4f5c<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">trace.txt\u8def\u5f84\u3001\u963b\u585e\u65f6\u957f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6027\u80fd\u8d8b\u52bf\u56fe<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">CPU\/\u5185\u5b58\/FPS\u968f\u65f6\u95f4\u7684\u53d8\u5316\u66f2\u7ebf<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\u6cc4\u6f0f\u53ef\u7591\u70b9\uff08\u6301\u7eed\u4e0a\u5347\u66f2\u7ebf\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u64cd\u4f5c\u8f68\u8ff9\u56fe<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4ee5\u6d41\u7a0b\u56fe\u5f62\u5f0f\u5c55\u793a\u904d\u5386\u7684\u9875\u9762\u8df3\u8f6c\u8def\u5f84<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6df1\u5ea6\u3001\u91cd\u590d\u7387\u3001\u8986\u76d6\u5206\u652f\u6570<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">8.3 Monkey vs \u667a\u80fd\u904d\u5386\u5bf9\u6bd4\u6570\u636e<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u5728\u771f\u5b9e\u9879\u76ee\u4e2d\u7684\u5178\u578b\u5bf9\u6bd4\u7ed3\u679c\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u6307\u6807<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">Monkey\uff0810\u4e07\u6b65\uff09<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">AppCrawler\u667a\u80fd\u904d\u5386\uff085000\u6b65\uff09<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u63d0\u5347<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\uff08Java\u5c42\uff09\u53d1\u73b0\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">3<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">2.3x<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u53d1\u73b0\u6570<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">1<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">5.0x<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5185\u5b58\u6cc4\u6f0f\u7591\u4f3c\u6848\u4f8b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">0<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">2<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">N\/A<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Activity\u8986\u76d6\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">~35%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">82.1%<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">+47.1pp<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5e73\u5747\u904d\u5386\u6df1\u5ea6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">2.1\u5c42<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">5.7\u5c42<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">2.7x<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u53d1\u73b0\u6548\u7387\uff08\u6bcf\u4e07\u6b65\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">0.30<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">14.0<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);font-weight: 700;\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">46.7x<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(255, 41, 65);\">\u6ce8\u610f\uff1a<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(0, 82, 255);\">&#8220;46.7x\u6548\u7387\u63d0\u5347&#8221;<\/span><span textstyle=\"\" style=\"font-size: 15px;\">\u662f\u5355\u4f4d\u6b65\u6570\u4e0b\u7684\u5d29\u6e83\u53d1\u73b0\u6548\u7387\uff0c\u4e0d\u662f\u7edd\u5bf9\u6570\u91cf\u3002\u667a\u80fd\u904d\u5386\u6b65\u6570\u5c11\u4f46\u8986\u76d6\u6df1\uff0cMonkey\u6b65\u6570\u591a\u4f46\u5927\u91cf\u6d6a\u8d39\u5728\u91cd\u590d\u533a\u57df\u3002\u5b9e\u9645\u4f7f\u7528\u4e2d\uff0c\u5efa\u8bae\u667a\u80fd\u904d\u5386\u4e3a\u4e3b\uff08\u8986\u76d6\u4e3b\u8981\u8def\u5f84\uff09\uff0cMonkey\u4f5c\u4e3a\u8865\u5145\uff08\u538b\u529b\u573a\u666f\uff09\u3002<\/span><\/span><\/p>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><br  \/><\/span><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u4e5d<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u5b9e\u6218\u4e09\uff1aPython\u5206\u6790crash\u65e5\u5fd7 + AI\u8f85\u52a9\u6839\u56e0\u63a8\u65ad<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">9.1 \u5d29\u6e83\u65e5\u5fd7\u7684\u81ea\u52a8\u5316\u63d0\u53d6\u4e0e\u5206\u7c7b<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">AppCrawler\u751f\u6210\u7684\u5d29\u6e83\u65e5\u5fd7\u901a\u5e38\u662f\u5206\u6563\u7684\u6587\u672c\u6587\u4ef6\uff0c\u624b\u5de5\u5f52\u7c7b\u8017\u65f6\u4e14\u5bb9\u6613\u9057\u6f0f\u3002\u4ee5\u4e0bPython\u811a\u672c\u5b9e\u73b0\u5d29\u6e83\u65e5\u5fd7\u7684\u5168\u81ea\u52a8\u63d0\u53d6\u3001\u5206\u7c7b\u548c\u53ef\u89c6\u5316\u5206\u6790\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"python\"><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;os<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;re<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;json<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;glob<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">from<\/span>&nbsp;collections&nbsp;<span class=\"code-snippet__keyword\">import<\/span>&nbsp;Counter<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">from<\/span>&nbsp;datetime&nbsp;<span class=\"code-snippet__keyword\">import<\/span>&nbsp;datetime<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">CrashAnalyzer<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"App\u7a33\u5b9a\u6027\u6d4b\u8bd5\u5d29\u6e83\u65e5\u5fd7\u81ea\u52a8\u5206\u6790\u5de5\u5177\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">__init__<\/span>(<span class=\"code-snippet__params\">self, log_dir:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.log_dir = log_dir<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.crashes = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anrs = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">scan_and_parse<\/span>(<span class=\"code-snippet__params\">self<\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u626b\u63cf\u76ee\u5f55\uff0c\u89e3\u6790\u6240\u6709\u5d29\u6e83\u548cANR\u65e5\u5fd7\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; crash_files = glob.glob(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(<span class=\"code-snippet__variable\">self<\/span>.log_dir,&nbsp;<span class=\"code-snippet__string\">\"**\/crash*.txt\"<\/span>), recursive=<span class=\"code-snippet__literal\">True<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; )<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; anr_files = glob.glob(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(<span class=\"code-snippet__variable\">self<\/span>.log_dir,&nbsp;<span class=\"code-snippet__string\">\"**\/anr*.txt\"<\/span>), recursive=<span class=\"code-snippet__literal\">True<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; )<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;fpath&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;crash_files:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; crash =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._parse_crash_file(fpath)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;crash:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.crashes.append(crash)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;fpath&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;anr_files:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; anr =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._parse_anr_file(fpath)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;anr:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anrs.append(anr)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>._generate_summary()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_parse_crash_file<\/span>(<span class=\"code-snippet__params\">self, fpath:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u89e3\u6790\u5355\u4e2a\u5d29\u6e83\u65e5\u5fd7\u6587\u4ef6\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;<span class=\"code-snippet__built_in\">open<\/span>(fpath, encoding=<span class=\"code-snippet__string\">\"utf-8\"<\/span>, errors=<span class=\"code-snippet__string\">\"ignore\"<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content = f.read()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; crash_type =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._classify_crash_type(content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; stack_trace =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._extract_stack_trace(content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; classes = re.findall(<span class=\"code-snippet__string\">r'(com\\.[\\w\\.]+)\\.([\\w\\$]+)'<\/span>, stack_trace)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; classes =&nbsp;<span class=\"code-snippet__built_in\">list<\/span>(<span class=\"code-snippet__built_in\">set<\/span>([c[<span class=\"code-snippet__number\">0<\/span>]&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;c&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;classes]))[:<span class=\"code-snippet__number\">5<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"file\"<\/span>: os.path.basename(fpath),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"type\"<\/span>: crash_type,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"timestamp\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>._extract_timestamp(content),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"exception\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>._extract_exception_name(content),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"message\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>._extract_exception_message(content),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"stack_trace\"<\/span>: stack_trace[:<span class=\"code-snippet__number\">500<\/span>],<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"involved_classes\"<\/span>: classes,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"package\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>._extract_package(content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_classify_crash_type<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u6839\u636e\u5f02\u5e38\u7c7b\u578b\u5206\u7c7b\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"NullPointerException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"NullPointer\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"IndexOutOfBoundsException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"IndexOutOfBounds\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"OutOfMemoryError\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content&nbsp;<span class=\"code-snippet__keyword\">or<\/span>&nbsp;<span class=\"code-snippet__string\">\"OOM\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"OOM\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"IllegalStateException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"IllegalState\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"ClassNotFoundException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"ClassNotFound\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"SecurityException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"Security\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__string\">\"NetworkOnMainThreadException\"<\/span>&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"NetworkOnMainThread\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">\"Unknown\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_extract_stack_trace<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'at (.+?\\.java:\\d+)'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">0<\/span>)&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_extract_exception_name<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'(Exception|Error|Throwable): (.+)'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">1<\/span>)&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"Unknown\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_extract_exception_message<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'(Exception|Error|Throwable): (.+)'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">2<\/span>).strip()&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_extract_timestamp<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">1<\/span>)&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_extract_package<\/span>(<span class=\"code-snippet__params\">self, content:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'com\\.[\\w\\.]+'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">0<\/span>)&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_parse_anr_file<\/span>(<span class=\"code-snippet__params\">self, fpath:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u89e3\u6790ANR\u65e5\u5fd7\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;<span class=\"code-snippet__built_in\">open<\/span>(fpath, encoding=<span class=\"code-snippet__string\">\"utf-8\"<\/span>, errors=<span class=\"code-snippet__string\">\"ignore\"<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content = f.read()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; blocked_thread = re.search(<span class=\"code-snippet__string\">r'\".*\" \\(tid=\\d+\\)'<\/span>, content)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"file\"<\/span>: os.path.basename(fpath),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"type\"<\/span>:&nbsp;<span class=\"code-snippet__string\">\"ANR\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"blocked_thread\"<\/span>: blocked_thread.group(<span class=\"code-snippet__number\">0<\/span>)&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;blocked_thread&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"trace\"<\/span>: content[:<span class=\"code-snippet__number\">600<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_generate_summary<\/span>(<span class=\"code-snippet__params\">self<\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; crash_types = Counter([c[<span class=\"code-snippet__string\">\"type\"<\/span>]&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;c&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.crashes])<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"total_crashes\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(<span class=\"code-snippet__variable\">self<\/span>.crashes),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"total_anrs\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(<span class=\"code-snippet__variable\">self<\/span>.anrs),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"crash_by_type\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>(crash_types),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"crash_files\"<\/span>: [c[<span class=\"code-snippet__string\">\"file\"<\/span>]&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;c&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.crashes],<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"anr_files\"<\/span>: [a[<span class=\"code-snippet__string\">\"file\"<\/span>]&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;a&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anrs],<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"top_exception\"<\/span>: crash_types.most_common(<span class=\"code-snippet__number\">1<\/span>)[<span class=\"code-snippet__number\">0<\/span>]&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;crash_types&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;(<span class=\"code-snippet__string\">\"N\/A\"<\/span>,&nbsp;<span class=\"code-snippet__number\">0<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">export_json<\/span>(<span class=\"code-snippet__params\">self, output_path:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; data = {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"generated_at\"<\/span>: datetime.now().isoformat(),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"crashes\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>.crashes,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"anrs\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anrs,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"summary\"<\/span>:&nbsp;<span class=\"code-snippet__variable\">self<\/span>.scan_and_parse()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;<span class=\"code-snippet__built_in\">open<\/span>(output_path,&nbsp;<span class=\"code-snippet__string\">\"w\"<\/span>, encoding=<span class=\"code-snippet__string\">\"utf-8\"<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; json.dump(data, f, ensure_ascii=<span class=\"code-snippet__literal\">False<\/span>, indent=<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Exported to&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{output_path}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">if<\/span>&nbsp;__name__ ==&nbsp;<span class=\"code-snippet__string\">\"__main__\"<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; analyzer = CrashAnalyzer(<span class=\"code-snippet__string\">\".\/reports\/appcrawler\/run1\/crashes\/\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; summary = analyzer.scan_and_parse()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"\\nTotal Crashes:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{summary[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'total_crashes'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Total ANRs: &nbsp;&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{summary[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'total_anrs'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Top Exception:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{summary[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'top_exception'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; analyzer.export_json(<span class=\"code-snippet__string\">\".\/reports\/crash_analysis.json\"<\/span>)<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">9.2 AI\u8f85\u52a9\u6839\u56e0\u5206\u6790\uff1a\u5d29\u6e83\u81ea\u52a8\u5f52\u56e0<\/span><\/h3>\n<section style=\"text-align: center;\" nodeleaf=\"\" data-nest-level=\"2\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-ratio=\"0.696969696969697\" data-s=\"300,640\" data-type=\"png\" data-w=\"693\" type=\"block\" data-imgfileid=\"100000517\" data-aistatus=\"1\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1LbicU3ej5w3iby0icoBwNBKdqbmmORtocuXO91mibtt7BvtSl4WJnREehicua8qUYwRAs63Gqy304T8nFVIDtnwKxBDSpGAvdRnhxg\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<section style=\"text-align: center;\" data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span style=\"color: rgb(136, 136, 136);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-nest-level=\"6\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"7\">AI\u8f85\u52a9\u5d29\u6e83\u6839\u56e0\u5206\u6790\u5de5\u4f5c\u6d41<\/span><\/span><\/span><\/span><\/span><\/section>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"python\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># ai_crash_analyzer.py<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;json<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;os<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;urllib.request<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;urllib.error<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">analyze_crash_with_ai<\/span>(<span class=\"code-snippet__params\">crash_data:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">dict<\/span><\/span><span class=\"code-snippet__params\">, api_key:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5c06\u5d29\u6e83\u6570\u636e\u53d1\u9001\u7ed9LLM\u8fdb\u884c\u6839\u56e0\u5206\u6790<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u652f\u6301\uff1aOpenAI GPT-4 \/ \u667a\u8c31GLM \/ \u963f\u91cc\u901a\u4e49\u5343\u95ee<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \"\"\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; prompt =&nbsp;<span class=\"code-snippet__string\">f\"\"\"\u4f60\u662f\u4e00\u4f4d\u8d44\u6df1Android\u6d4b\u8bd5\u5de5\u7a0b\u5e08\u548c\u79fb\u52a8\u7aef\u5f00\u53d1\u4e13\u5bb6\u3002\u8bf7\u5206\u6790\u4ee5\u4e0b\u5d29\u6e83\u4fe1\u606f\uff0c\u5e76\u8f93\u51fa\u7ed3\u6784\u5316\u7684\u7f3a\u9677\u62a5\u544a\u3002<\/span><\/span><\/code><code><span leaf=\"\">## \u5d29\u6e83\u57fa\u672c\u4fe1\u606f<\/span><\/code><code><span leaf=\"\">- \u5d29\u6e83\u7c7b\u578b\uff1a<span class=\"code-snippet__subst\">{crash_data.get(<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'type'<\/span><\/span><span class=\"code-snippet__subst\">,&nbsp;<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'Unknown'<\/span><\/span><span class=\"code-snippet__subst\">)}<\/span><\/span><\/code><code><span leaf=\"\">- \u5f02\u5e38\u540d\u79f0\uff1a<span class=\"code-snippet__subst\">{crash_data.get(<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'exception'<\/span><\/span><span class=\"code-snippet__subst\">,&nbsp;<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'Unknown'<\/span><\/span><span class=\"code-snippet__subst\">)}<\/span><\/span><\/code><code><span leaf=\"\">- \u5f02\u5e38\u4fe1\u606f\uff1a<span class=\"code-snippet__subst\">{crash_data.get(<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'message'<\/span><\/span><span class=\"code-snippet__subst\">,&nbsp;<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'N\/A'<\/span><\/span><span class=\"code-snippet__subst\">)}<\/span><\/span><\/code><code><span leaf=\"\">- \u76f8\u5173\u7c7b\uff1a<span class=\"code-snippet__subst\">{<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">', '<\/span><\/span><span class=\"code-snippet__subst\">.join(crash_data.get(<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'involved_classes'<\/span><\/span><span class=\"code-snippet__subst\">, []))}<\/span><\/span><\/code><code><span leaf=\"\">## \u5806\u6808\u8ddf\u8e2a<\/span><\/code><code><span leaf=\"\">```<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__subst\">{crash_data.get(<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'stack_trace'<\/span><\/span><span class=\"code-snippet__subst\">,&nbsp;<\/span><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'N\/A'<\/span><\/span><span class=\"code-snippet__subst\">)}<\/span><\/span><\/code><code><span leaf=\"\">```<\/span><\/code><code><span leaf=\"\">## \u8bf7\u6309\u4ee5\u4e0b\u683c\u5f0f\u8f93\u51fa\u5206\u6790\u62a5\u544a\uff1a<\/span><\/code><code><span leaf=\"\">### 1. \u6839\u56e0\u5206\u6790\uff08\u4e0d\u8d85\u8fc73\u53e5\u8bdd\uff09<\/span><\/code><code><span leaf=\"\">### 2. \u89e6\u53d1\u6761\u4ef6<\/span><\/code><code><span leaf=\"\">### 3. \u4fee\u590d\u5efa\u8bae\uff08\u81f3\u5c112\u6761\uff09<\/span><\/code><code><span leaf=\"\">### 4. \u6d4b\u8bd5\u8986\u76d6\u5efa\u8bae<\/span><\/code><code><span leaf=\"\">### 5. \u5f71\u54cd\u8bc4\u4f30\uff08\u4e25\u91cd\u7a0b\u5ea6\uff1a\u9ad8\/\u4e2d\/\u4f4e\uff09<\/span><\/code><code><span leaf=\"\">\"\"\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u4ee5\u667a\u8c31GLM\u4e3a\u4f8b<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; url =&nbsp;<span class=\"code-snippet__string\">\"https:\/\/open.bigmodel.cn\/api\/paas\/v4\/chat\/completions\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; headers = {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"Authorization\"<\/span>:&nbsp;<span class=\"code-snippet__string\">f\"Bearer&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{api_key}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"Content-Type\"<\/span>:&nbsp;<span class=\"code-snippet__string\">\"application\/json\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; payload = {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"model\"<\/span>:&nbsp;<span class=\"code-snippet__string\">\"glm-4-flash\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"messages\"<\/span>: [{<span class=\"code-snippet__string\">\"role\"<\/span>:&nbsp;<span class=\"code-snippet__string\">\"user\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"content\"<\/span>: prompt}],<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"temperature\"<\/span>:&nbsp;<span class=\"code-snippet__number\">0.3<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"max_tokens\"<\/span>:&nbsp;<span class=\"code-snippet__number\">800<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; req = urllib.request.Request(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; url, data=json.dumps(payload).encode(<span class=\"code-snippet__string\">\"utf-8\"<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; headers=headers, method=<span class=\"code-snippet__string\">\"POST\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; )<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">try<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;urllib.request.urlopen(req, timeout=<span class=\"code-snippet__number\">30<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;resp:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result = json.loads(resp.read().decode(<span class=\"code-snippet__string\">\"utf-8\"<\/span>))<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;result[<span class=\"code-snippet__string\">\"choices\"<\/span>][<span class=\"code-snippet__number\">0<\/span>][<span class=\"code-snippet__string\">\"message\"<\/span>][<span class=\"code-snippet__string\">\"content\"<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">except<\/span>&nbsp;Exception&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;e:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__string\">f\"[Error]&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__built_in\">str<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">(e)}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">if<\/span>&nbsp;__name__ ==&nbsp;<span class=\"code-snippet__string\">\"__main__\"<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; api_key = os.environ.get(<span class=\"code-snippet__string\">\"GLM_API_KEY\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"YOUR_API_KEY_HERE\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\"># \u52a0\u8f7d\u5d29\u6e83\u6570\u636e\u5e76\u5206\u6790<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;<span class=\"code-snippet__built_in\">open<\/span>(<span class=\"code-snippet__string\">\".\/reports\/crash_analysis.json\"<\/span>, encoding=<span class=\"code-snippet__string\">\"utf-8\"<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; data = json.load(f)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;i, crash&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__built_in\">enumerate<\/span>(data.get(<span class=\"code-snippet__string\">\"crashes\"<\/span>, [])):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Analyzing&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{i+<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">1<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{crash[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'exception'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">...\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; analysis = analyze_crash_with_ai(crash, api_key)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(analysis)<\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><br  \/><\/span><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u5341<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u8fdb\u9636\uff1aANR\u76d1\u63a7\u4e0e\u5185\u5b58\u6cc4\u6f0f\u667a\u80fd\u68c0\u6d4b<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">10.1 ANR\u7684\u667a\u80fd\u68c0\u6d4b\u65b9\u6848<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">ANR\u662fApp\u7a33\u5b9a\u6027\u6d4b\u8bd5\u4e2d\u6700\u5bb9\u6613\u88ab\u5ffd\u7565\u3001\u4f46\u5bf9\u7528\u6237\u4f53\u9a8c\u5f71\u54cd\u6700\u5927\u7684\u7f3a\u9677\u4e4b\u4e00\u3002\u667a\u80fd\u904d\u5386\u6846\u67b6\u53ef\u4ee5\u5728\u904d\u5386\u8fc7\u7a0b\u4e2d\u81ea\u52a8\u76d1\u63a7ANR\u4fe1\u53f7\u3002<\/span><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">ANR\u76d1\u63a7\u7684\u6838\u5fc3\u673a\u5236\uff1a<\/span><\/strong><\/p>\n<ul style=\"box-sizing: border-box;margin: 8px 0px 10px 24px;padding: 0px;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\/data\/anr\/<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u76ee\u5f55\uff1aAndroid\u7cfb\u7edf\u53d1\u751fANR\u65f6\uff0c\u4f1a\u5728\u6b64\u76ee\u5f55\u751f\u6210<\/span><code style=\"box-sizing: border-box;margin: 0px;padding: 2px 6px;background: rgb(244, 244, 244);border: 1px solid rgb(224, 224, 224);border-radius: 4px;font-family: Consolas, &quot;Courier New&quot;, monospace;font-size: 14px;color: rgb(192, 57, 43);\" data-nest-level=\"5\"><span leaf=\"\" data-nest-level=\"6\">trace.txt<\/span><\/code><span leaf=\"\" data-nest-level=\"5\">\u6587\u4ef6<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">Watchdog\u673a\u5236<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aAndroid\u7cfb\u7edf\u7ea7\u770b\u95e8\u72d7\uff0c\u68c0\u6d4b\u4e3b\u7ebf\u7a0b\u963b\u585e\u8d85\u8fc7\u9608\u503c\uff08\u901a\u5e385\u79d2\uff09<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u667a\u80fd\u904d\u5386\u76d1\u63a7<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aAppCrawler\/Maxim\u5728\u904d\u5386\u8fc7\u7a0b\u4e2d\u5b9a\u671f\u68c0\u67e5\u8bbe\u5907\u78c1\u76d8\u5199\u5165\u901f\u5ea6\u3001App\u54cd\u5e94\u65f6\u95f4\u3001\u4e3b\u7ebf\u7a0b\u5806\u6808<\/span><\/section>\n<\/li>\n<\/ul>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"python\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># anr_monitor.py - Android ANR\u5b9e\u65f6\u76d1\u63a7\u811a\u672c<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;os<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;time<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;subprocess<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;re<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;threading<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">from<\/span>&nbsp;datetime&nbsp;<span class=\"code-snippet__keyword\">import<\/span>&nbsp;datetime<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">ANRMonitor<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"Android ANR\u5b9e\u65f6\u76d1\u63a7\u5668\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">__init__<\/span>(<span class=\"code-snippet__params\">self, device_id:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span><span class=\"code-snippet__params\">, app_package:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span><span class=\"code-snippet__params\">, interval:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">float<\/span><\/span><span class=\"code-snippet__params\">&nbsp;=&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__number\">2.0<\/span><\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.device_id = device_id<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.app_package = app_package<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.interval = interval<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anr_detected = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.running =&nbsp;<span class=\"code-snippet__literal\">False<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">_exec<\/span>(<span class=\"code-snippet__params\">self, cmd:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">str<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; result = subprocess.run(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">f\"adb -s&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{self.device_id}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;shell&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{cmd}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shell=<span class=\"code-snippet__literal\">True<\/span>, capture_output=<span class=\"code-snippet__literal\">True<\/span>, text=<span class=\"code-snippet__literal\">True<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; )<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;result.stdout<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">get_anr_traces<\/span>(<span class=\"code-snippet__params\">self<\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">list<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u68c0\u67e5\/data\/anr\/\u76ee\u5f55\u4e0b\u7684\u6700\u65b0ANR trace\u6587\u4ef6\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; files =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._<span class=\"code-snippet__built_in\">exec<\/span>(<span class=\"code-snippet__string\">\"ls -lt \/data\/anr\/ | head -10\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; traces = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;line&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;files.split(<span class=\"code-snippet__string\">\"\\n\"<\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts = line.split()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(parts) &gt;=&nbsp;<span class=\"code-snippet__number\">8<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fname = parts[-<span class=\"code-snippet__number\">1<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;fname.startswith(<span class=\"code-snippet__string\">\"trace_\"<\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; traces.append(fname)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; anr_details = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;fname&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;traces[:<span class=\"code-snippet__number\">3<\/span>]:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content =&nbsp;<span class=\"code-snippet__variable\">self<\/span>._<span class=\"code-snippet__built_in\">exec<\/span>(<span class=\"code-snippet__string\">f\"cat \/data\/anr\/<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{fname}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.app_package&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;content:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; anr_details.append({<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"file\"<\/span>: fname,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"timestamp\"<\/span>: datetime.now().isoformat(),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"content\"<\/span>: content[:<span class=\"code-snippet__number\">2000<\/span>]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;anr_details<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">monitor_loop<\/span>(<span class=\"code-snippet__params\">self<\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u76d1\u63a7\u4e3b\u5faa\u73af\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">while<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.running:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">try<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; anrs =&nbsp;<span class=\"code-snippet__variable\">self<\/span>.get_anr_traces()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;anr&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;anrs:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"[ANR DETECTED]&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{anr[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'file'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anr_detected.append(anr)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace_file =&nbsp;<span class=\"code-snippet__string\">f\".\/reports\/anr_<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__built_in\">len<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">(self.anr_detected)}<\/span><\/span><span class=\"code-snippet__string\">.txt\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">with<\/span>&nbsp;<span class=\"code-snippet__built_in\">open<\/span>(trace_file,&nbsp;<span class=\"code-snippet__string\">\"w\"<\/span>, encoding=<span class=\"code-snippet__string\">\"utf-8\"<\/span>)&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f.write(anr[<span class=\"code-snippet__string\">\"content\"<\/span>])<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">except<\/span>&nbsp;Exception&nbsp;<span class=\"code-snippet__keyword\">as<\/span>&nbsp;e:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"[Monitor Error]&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{e}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; time.sleep(<span class=\"code-snippet__variable\">self<\/span>.interval)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">start<\/span>(<span class=\"code-snippet__params\">self<\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.running =&nbsp;<span class=\"code-snippet__literal\">True<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.thread = threading.Thread(target=<span class=\"code-snippet__variable\">self<\/span>.monitor_loop, daemon=<span class=\"code-snippet__literal\">True<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.thread.start()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"ANR Monitor started (interval:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{self.interval}<\/span><\/span><span class=\"code-snippet__string\">s)\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">stop<\/span>(<span class=\"code-snippet__params\">self<\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.running =&nbsp;<span class=\"code-snippet__literal\">False<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Total ANRs detected:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__built_in\">len<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">(self.anr_detected)}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.anr_detected<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">if<\/span>&nbsp;__name__ ==&nbsp;<span class=\"code-snippet__string\">\"__main__\"<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; monitor = ANRMonitor(<span class=\"code-snippet__string\">\"8a9c5b4e\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp\"<\/span>,&nbsp;<span class=\"code-snippet__number\">3.0<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; monitor.start()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; time.sleep(<span class=\"code-snippet__number\">3600<\/span>) &nbsp;<span class=\"code-snippet__comment\"># \u8fd0\u884c1\u5c0f\u65f6<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; anrs = monitor.stop()<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">10.2 \u5185\u5b58\u6cc4\u6f0f\u7684\u6e10\u8fdb\u5f0f\u68c0\u6d4b<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u5185\u5b58\u6cc4\u6f0f\u662fANR\u7684\u91cd\u8981\u8bf1\u56e0\u4e4b\u4e00\uff0c\u667a\u80fd\u904d\u5386\u7684\u4f18\u52bf\u5728\u4e8e<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u8de8\u9875\u9762\u3001\u957f\u65f6\u95f4\u8fd0\u884c<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\uff0c\u5929\u7136\u9002\u5408\u6355\u6349\u6e10\u8fdb\u5f0f\u5185\u5b58\u589e\u957f\u3002<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"python\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># memory_leak_detector.py<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;subprocess<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;time<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;re<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">MemoryLeakDetector<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u5185\u5b58\u6cc4\u6f0f\u68c0\u6d4b\u5668\uff1a\u76d1\u63a7PSS\u5185\u5b58\u53d8\u5316\u8d8b\u52bf\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">__init__<\/span>(<span class=\"code-snippet__params\">self, device_id:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span><span class=\"code-snippet__params\">, app_package:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">str<\/span><\/span>):<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.device_id = device_id<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.app_package = app_package<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.samples = []<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">get_memory_info<\/span>(<span class=\"code-snippet__params\">self<\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u83b7\u53d6App\u5185\u5b58\u4fe1\u606f\uff08PSS = Proportional Set Size\uff09\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; output = subprocess.run(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">f\"adb -s&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{self.device_id}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;shell dumpsys meminfo&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{self.app_package}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shell=<span class=\"code-snippet__literal\">True<\/span>, capture_output=<span class=\"code-snippet__literal\">True<\/span>, text=<span class=\"code-snippet__literal\">True<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; ).stdout<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; mem_info = {}<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">match<\/span>&nbsp;= re.search(<span class=\"code-snippet__string\">r'TOTAL\\s+(\\d+)'<\/span>, output)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__keyword\">match<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mem_info[<span class=\"code-snippet__string\">\"pss_mb\"<\/span>] =&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(<span class=\"code-snippet__built_in\">int<\/span>(<span class=\"code-snippet__keyword\">match<\/span>.group(<span class=\"code-snippet__number\">1<\/span>)) \/&nbsp;<span class=\"code-snippet__number\">1024<\/span>,&nbsp;<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; java_match = re.search(<span class=\"code-snippet__string\">r'Java Heap:\\s+(\\d+)'<\/span>, output)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; native_match = re.search(<span class=\"code-snippet__string\">r'Native Heap:\\s+(\\d+)'<\/span>, output)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;java_match:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mem_info[<span class=\"code-snippet__string\">\"java_heap_mb\"<\/span>] =&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(<span class=\"code-snippet__built_in\">int<\/span>(java_match.group(<span class=\"code-snippet__number\">1<\/span>)) \/&nbsp;<span class=\"code-snippet__number\">1024<\/span>,&nbsp;<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;native_match:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mem_info[<span class=\"code-snippet__string\">\"native_heap_mb\"<\/span>] =&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(<span class=\"code-snippet__built_in\">int<\/span>(native_match.group(<span class=\"code-snippet__number\">1<\/span>)) \/&nbsp;<span class=\"code-snippet__number\">1024<\/span>,&nbsp;<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;mem_info<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">run_session<\/span>(<span class=\"code-snippet__params\">self, duration_sec:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">int<\/span><\/span><span class=\"code-snippet__params\">&nbsp;=&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__number\">1800<\/span><\/span><span class=\"code-snippet__params\">, interval_sec:&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__built_in\">int<\/span><\/span><span class=\"code-snippet__params\">&nbsp;=&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__number\">10<\/span><\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u8fd0\u884c\u5185\u5b58\u76d1\u63a7\u4f1a\u8bdd\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; start_time = time.time()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; end_time = start_time + duration_sec<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Memory monitoring started for&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{duration_sec}<\/span><\/span><span class=\"code-snippet__string\">s...\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'Time'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">10<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'PSS(MB)'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">12<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'JavaHeap(MB)'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">15<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'NativeHeap(MB)'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">15<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">\"-\"<\/span>&nbsp;*&nbsp;<span class=\"code-snippet__number\">55<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">while<\/span>&nbsp;time.time() &lt; end_time:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mem =&nbsp;<span class=\"code-snippet__variable\">self<\/span>.get_memory_info()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; timestamp = time.strftime(<span class=\"code-snippet__string\">\"%H:%M:%S\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pss = mem.get(<span class=\"code-snippet__string\">\"pss_mb\"<\/span>,&nbsp;<span class=\"code-snippet__number\">0<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java = mem.get(<span class=\"code-snippet__string\">\"java_heap_mb\"<\/span>,&nbsp;<span class=\"code-snippet__number\">0<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; native = mem.get(<span class=\"code-snippet__string\">\"native_heap_mb\"<\/span>,&nbsp;<span class=\"code-snippet__number\">0<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">self<\/span>.samples.append({<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"timestamp\"<\/span>: timestamp,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"time_sec\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">int<\/span>(time.time() - start_time),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"pss_mb\"<\/span>: pss,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"java_heap_mb\"<\/span>: java,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"native_heap_mb\"<\/span>: native<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{timestamp:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">10<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{pss:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">12<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{java:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">15<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{native:&lt;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">15<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; time.sleep(interval_sec)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.analyze_trend()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">def<\/span>&nbsp;<span class=\"code-snippet__title\">analyze_trend<\/span>(<span class=\"code-snippet__params\">self<\/span>) -&gt;&nbsp;<span class=\"code-snippet__built_in\">dict<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"\"\"\u5206\u6790\u5185\u5b58\u589e\u957f\u8d8b\u52bf\uff0c\u68c0\u6d4b\u6cc4\u6f0f\"\"\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(<span class=\"code-snippet__variable\">self<\/span>.samples) &lt;&nbsp;<span class=\"code-snippet__number\">5<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{<span class=\"code-snippet__string\">\"leak_suspected\"<\/span>:&nbsp;<span class=\"code-snippet__literal\">False<\/span>,&nbsp;<span class=\"code-snippet__string\">\"reason\"<\/span>:&nbsp;<span class=\"code-snippet__string\">\"\u6837\u672c\u4e0d\u8db3\"<\/span>}<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; pss_values = [s[<span class=\"code-snippet__string\">\"pss_mb\"<\/span>]&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;s&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__variable\">self<\/span>.samples]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; first_half_avg =&nbsp;<span class=\"code-snippet__built_in\">sum<\/span>(pss_values[:<span class=\"code-snippet__built_in\">len<\/span>(pss_values)\/\/<span class=\"code-snippet__number\">2<\/span>]) \/ (<span class=\"code-snippet__built_in\">len<\/span>(pss_values)\/\/<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; second_half_avg =&nbsp;<span class=\"code-snippet__built_in\">sum<\/span>(pss_values[<span class=\"code-snippet__built_in\">len<\/span>(pss_values)\/\/<span class=\"code-snippet__number\">2<\/span>:]) \/ (<span class=\"code-snippet__built_in\">len<\/span>(pss_values) -&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(pss_values)\/\/<span class=\"code-snippet__number\">2<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; growth_pct = (second_half_avg - first_half_avg) \/ first_half_avg *&nbsp;<span class=\"code-snippet__number\">100<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"samples\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">len<\/span>(<span class=\"code-snippet__variable\">self<\/span>.samples),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"first_half_avg_pss_mb\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(first_half_avg,&nbsp;<span class=\"code-snippet__number\">2<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"second_half_avg_pss_mb\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(second_half_avg,&nbsp;<span class=\"code-snippet__number\">2<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"growth_pct\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">round<\/span>(growth_pct,&nbsp;<span class=\"code-snippet__number\">2<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"leak_suspected\"<\/span>: growth_pct &gt;&nbsp;<span class=\"code-snippet__number\">10<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"max_pss_mb\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">max<\/span>(pss_values),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"min_pss_mb\"<\/span>:&nbsp;<span class=\"code-snippet__built_in\">min<\/span>(pss_values),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"recommendation\"<\/span>: (<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">f\"\u68c0\u6d4b\u5230\u5185\u5b58\u589e\u957f&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{growth_pct:<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__number\">.1<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">f}<\/span><\/span><span class=\"code-snippet__string\">%\uff0c\u5efa\u8bae\u901a\u8fc7 heap dump \u8fdb\u4e00\u6b65\u5206\u6790\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;growth_pct &gt;&nbsp;<span class=\"code-snippet__number\">10<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;<span class=\"code-snippet__string\">\"\u5185\u5b58\u589e\u957f\u5728\u6b63\u5e38\u8303\u56f4\u5185\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">if<\/span>&nbsp;__name__ ==&nbsp;<span class=\"code-snippet__string\">\"__main__\"<\/span>:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; detector = MemoryLeakDetector(<span class=\"code-snippet__string\">\"8a9c5b4e\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"com.example.myapp\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; result = detector.run_session(duration_sec=<span class=\"code-snippet__number\">1800<\/span>, interval_sec=<span class=\"code-snippet__number\">10<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"\\nLeak suspected:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{result[<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'leak_suspected'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">]}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">f\"Recommendation:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">{result.get(<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'recommendation'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">,&nbsp;<\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\"><span class=\"code-snippet__string\">'N\/A'<\/span><\/span><\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">)}<\/span><\/span><span class=\"code-snippet__string\">\"<\/span>)<\/span><\/code><\/pre>\n<\/section>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><br  \/><\/span><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u5341\u4e00<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">iOS\u4e0e\u9e3f\u8499\u7684\u667a\u80fd\u904d\u5386\u65b9\u6848<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">11.1 iOS\uff1aSwift Monkey + \u667a\u80fd\u589e\u5f3a<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 2em;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">iOS\u7aef\u6ca1\u6709\u50cfAppCrawler\u90a3\u6837\u6210\u719f\u7684\u667a\u80fd\u904d\u5386\u5de5\u5177\uff0c\u76ee\u524d\u6700\u53ef\u884c\u7684\u65b9\u6848\u662f\u5728<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Swift Monkey<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">\u57fa\u7840\u4e0a\u81ea\u7814\u9875\u9762\u611f\u77e5\u80fd\u529b\u3002<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"swift\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ SwiftSmartMonkey.swift - \u667a\u80fd\u589e\u5f3a\u7248<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">SwiftSmartMonkey<\/span>:&nbsp;<span class=\"code-snippet__title\">NSObject<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">weak<\/span>&nbsp;<span class=\"code-snippet__keyword\">var<\/span>&nbsp;application:&nbsp;<span class=\"code-snippet__type\">XCUIApplication<\/span>!<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">var<\/span>&nbsp;visitedScreens:&nbsp;<span class=\"code-snippet__type\">Set<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;[]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">var<\/span>&nbsp;screenDepth:&nbsp;<span class=\"code-snippet__type\">Int<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__number\">0<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u9875\u9762\u7279\u5f81\u63d0\u53d6\uff1a\u7528\u4e8e\u8bc6\u522b\u5f53\u524d\u9875\u9762\u662f\u5426\u5df2\u8bbf\u95ee\u8fc7<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">func<\/span>&nbsp;<span class=\"code-snippet__title\">currentScreenSignature<\/span>() -&gt;&nbsp;<span class=\"code-snippet__type\">String<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;elements&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;application.descendants(matching: .any)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">var<\/span>&nbsp;identifiers: [<span class=\"code-snippet__type\">String<\/span>]&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;[]<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;i&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;<span class=\"code-snippet__number\">0<\/span><span class=\"code-snippet__operator\">..<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;(() -&gt;&nbsp;<span class=\"code-snippet__type\">Void<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;signature&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;currentScreenSignature()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;visitedScreens.contains(signature) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5df2\u8bbf\u95ee\u8fc7\u7684\u9875\u9762\uff1a\u4f18\u5148\u70b9\u51fb\u672a\u70b9\u51fb\u7684\u5143\u7d20<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{ [<span class=\"code-snippet__keyword\">weak<\/span>&nbsp;<span class=\"code-snippet__keyword\">self<\/span>]&nbsp;<span class=\"code-snippet__keyword\">in<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">self<\/span><span class=\"code-snippet__operator\">?<\/span>.clickDeepestUnvisitedElement()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;<span class=\"code-snippet__keyword\">else<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u65b0\u9875\u9762\uff1a\u8bb0\u5f55\u5e76\u5168\u9762\u63a2\u7d22<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; visitedScreens.insert(signature)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;{ [<span class=\"code-snippet__keyword\">weak<\/span>&nbsp;<span class=\"code-snippet__keyword\">self<\/span>]&nbsp;<span class=\"code-snippet__keyword\">in<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">self<\/span><span class=\"code-snippet__operator\">?<\/span>.exploreAllElements()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">func<\/span>&nbsp;<span class=\"code-snippet__title\">clickDeepestUnvisitedElement<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;tables&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;application.descendants(matching: .table)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;cell&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;tables.cells.allElementsBoundByIndex {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cell.tap()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; application.navigationBars.buttons.firstMatch.tap()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__keyword\">func<\/span>&nbsp;<span class=\"code-snippet__title\">exploreAllElements<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;buttons&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;application.buttons.allElementsBoundByIndex<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;button&nbsp;<span class=\"code-snippet__keyword\">in<\/span>&nbsp;buttons {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;button.isHittable {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; button.tap()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">Thread<\/span>.sleep(forTimeInterval:&nbsp;<span class=\"code-snippet__number\">0.5<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">func<\/span>&nbsp;<span class=\"code-snippet__title\">runSmart<\/span>(<span class=\"code-snippet__params\">steps<\/span>:&nbsp;<span class=\"code-snippet__type\">Int<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__number\">5000<\/span>,&nbsp;<span class=\"code-snippet__params\">maxDepth<\/span>:&nbsp;<span class=\"code-snippet__type\">Int<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__number\">8<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">var<\/span>&nbsp;stepCount&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__number\">0<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">while<\/span>&nbsp;stepCount&nbsp;<span class=\"code-snippet__operator\">&lt;<\/span>&nbsp;steps&nbsp;<span class=\"code-snippet__operator\">&amp;&amp;<\/span>&nbsp;screenDepth&nbsp;<span class=\"code-snippet__operator\">&lt;<\/span>&nbsp;maxDepth {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">let<\/span>&nbsp;action&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;smartNextAction()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; action()<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">Thread<\/span>.sleep(forTimeInterval:&nbsp;<span class=\"code-snippet__number\">0.3<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stepCount&nbsp;<span class=\"code-snippet__operator\">+=<\/span>&nbsp;<span class=\"code-snippet__number\">1<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;application.navigationBars.count&nbsp;<span class=\"code-snippet__operator\">&gt;<\/span>&nbsp;<span class=\"code-snippet__number\">0<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; screenDepth&nbsp;<span class=\"code-snippet__operator\">+=<\/span>&nbsp;<span class=\"code-snippet__number\">1<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">print<\/span>(<span class=\"code-snippet__string\">\"Smart traversal:&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">\\(stepCount)<\/span><\/span><span class=\"code-snippet__string\">&nbsp;steps,&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">\\(visitedScreens.count)<\/span><\/span><span class=\"code-snippet__string\">&nbsp;screens\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">11.2 \u9e3f\u8499HarmonyOS\uff1aHypium\u904d\u5386 + Wukong<\/span><\/h3>\n<p style=\"box-sizing: border-box;margin: 10px 0px;padding: 0px;color: rgb(68, 68, 68);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">\u9e3f\u8499\u7cfb\u7edf\u7684\u667a\u80fd\u904d\u5386\u76ee\u524d\u5904\u4e8e\u8d77\u6b65\u9636\u6bb5\uff0c\u63a8\u8350&#8221;<\/span><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">Hypium\u529f\u80fd\u904d\u5386 + Wukong\u538b\u529b\u8865\u6d4b<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\">&#8220;\u7684\u7ec4\u5408\u65b9\u6848\uff1a<\/span><\/p>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">\u7ef4\u5ea6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">Hypium\u904d\u5386<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(214, 168, 65);\">Wukong\u538b\u529b\u6d4b\u8bd5<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5b9a\u4f4d<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u57fa\u4e8eArkTS\u7684\u529f\u80fd\u904d\u5386<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u7cfb\u7edf\u7ea7\u968f\u673a\u4e8b\u4ef6\u6ce8\u5165<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8986\u76d6\u7387<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9ad8\uff08\u53ef\u7cbe\u786e\u5230\u7ec4\u4ef6\u7ea7\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e2d\uff08\u968f\u673a\u8986\u76d6\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u767b\u5f55\u6001<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u652f\u6301\uff08AppStorage\u6ce8\u5165\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e0d\u652f\u6301<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5d29\u6e83\u76d1\u63a7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">hilog\u81ea\u52a8\u91c7\u96c6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">hilog\u81ea\u52a8\u91c7\u96c6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u68c0\u6d4b<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u914d\u7f6eWatchdog<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u4e0d\u652f\u6301<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"javascript\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ Hypium\u904d\u5386\u793a\u4f8b - ArkTS<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;{ describe, it, expect }&nbsp;<span class=\"code-snippet__keyword\">from<\/span>&nbsp;<span class=\"code-snippet__string\">'@ohs\/hypium'<\/span>;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;{&nbsp;<span class=\"code-snippet__title\">Driver<\/span>,&nbsp;<span class=\"code-snippet__variable\">ON<\/span>&nbsp;}&nbsp;<span class=\"code-snippet__keyword\">from<\/span>&nbsp;<span class=\"code-snippet__string\">'@ohos.UiTest'<\/span>;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">export<\/span>&nbsp;<span class=\"code-snippet__keyword\">default<\/span>&nbsp;<span class=\"code-snippet__keyword\">function<\/span>&nbsp;<span class=\"code-snippet__title\">stabilityTest<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__title\">describe<\/span>(<span class=\"code-snippet__string\">'StabilityTest'<\/span>,&nbsp;<span class=\"code-snippet__function\">() =&gt;<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">it<\/span>(<span class=\"code-snippet__string\">'smartTraversal'<\/span>,&nbsp;<span class=\"code-snippet__number\">0<\/span>,&nbsp;<span class=\"code-snippet__title\">async<\/span>&nbsp;(<span class=\"code-snippet__attr\">done<\/span>:&nbsp;<span class=\"code-snippet__title\">Function<\/span>) =&gt; {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">const<\/span>&nbsp;driver =&nbsp;<span class=\"code-snippet__title\">Driver<\/span>.<span class=\"code-snippet__title\">create<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">delayMs<\/span>(<span class=\"code-snippet__number\">1000<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u904d\u5386\u4e3b\u9875\u6240\u6709\u53ef\u70b9\u51fb\u7ec4\u4ef6<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">const<\/span>&nbsp;components =&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">findComponents<\/span>(<span class=\"code-snippet__variable\">ON<\/span>.<span class=\"code-snippet__title\">clickable<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">console<\/span>.<span class=\"code-snippet__title\">info<\/span>(<span class=\"code-snippet__string\">`Found&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">${components.length}<\/span><\/span><span class=\"code-snippet__string\">&nbsp;clickable components`<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;(<span class=\"code-snippet__keyword\">let<\/span>&nbsp;i =&nbsp;<span class=\"code-snippet__number\">0<\/span>; i &lt; components.<span class=\"code-snippet__property\">length<\/span>; i++) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;components[i].<span class=\"code-snippet__title\">click<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">delayMs<\/span>(<span class=\"code-snippet__number\">500<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u68c0\u67e5\u662f\u5426\u5d29\u6e83<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">const<\/span>&nbsp;currentWindow =&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">findWindow<\/span>({<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__attr\">filter<\/span>:&nbsp;<span class=\"code-snippet__function\">(<\/span><span class=\"code-snippet__function\"><span class=\"code-snippet__params\">win<\/span><\/span><span class=\"code-snippet__function\">) =&gt;<\/span>&nbsp;win.<span class=\"code-snippet__property\">isFocused<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; });<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">console<\/span>.<span class=\"code-snippet__title\">info<\/span>(<span class=\"code-snippet__string\">`Step&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">${i}<\/span><\/span><span class=\"code-snippet__string\">: Window=<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__subst\">${currentWindow.title}<\/span><\/span><span class=\"code-snippet__string\">`<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u8fd4\u56de\u4e0a\u4e00\u9875<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">pressBack<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">await<\/span>&nbsp;driver.<span class=\"code-snippet__title\">delayMs<\/span>(<span class=\"code-snippet__number\">300<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">done<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; });<\/span><\/code><code><span leaf=\"\">&nbsp; });<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">11.3 \u4e09\u7cfb\u7edf\u667a\u80fd\u904d\u5386\u6210\u719f\u5ea6\u5bf9\u6bd4<\/span><\/h3>\n<table style=\"box-sizing: border-box;margin: 16px 0px;padding: 0px;width: 680px;border-collapse: collapse;font-size: 14px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">\u7ef4\u5ea6<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">Android<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">iOS<\/span><\/span><\/section>\n<\/th>\n<th style=\"box-sizing: border-box;margin: 0px;padding: 10px 12px;background: rgb(42, 95, 168);color: rgb(255, 255, 255);text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\" data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\"><span textstyle=\"\" style=\"font-size: 12px;color: rgb(214, 168, 65);\">HarmonyOS<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6210\u719f\u667a\u80fd\u904d\u5386\u5de5\u5177<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">4+\uff08AppCrawler\u7b49\uff09<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u81ea\u7814<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u6682\u65e0<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u968f\u673a\u538b\u529b\u6d4b\u8bd5<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Monkey<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Swift Monkey<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">Wukong<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u8986\u76d6\u7387\u62a5\u544a<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u5b8c\u6574<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u90e8\u5206<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(231, 76, 60);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u65e0<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">ANR\u76d1\u63a7<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u81ea\u52a8\u91c7\u96c6<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u81ea\u5b9a\u4e49<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u9700\u914d\u7f6e<\/span><\/section>\n<\/td>\n<\/tr>\n<tr style=\"box-sizing: border-box;margin: 0px;padding: 0px;background: rgb(245, 247, 250);\">\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(68, 68, 68);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u793e\u533a\u751f\u6001<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(39, 174, 96);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\u2605\u2605\u2605<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\u2605<\/span><\/section>\n<\/td>\n<td style=\"box-sizing: border-box;margin: 0px;padding: 9px 12px;border: 1px solid rgb(221, 221, 221);color: rgb(243, 156, 18);\">\n<section data-nest-level=\"6\"><span leaf=\"\" data-nest-level=\"7\">\u2605\u2605\uff08\u5feb\u901f\u53d1\u5c55\u4e2d\uff09<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><br  \/><\/span><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"box-sizing: border-box;margin: 38px 0px 14px;padding: 0px 0px 8px;font-size: 20px;font-weight: 700;color: rgb(26, 26, 26);border-bottom: 2px solid rgb(74, 144, 226);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span style=\"box-sizing: border-box;margin: 0px 6px 0px 0px;padding: 0px;display: inline-block;background: rgb(74, 144, 226);color: rgb(255, 255, 255);border-radius: 50%;width: 26px;height: 26px;text-align: center;line-height: 26px;font-size: 13px;vertical-align: middle;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u5341\u4e8c<\/span><\/span><span leaf=\"\" data-nest-level=\"3\">\u603b\u7ed3\uff1a\u667a\u80fd\u904d\u5386\u7684\u5b8c\u6574\u843d\u5730\u8def\u5f84<\/span><\/h2>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-nest-level=\"3\">12.1 \u843d\u5730\u8def\u7ebf\u56fe\uff1a\u4e09\u6b65\u8d70<\/span><\/h3>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(26, 26, 26);\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u7b2c\u4e00\u9636\u6bb5\uff08\u7b2c1-2\u5468\uff09\uff1a\u5de5\u5177\u5f15\u5165<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><span leaf=\"\" data-nest-level=\"3\">\u5728\u6d4b\u8bd5\u8bbe\u5907\u4e0a\u5b89\u88c5AppCrawler\/Maxim\uff0c\u7528\u6700\u5c0f\u914d\u7f6e\u8dd1\u901a\u9996\u6b21\u904d\u5386\u3002\u76ee\u6807\uff1a\u786e\u8ba4\u5de5\u5177\u53ef\u7528\uff0c\u8bbe\u5907\u8fde\u63a5\u6b63\u5e38\u3002<\/span><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(26, 26, 26);\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u7b2c\u4e8c\u9636\u6bb5\uff08\u7b2c3-4\u5468\uff09\uff1a\u914d\u7f6e\u4f18\u5316<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><span leaf=\"\" data-nest-level=\"3\">\u914d\u7f6e\u767b\u5f55\u6001\u3001\u9ed1\u540d\u5355\u3001\u767b\u5f55\u6001\u68c0\u67e5\u673a\u5236\u3002\u76ee\u6807\uff1a\u8986\u76d6\u7387\u63d0\u5347\u523080%\u4ee5\u4e0a\uff0c\u5d29\u6e83\u53d1\u73b0\u6548\u7387\u663e\u8457\u9ad8\u4e8eMonkey\u3002<\/span><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;color: rgb(26, 26, 26);\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\">\u7b2c\u4e09\u9636\u6bb5\uff08\u7b2c5-6\u5468\uff09\uff1aCI\u96c6\u6210 + \u6301\u7eed\u8fd0\u8425<\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><span leaf=\"\" data-nest-level=\"3\">\u96c6\u6210\u5230Jenkins\/GitHub Actions\u6d41\u6c34\u7ebf\uff0c\u8bbe\u7f6e\u8986\u76d6\u7387\u95e8\u7981\uff0c\u5efa\u7acb\u5b9a\u671f\u62a5\u544a\u673a\u5236\u3002\u76ee\u6807\uff1a\u6bcf\u6b21\u6784\u5efa\u81ea\u52a8\u8fd0\u884c\uff0c\u7a33\u5b9a\u53d1\u73b0\u95ee\u9898\u3002<\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\">12.2 \u7ed9\u6d4b\u8bd5\u56e2\u961f\u7684\u5efa\u8bae<\/span><\/h3>\n<ul style=\"box-sizing: border-box;margin: 10px 0px 10px 24px;padding: 0px;color: rgb(51, 51, 51);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u4e0d\u8981\u5b8c\u5168\u629b\u5f03Monkey<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aMonkey\u4ecd\u7136\u662f\u4f4e\u6210\u672c\u538b\u529b\u6d4b\u8bd5\u7684\u597d\u5de5\u5177\uff0c\u667a\u80fd\u904d\u5386+Monkey\u5f62\u6210\u4e92\u8865<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u4ece\u5173\u952e\u8def\u5f84\u5f00\u59cb<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u5148\u5bf9\u6838\u5fc3\u4e1a\u52a1\u6d41\u7a0b\uff08\u767b\u5f55\u3001\u652f\u4ed8\u3001\u6838\u5fc3\u529f\u80fd\uff09\u505a\u667a\u80fd\u904d\u5386\uff0c\u518d\u9010\u6b65\u6269\u5927\u8303\u56f4<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u5173\u6ce8ANR\u6bd4\u5173\u6ce8\u5d29\u6e83\u66f4\u91cd\u8981<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aANR\u4e0d\u5d29\u6e83\u4f46\u5f71\u54cd\u4f53\u9a8c\uff0c\u4e14Monkey\u51e0\u4e4e\u6d4b\u4e0d\u51fa\u6765<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u5efa\u7acb\u8986\u76d6\u7387\u57fa\u7ebf<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u8bb0\u5f55\u6bcf\u6b21\u7248\u672c\u8fed\u4ee3\u7684\u8986\u76d6\u7387\u53d8\u5316\u8d8b\u52bf\uff0c\u8986\u76d6\u7387\u4e0b\u964d\u5373\u9884\u8b66<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">AI\u8f85\u52a9\u662f\u8d8b\u52bf<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1a\u7528LLM\u5206\u6790\u5d29\u6e83\u5806\u6808\u5df2\u662f\u6210\u719f\u5b9e\u8df5\uff0c\u5efa\u8bae\u5c3d\u65e9\u5f15\u5165<\/span><\/section>\n<\/li>\n<li style=\"box-sizing: border-box;margin: 6px 0px;padding: 0px;color: rgb(68, 68, 68);\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\u9e3f\u8499\u4e0d\u8981\u7167\u642cAndroid\u65b9\u6848<\/span><\/strong><br \/>\n<section data-nest-level=\"4\"><span leaf=\"\" data-nest-level=\"5\">\uff1aWukong+Hypium\u662f\u9e3f\u8499\u7684\u6b63\u786e\u7ec4\u5408\uff0c\u4e0d\u8981\u8bd5\u56fe\u5728\u9e3f\u8499\u4e0a\u8dd1AppCrawler<\/span><\/section>\n<\/li>\n<\/ul>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><br  \/><\/span><\/strong><\/p>\n<p data-nest-level=\"2\"><strong style=\"box-sizing: border-box;margin: 0px;padding: 0px;\" data-nest-level=\"3\"><span leaf=\"\" data-nest-level=\"4\"><span textstyle=\"\" style=\"font-size: 15px;color: rgb(2, 30, 170);\">\u6700\u540e\u4e00\u53e5\u8bdd\uff1a<\/span><\/span><\/strong><span leaf=\"\" data-nest-level=\"3\"><span textstyle=\"\" style=\"font-size: 15px;\">\u667a\u80fd\u904d\u5386\u7684\u672c\u8d28\uff0c\u662f\u8ba9\u6d4b\u8bd5\u4ece&#8221;\u78b0\u8fd0\u6c14&#8221;\u53d8\u6210&#8221;\u6709\u7b56\u7565\u5730\u627e\u95ee\u9898&#8221;\u3002Monkey\u9760\u6982\u7387\uff0c\u667a\u80fd\u904d\u5386\u9760\u7b97\u6cd5\u3002\u5728App\u590d\u6742\u5ea6\u6301\u7eed\u589e\u957f\u7684\u4eca\u5929\uff0c\u5347\u7ea7\u6d4b\u8bd5\u65b9\u6cd5\u8bba\u4e0d\u662f\u53ef\u9009\u9879\uff0c\u800c\u662f\u5fc5\u9009\u9879\u3002<\/span><\/span><\/p>\n<h3 style=\"box-sizing: border-box;margin: 24px 0px 10px;padding: 0px;font-size: 17px;font-weight: 600;color: rgb(42, 95, 168);font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-nest-level=\"2\"><span leaf=\"\" data-nest-level=\"3\"><br  \/><\/span><\/h3>\n<section data-nest-level=\"2\"><span data-nest-level=\"3\"><span data-nest-level=\"4\"><span data-nest-level=\"5\"><span leaf=\"\" style=\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, &quot;PingFang SC&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\" data-nest-level=\"6\"><br  \/><\/span><\/span><\/span><\/span><\/section>\n<p style=\"display: none;\"><mp-style-type data-value=\"3\"><\/mp-style-type><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u261e&nbsp;\u5bfc\u8bfb \u5927\u591a\u6570\u6d4b\u8bd5\u56e2\u961f\u505aApp\u7a33\u5b9a\u6027\u6d4b\u8bd5\uff0c\u7b2c\u4e00\u6b65\u5c31\u662f\u638f\u51faMonkey\u2014\u2014\u968f\u673a\u70b9\u51fb\u5c4f\u5e55\uff0c\u7b49\u7740App\u5d29 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":114,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"_links":{"self":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/comments?post=115"}],"version-history":[{"count":2,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"predecessor-version":[{"id":209,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/115\/revisions\/209"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/media\/114"}],"wp:attachment":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}