B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 1|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý

[¸´ÖÆÁ´½Ó]

1147

Ö÷Ìâ

1152

Ìû×Ó

7865

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7865
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý
adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý B2BÍøÂçÈí¼þ adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý B2BÍøÂçÈí¼þ

  1. // =============================================================================
  2. // AIWROK adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý
  3. // =============================================================================
  4. // ÊÊÓÃÆ½Ì¨£ºAIWROK °²×¿×Ô¶¯»¯Èí¼þ
  5. // ÒýÇæ£ºRhino (ES5)
  6. // ˵Ã÷£ºadb.exec(command, isRoot) ÊÇ AIWROK ÌṩµÄ ADB ÃüÁîÖ´ÐнӿÚ
  7. //   - ²ÎÊý1 (command)£ºÒªÖ´ÐÐµÄ shell ÃüÁî×Ö·û´®
  8. //   - ²ÎÊý2 (isRoot)£ºboolean£¬true=ÒÔ root ȨÏÞÖ´ÐÐ(su -c)£¬false=ÆÕͨȨÏÞÖ´ÐÐ
  9. //   - ·µ»ØÖµ£ºJSON ¸ñʽ {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}£¬ÐèÌáÈ¡ success ×Ö¶Î
  10. //
  11. // Óë agent.shell() µÄÇø±ð£º
  12. //   - agent.shell() ½öÔÚ´úÀíģʽÏ¿ÉÓã¬ÐèÒª root »ò PC_ADB Á¬½Ó
  13. //   - adb.exec() ¿ÉÖ±½ÓÔÚÉ豸¶ËÖ´ÐУ¬isRoot ²ÎÊýÁé»î¿ØÖÆÈ¨ÏÞ
  14. //   - adb.exec() ·µ»ØÖµÐèÒªÇåÏ´£¬agent.shell() ·µ»ØÖµÏà¶Ô¸É¾»
  15. // =============================================================================

  16. print.log("===== adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý =====\n");

  17. // =============================================================================
  18. // ¹¤¾ßº¯Êý£ºÇåÏ´ adb.exec ·µ»ØÖµ
  19. // =============================================================================
  20. // adb.exec() ʵ¼Ê·µ»Ø JSON ¸ñʽ: {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}
  21. // ÐèÒªÌáÈ¡ success ×ֶεÄÖµ£¬²¢´¦ÀíתÒå×Ö·û
  22. function ÇåÏ´Êä³ö(ԭʼ½á¹û) {
  23.     if (!ԭʼ½á¹û) return "";
  24.     var ½á¹û = String(ԭʼ½á¹û);

  25.     // ¸ñʽ1: JSON ¸ñʽ {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}
  26.     if (½á¹û.charAt(0) === "{") {
  27.         try {
  28.             var json = JSON.parse(½á¹û);
  29.             if (json && json.success !== undefined) {
  30.                 // ¼ì²éÊÇ·ñÓдíÎó
  31.                 if (json.errorMsg && json.errorMsg !== "") {
  32.                     print.log("⚠ ÃüÁî·µ»Ø´íÎó: " + json.errorMsg);
  33.                 }
  34.                 return String(json.success).trim();
  35.             }
  36.         } catch (e) {
  37.             // JSON.parse ʧ°Ü£¬³¢ÊÔÕýÔòÌáÈ¡ success ×Ö¶Î
  38.             var successMatch = ½á¹û.match(/"success"\s*:\s*"([\s\S]*?)"\s*[,}]/);
  39.             if (successMatch) {
  40.                 return successMatch[1]
  41.                     .replace(/\\n/g, "\n")
  42.                     .replace(/\\t/g, "\t")
  43.                     .replace(/\\"/g, '"')
  44.                     .replace(/\\\\/g, "\\")
  45.                     .trim();
  46.             }
  47.         }
  48.         return ½á¹û.trim();
  49.     }

  50.     // ¸ñʽ2: ¾É¸ñʽ successMsg:ÄÚÈÝ,errorMsg:ÄÚÈÝ£¨¼æÈÝ agent.shell£©
  51.     if (½á¹û.indexOf("successMsg:") === 0) {
  52.         ½á¹û = ½á¹û.substring("successMsg:".length);
  53.     }
  54.     var ´íÎóË÷Òý = ½á¹û.indexOf(",errorMsg:");
  55.     if (´íÎóË÷Òý !== -1) {
  56.         ½á¹û = ½á¹û.substring(0, ´íÎóË÷Òý);
  57.     }
  58.     return ½á¹û.trim();
  59. }

  60. // ¹¤¾ßº¯Êý£º°²È«Ö´ÐÐÃüÁî²¢·µ»ØÇåÏ´ºóµÄ½á¹û
  61. function Ö´ÐÐÃüÁî(ÃüÁî, ÊÇ·ñroot) {
  62.     try {
  63.         var ԭʼ = adb.exec(ÃüÁî, ÊÇ·ñroot || false);
  64.         return ÇåÏ´Êä³ö(String(ԭʼ));
  65.     } catch (e) {
  66.         print.log("⚠ ÃüÁîÖ´ÐÐÒì³£ [" + ÃüÁî + "]: " + e.message);
  67.         return "";
  68.     }
  69. }

  70. // ¹¤¾ßº¯Êý£º°²È«Ö´ÐÐÃüÁ²»¹ØÐÄ·µ»ØÖµ£¬Ö»¹ØÐÄÊÇ·ñ³É¹¦£©
  71. function Ö´ÐÐÃüÁĬ(ÃüÁî, ÊÇ·ñroot) {
  72.     try {
  73.         adb.exec(ÃüÁî, ÊÇ·ñroot || false);
  74.         return true;
  75.     } catch (e) {
  76.         print.log("⚠ ÃüÁîÖ´ÐÐÒì³£ [" + ÃüÁî + "]: " + e.message);
  77.         return false;
  78.     }
  79. }

  80. // =============================================================================
  81. // ¹¤¾ßº¯Êý£º3Ãëµ¹¼ÆÊ±£¨Ã¿¸ö¶¯×÷ǰִÐУ¬Ôö¼Ó½Ú×à¸Ð£©
  82. // =============================================================================
  83. function µ¹¼ÆÊ±(ÃëÊý, Ìáʾ) {
  84.     ÃëÊý = ÃëÊý || 3;
  85.     Ìáʾ = Ìáʾ || "";
  86.     for (var i = ÃëÊý; i > 0; i--) {
  87.         print.log("⏳ " + Ìáʾ + " µ¹¼ÆÊ±: " + i + " Ãë...");
  88.         sleep.second(1);
  89.     }
  90.     print.log("▶ " + Ìáʾ + " ¿ªÊ¼Ö´ÐÐ");
  91. }


  92. // =============================================================================
  93. // µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷
  94. // =============================================================================
  95. µ¹¼ÆÊ±(3, "µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷");
  96. print.log("========== µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷ ==========\n");

  97. // 1.1 ÁгöĿ¼ÄÚÈÝ£¨·Ç root£©
  98. print.log("--- 1.1 Áгö /sdcard/ Ŀ¼ÄÚÈÝ ---");
  99. var Ŀ¼Áбí = Ö´ÐÐÃüÁî("ls -la /sdcard/", false);
  100. print.log("Ŀ¼ÄÚÈÝ£º\n" + Ŀ¼Áбí);

  101. // 1.2 ÁгöÖ¸¶¨Ä¿Â¼²¢¹ýÂË£¨½áºÏ grep ¹ÜµÀ£¬×¢Òâ²»ÄÜÓà grep -P£©
  102. print.log("\n--- 1.2 Áгö /sdcard/ Ï嵀 .png Îļþ ---");
  103. var ͼƬÁбí = Ö´ÐÐÃüÁî("ls /sdcard/*.png 2>/dev/null", false);
  104. print.log("PNG Îļþ£º\n" + (ͼƬÁбí || "ÎÞ"));

  105. // 1.3 ²é¿´ÎļþÄÚÈÝ
  106. print.log("\n--- 1.3 ²é¿´ /sdcard/test.txt ÎļþÄÚÈÝ ---");
  107. var ÎļþÄÚÈÝ = Ö´ÐÐÃüÁî("cat /sdcard/test.txt 2>/dev/null", false);
  108. print.log("ÎļþÄÚÈÝ£º\n" + (ÎļþÄÚÈÝ || "Îļþ²»´æÔÚ»òΪ¿Õ"));

  109. // 1.4 ´´½¨Ä¿Â¼£¨ÐèÒª root ʱ²Ù×÷ /data µÈϵͳĿ¼£©
  110. print.log("\n--- 1.4 ´´½¨Ä¿Â¼ ---");
  111. Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
  112. print.log("✓ ÒÑ´´½¨ /sdcard/aiwrok_test Ŀ¼");

  113. // 1.5 ¸´ÖÆÎļþ
  114. print.log("\n--- 1.5 ¸´ÖÆÎļþ ---");
  115. Ö´ÐÐÃüÁĬ("cp /sdcard/test.txt /sdcard/aiwrok_test/test_backup.txt 2>/dev/null", false);
  116. print.log("✓ ÒѸ´ÖÆÎļþ");

  117. // 1.6 дÈëÎļþ£¨Í¨¹ý echo ÖØ¶¨Ïò£©
  118. print.log("\n--- 1.6 ͨ¹ý echo дÈëÎļþ ---");
  119. Ö´ÐÐÃüÁĬ("echo 'AIWROK adb.exec ²âÊÔдÈë' > /sdcard/aiwrok_test/write_test.txt", false);
  120. var дÈëÑéÖ¤ = Ö´ÐÐÃüÁî("cat /sdcard/aiwrok_test/write_test.txt", false);
  121. print.log("дÈëÑéÖ¤£º" + дÈëÑéÖ¤);

  122. // 1.7 »ñÈ¡Îļþ´óСºÍȨÏÞÐÅÏ¢
  123. print.log("\n--- 1.7 »ñÈ¡ÎļþÏêϸÐÅÏ¢ ---");
  124. var ÎļþÐÅÏ¢ = Ö´ÐÐÃüÁî("ls -l /sdcard/aiwrok_test/write_test.txt", false);
  125. print.log("ÎļþÐÅÏ¢£º" + ÎļþÐÅÏ¢);

  126. // 1.8 ͳ¼ÆÄ¿Â¼ÏÂÎļþÊýÁ¿
  127. print.log("\n--- 1.8 ͳ¼Æ /sdcard/ ÏÂÎļþÊýÁ¿ ---");
  128. var ÎļþÊý = Ö´ÐÐÃüÁî("ls /sdcard/ | wc -l", false);
  129. print.log("ÎļþÊýÁ¿£º" + ÎļþÊý);


  130. // =============================================================================
  131. // µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí£¨Package Manager£©
  132. // =============================================================================
  133. µ¹¼ÆÊ±(3, "µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí");
  134. print.log("\n========== µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí ==========\n");

  135. // 2.1 ÁгöËùÓÐÒѰ²×°µÄµÚÈý·½Ó¦ÓÃ
  136. print.log("--- 2.1 ÁгöËùÓеÚÈý·½Ó¦ÓðüÃû ---");
  137. var µÚÈý·½Ó¦Óà = Ö´ÐÐÃüÁî("pm list packages -3", false);
  138. var Ó¦ÓÃÊý×é = µÚÈý·½Ó¦Óà ? µÚÈý·½Ó¦ÓÃ.split("\n") : [];
  139. print.log("µÚÈý·½Ó¦ÓÃÊýÁ¿£º" + Ó¦ÓÃÊý×é.length);
  140. // Ö»´òӡǰ5¸ö
  141. for (var i = 0; i < Math.min(5, Ó¦ÓÃÊý×é.length); i++) {
  142.     print.log("  " + Ó¦ÓÃÊý×é[i]);
  143. }
  144. if (Ó¦ÓÃÊý×é.length > 5) {
  145.     print.log("  ... ¹² " + Ó¦ÓÃÊý×é.length + " ¸öÓ¦ÓÃ");
  146. }

  147. // 2.2 ÁгöËùÓÐϵͳӦÓÃ
  148. print.log("\n--- 2.2 ÁгöϵͳӦÓÃÊýÁ¿ ---");
  149. var ϵͳӦÓà = Ö´ÐÐÃüÁî("pm list packages -s", false);
  150. var ϵͳӦÓÃÊý×é = ϵͳӦÓà ? ϵͳӦÓÃ.split("\n") : [];
  151. print.log("ϵͳӦÓÃÊýÁ¿£º" + ϵͳӦÓÃÊý×é.length);

  152. // 2.3 ²é¿´Ö¸¶¨Ó¦ÓÃÐÅÏ¢
  153. print.log("\n--- 2.3 ²é¿´Î¢ÐÅÓ¦ÓÃÐÅÏ¢ ---");
  154. var ΢ÐÅÐÅÏ¢ = Ö´ÐÐÃüÁî("pm list packages com.tencent.mm", false);
  155. print.log("΢ÐŰüÃûÐÅÏ¢£º" + (΢ÐÅÐÅÏ¢ || "δ°²×°Î¢ÐÅ"));

  156. // 2.4 Æô¶¯Ó¦Óã¨Í¨¹ý am start£©
  157. print.log("\n--- 2.4 Æô¶¯Ö¸¶¨Ó¦Óà ---");
  158. // Æô¶¯ÉèÖÃÓ¦ÓÃ
  159. Ö´ÐÐÃüÁĬ("am start -a android.settings.SETTINGS", false);
  160. print.log("✓ ÒÑÆô¶¯ÏµÍ³ÉèÖÃ");

  161. // 2.5 ͨ¹ý monkey Æô¶¯Ó¦ÓÃ
  162. print.log("\n--- 2.5 ͨ¹ý monkey Æô¶¯Ó¦Óà ---");
  163. // Ö´ÐÐÃüÁĬ("monkey -p com.tencent.mm 1", false);
  164. print.log("£¨Ê¾Àý£©¿Éͨ¹ý monkey -p <°üÃû> 1 Æô¶¯Ó¦ÓÃ");

  165. // 2.6 Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ
  166. print.log("\n--- 2.6 Ç¿ÖÆÍ£Ö¹Ó¦Óà ---");
  167. // Ö´ÐÐÃüÁĬ("am force-stop com.tencent.mm", false);
  168. print.log("£¨Ê¾Àý£©¿Éͨ¹ý am force-stop <°üÃû> Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ");

  169. // 2.7 Çå³ýÓ¦ÓÃÊý¾Ý£¨ÐèÒª root »ò¶ÔӦȨÏÞ£©
  170. print.log("\n--- 2.7 Çå³ýÓ¦ÓÃÊý¾Ý£¨root ʾÀý£©---");
  171. // adb.exec("pm clear com.example.app", true);  // true = root ȨÏÞ
  172. print.log("£¨Ê¾Àý£©adb.exec('pm clear com.example.app', true) ÒÔ root Çå³ýÓ¦ÓÃÊý¾Ý");

  173. // 2.8 °²×° / Ð¶ÔØ APK
  174. print.log("\n--- 2.8 °²×°/Ð¶ÔØ APK ---");
  175. // °²×°£ºadb.exec("pm install /sdcard/app.apk", false);
  176. // Ð¶ÔØ£ºadb.exec("pm uninstall com.example.app", false);
  177. print.log("£¨Ê¾Àý£©pm install / pm uninstall ¿É°²×°/Ð¶ÔØÓ¦ÓÃ");


  178. // =============================================================================
  179. // µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡
  180. // =============================================================================
  181. µ¹¼ÆÊ±(3, "µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡");
  182. print.log("\n========== µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡ ==========\n");

  183. // 3.1 »ñȡϵͳÊôÐÔ£¨getprop£©
  184. print.log("--- 3.1 »ñÈ¡É豸ϵͳÊôÐÔ ---");
  185. var É豸ÐͺŠ= Ö´ÐÐÃüÁî("getprop ro.product.model", false);
  186. var °²×¿°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.release", false);
  187. var SDK°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.sdk", false);
  188. var ÖÆÔìÉÌ = Ö´ÐÐÃüÁî("getprop ro.product.manufacturer", false);
  189. var ÐòÁкŠ= Ö´ÐÐÃüÁî("getprop ro.serialno", false);
  190. print.log("É豸Ðͺţº" + É豸ÐͺÅ);
  191. print.log("°²×¿°æ±¾£º" + °²×¿°æ±¾);
  192. print.log("SDK°æ±¾£º" + SDK°æ±¾);
  193. print.log("ÖÆÔìÉÌ£º" + ÖÆÔìÉÌ);
  194. print.log("ÐòÁкţº" + ÐòÁкÅ);

  195. // 3.2 »ñÈ¡ÆÁÄ»·Ö±æÂÊ
  196. print.log("\n--- 3.2 »ñÈ¡ÆÁÄ»·Ö±æÂÊ ---");
  197. var ·Ö±æÂÊ = Ö´ÐÐÃüÁî("wm size", false);
  198. print.log("ÆÁÄ»·Ö±æÂÊ£º" + ·Ö±æÂÊ);
  199. var ÃÜ¶È = Ö´ÐÐÃüÁî("wm density", false);
  200. print.log("ÆÁÄ»Ãܶȣº" + ÃܶÈ);

  201. // 3.3 »ñÈ¡µç³ØÐÅÏ¢£¨¶à²ßÂÔ£ºsysfs ¡ú dumpsys½âÎö ¡ú bms»ØÍË£©
  202. print.log("\n--- 3.3 »ñÈ¡µç³ØÐÅÏ¢ ---");
  203. var µç³ØÐÅÏ¢3 = »ñÈ¡µç³ØÐÅÏ¢();
  204. print.log("µç³ØµçÁ¿£º" + (µç³ØÐÅÏ¢3.µçÁ¿ || "δ֪") + "%");
  205. print.log("µç³Ø×´Ì¬£º" + (µç³ØÐÅÏ¢3.״̬ || "δ֪"));
  206. print.log("µç³ØÎ¶ȣº" + (µç³ØÐÅÏ¢3.ÎÂ¶È || "δ֪"));
  207. print.log("µç³Ø¼¼Êõ£º" + (µç³ØÐÅÏ¢3.¼¼Êõ || "δ֪"));

  208. // 3.4 »ñÈ¡ÄÚ´æÐÅÏ¢
  209. print.log("\n--- 3.4 »ñÈ¡ÄÚ´æÐÅÏ¢ ---");
  210. var ÄÚ´æÐÅÏ¢ = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -5", false);
  211. print.log("ÄÚ´æÐÅÏ¢£º\n" + ÄÚ´æÐÅÏ¢);

  212. // 3.5 »ñÈ¡ CPU ÐÅÏ¢
  213. print.log("\n--- 3.5 »ñÈ¡ CPU ÐÅÏ¢ ---");
  214. var CPUÐÅÏ¢ = Ö´ÐÐÃüÁî("cat /proc/cpuinfo | head -10", false);
  215. print.log("CPUÐÅÏ¢£º\n" + CPUÐÅÏ¢);

  216. // 3.6 »ñÈ¡´æ´¢ÐÅÏ¢
  217. print.log("\n--- 3.6 »ñÈ¡´æ´¢ÐÅÏ¢ ---");
  218. var ´æ´¢ÐÅÏ¢ = Ö´ÐÐÃüÁî("df /sdcard", false);
  219. print.log("´æ´¢ÐÅÏ¢£º\n" + ´æ´¢ÐÅÏ¢);

  220. // 3.7 »ñÈ¡ÍøÂçÁ¬½ÓÐÅÏ¢
  221. print.log("\n--- 3.7 »ñÈ¡ÍøÂçÐÅÏ¢ ---");
  222. var IPµØÖ· = Ö´ÐÐÃüÁî("ip addr show wlan0 | grep 'inet '", false);
  223. print.log("IPµØÖ·£º" + IPµØÖ·);
  224. // WiFi״̬£º¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎö dumpsys wifi ÍêÕûÊä³ö
  225. var WiFiÍêÕû = Ö´ÐÐÃüÁî("dumpsys wifi 2>/dev/null", false);
  226. var WiFi״̬ = "δ֪";
  227. if (WiFiÍêÕû && WiFiÍêÕû.length > 0) {
  228.     var WiFiÐÐ = WiFiÍêÕû.split("\n");
  229.     for (var wi = 0; wi < WiFiÐÐ.length; wi++) {
  230.         var ÐÐÄÚÈÝ = WiFiÐÐ[wi].trim().toLowerCase();
  231.         if (ÐÐÄÚÈÝ.indexOf("wi-fi is") !== -1 || ÐÐÄÚÈÝ.indexOf("wifi is") !== -1) {
  232.             WiFi״̬ = WiFiÐÐ[wi].trim();
  233.             break;
  234.         }
  235.     }
  236.     // »ØÍË£ºËÑË÷ "Wi-Fi" ¹Ø¼ü×ÖËùÔÚÐÐ
  237.     if (WiFi״̬ === "δ֪") {
  238.         for (var wi2 = 0; wi2 < WiFiÐÐ.length; wi2++) {
  239.             if (WiFiÐÐ[wi2].toLowerCase().indexOf("wifi") !== -1 && WiFiÐÐ[wi2].indexOf("SSID") !== -1) {
  240.                 WiFi״̬ = WiFiÐÐ[wi2].trim();
  241.                 break;
  242.             }
  243.         }
  244.     }
  245. }
  246. print.log("WiFi״̬£º" + WiFi״̬);


  247. // =============================================================================
  248. // µÚËIJ¿·Ö£ºÊäÈëÄ£Ä⣨Input Commands£©
  249. // =============================================================================
  250. µ¹¼ÆÊ±(3, "µÚËIJ¿·Ö£ºÊäÈëÄ£Äâ");
  251. print.log("\n========== µÚËIJ¿·Ö£ºÊäÈëÄ£Äâ ==========\n");

  252. // 4.1 Ä£Äâµã»÷£¨input tap£©
  253. print.log("--- 4.1 Ä£Äâµã»÷×ø±ê ---");
  254. // Ö´ÐÐÃüÁĬ("input tap 540 960", false);
  255. print.log("£¨Ê¾Àý£©input tap 540 960 ¡ú µã»÷ÆÁÄ»ÖÐÐÄ");

  256. // 4.2 Ä£Ä⻬¶¯£¨input swipe£©
  257. print.log("\n--- 4.2 Ä£Ä⻬¶¯ ---");
  258. // Ö´ÐÐÃüÁĬ("input swipe 540 1500 540 500 300", false);  // ÉÏ»¬
  259. print.log("£¨Ê¾Àý£©input swipe 540 1500 540 500 300 ¡ú ÏòÉÏ»¬¶¯");

  260. // 4.3 Ä£Äⳤ°´£¨swipe ÆðµãÖÕµãÏàͬ£¬Ê±³¤ > 500ms£©
  261. print.log("\n--- 4.3 Ä£Äⳤ°´ ---");
  262. // Ö´ÐÐÃüÁĬ("input swipe 540 960 540 960 1000", false);
  263. print.log("£¨Ê¾Àý£©input swipe 540 960 540 960 1000 ¡ú ³¤°´ 1 Ãë");

  264. // 4.4 Ä£ÄâÊäÈëÎÄ×Ö£¨½öÖ§³Ö ASCII£©
  265. print.log("\n--- 4.4 Ä£ÄâÊäÈëÎÄ×Ö ---");
  266. // Ö´ÐÐÃüÁĬ("input text 'hello123'", false);
  267. print.log("£¨Ê¾Àý£©input text 'hello123' ¡ú ÊäÈë ASCII ÎÄ×Ö");

  268. // 4.5 Ä£Äâ°´¼üʼþ£¨input keyevent£©
  269. print.log("\n--- 4.5 Ä£Äâ°´¼üʼþ ---");
  270. var °´¼ü˵Ã÷ = {
  271.     "3": "KEYCODE_HOME (Home¼ü)",
  272.     "4": "KEYCODE_BACK (·µ»Ø¼ü)",
  273.     "24": "KEYCODE_VOLUME_UP (ÒôÁ¿¼Ó)",
  274.     "25": "KEYCODE_VOLUME_DOWN (ÒôÁ¿¼õ)",
  275.     "26": "KEYCODE_POWER (µçÔ´¼ü)",
  276.     "27": "KEYCODE_CAMERA (Ïà»ú¼ü)",
  277.     "66": "KEYCODE_ENTER (»Ø³µ¼ü)",
  278.     "82": "KEYCODE_MENU (²Ëµ¥¼ü)",
  279.     "279": "KEYCODE_PASTE (Õ³Ìù¼ü)"
  280. };
  281. for (var ¼üÂë in °´¼ü˵Ã÷) {
  282.     // Ö´ÐÐÃüÁĬ("input keyevent " + ¼üÂë, false);
  283.     print.log("  keyevent " + ¼üÂë + " ¡ú " + °´¼ü˵Ã÷[¼üÂë]);
  284. }

  285. // 4.6 Ä£Äâ×éºÏ¼ü£¨Ctrl+V Õ³Ìù£©
  286. print.log("\n--- 4.6 Ä£Äâ×éºÏ¼ü ---");
  287. // Ö´ÐÐÃüÁĬ("input keyevent 50 --meta 0x1000", false);  // Ctrl+V
  288. print.log("£¨Ê¾Àý£©input keyevent 50 --meta 0x1000 ¡ú Ctrl+V Õ³Ìù");


  289. // =============================================================================
  290. // µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ
  291. // =============================================================================
  292. µ¹¼ÆÊ±(3, "µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ");
  293. print.log("\n========== µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ ==========\n");

  294. // 5.1 ½ØÍ¼±£´æµ½Îļþ
  295. print.log("--- 5.1 ½ØÍ¼±£´æµ½Îļþ ---");
  296. var ½ØÍ¼Â·¾¶ = "/sdcard/aiwrok_test/screenshot_" + Date.now() + ".png";
  297. Ö´ÐÐÃüÁĬ("screencap -p " + ½ØÍ¼Â·¾¶, false);
  298. var ½ØÍ¼ÑéÖ¤ = Ö´ÐÐÃüÁî("ls -l " + ½ØÍ¼Â·¾¶, false);
  299. print.log("½ØÍ¼Îļþ£º" + ½ØÍ¼ÑéÖ¤);

  300. // 5.2 ½ØÍ¼Ö±½ÓÊä³öµ½ stdout£¨ÓÃÓÚ»ñÈ¡¶þ½øÖÆÊý¾Ý£©
  301. print.log("\n--- 5.2 ½ØÍ¼Êä³öµ½ stdout ---");
  302. print.log("£¨Ê¾Àý£©screencap -p ¿ÉÖ±½ÓÊä³ö PNG Êý¾ÝÁ÷");

  303. // 5.3 ¼ÆÁ£¨ÐèÒª Android 4.4+£©
  304. print.log("\n--- 5.3 ¼ÆÁÃüÁî ---");
  305. print.log("£¨Ê¾Àý£©screenrecord --time-limit 10 /sdcard/aiwrok_test/record.mp4 ¡ú ¼ÆÁ10Ãë");

  306. // 5.4 ýÌåÒôÁ¿¿ØÖÆ£¨¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎö£©
  307. print.log("\n--- 5.4 ýÌåÒôÁ¿¿ØÖÆ ---");
  308. var ÒôƵÍêÕû = Ö´ÐÐÃüÁî("dumpsys audio 2>/dev/null", false);
  309. var ÒôÁ¿Êä³ö = "";
  310. if (ÒôƵÍêÕû && ÒôƵÍêÕû.length > 0) {
  311.     var ÒôƵÐÐ = ÒôƵÍêÕû.split("\n");
  312.     var ÒôÁ¿ÐÐ = [];
  313.     for (var ai = 0; ai < ÒôƵÐÐ.length; ai++) {
  314.         if (ÒôƵÐÐ[ai].indexOf("Stream volume") !== -1 || ÒôƵÐÐ[ai].indexOf("STREAM_MUSIC") !== -1) {
  315.             ÒôÁ¿ÐÐ.push(ÒôƵÐÐ[ai].trim());
  316.         }
  317.     }
  318.     ÒôÁ¿Êä³ö = ÒôÁ¿ÐÐ.length > 0 ? ÒôÁ¿ÐÐ.join("\n") : "δÕÒµ½ÒôÁ¿ÐÅÏ¢";
  319. } else {
  320.     ÒôÁ¿Êä³ö = "dumpsys audio ²»¿ÉÓÃ";
  321. }
  322. print.log("µ±Ç°ÒôƵÁ÷ÐÅÏ¢£º\n" + ÒôÁ¿Êä³ö);


  323. // =============================================================================
  324. // µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí
  325. // =============================================================================
  326. µ¹¼ÆÊ±(3, "µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí");
  327. print.log("\n========== µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí ==========\n");

  328. // 6.1 ²é¿´ËùÓÐÔËÐÐÖеĽø³Ì
  329. print.log("--- 6.1 ²é¿´ÔËÐÐÖеĽø³Ì£¨Ç°10¸ö£©---");
  330. var ½ø³ÌÁбí = Ö´ÐÐÃüÁî("ps | head -10", false);
  331. print.log("½ø³ÌÁÐ±í£º\n" + ½ø³ÌÁбí);

  332. // 6.2 ²éÕÒÌØ¶¨½ø³Ì
  333. print.log("\n--- 6.2 ²éÕÒÌØ¶¨½ø³Ì ---");
  334. // ×¢Ò⣺Android shell ²»Ö§³Ö grep -P£¬Ê¹ÓÃÆÕͨ grep
  335. var ΢ÐŽø³Ì = Ö´ÐÐÃüÁî("ps | grep com.tencent.mm", false);
  336. print.log("΢ÐŽø³Ì£º" + (΢ÐŽø³Ì || "΢ÐÅδÔËÐÐ"));

  337. // 6.3 »ñÈ¡ CPU Õ¼ÓÃ×î¸ßµÄ½ø³Ì
  338. print.log("\n--- 6.3 CPU Õ¼ÓÃ×î¸ßµÄ½ø³Ì ---");
  339. var CPUÕ¼Óà = Ö´ÐÐÃüÁî("top -n 1 -b | head -15", false);
  340. print.log("CPUÕ¼ÓÃÇé¿ö£º\n" + CPUÕ¼ÓÃ);

  341. // 6.4 ɱËÀ½ø³Ì£¨ÐèÒª root »òͬ UID£©
  342. print.log("\n--- 6.4 ɱËÀ½ø³Ì ---");
  343. // Ö´ÐÐÃüÁĬ("kill <PID>", true);  // ÐèÒª root
  344. print.log("£¨Ê¾Àý£©kill <PID> ÒÔ root ȨÏÞɱËÀÖ¸¶¨½ø³Ì");

  345. // 6.5 »ñȡǰ̨ Activity£¨¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎöÍêÕûÊä³ö£©
  346. print.log("\n--- 6.5 »ñȡǰ̨ Activity ---");
  347. // ²ßÂÔ1£ºdumpsys activity activities ÍêÕûÊä³ö + JSËÑË÷ mResumedActivity
  348. var activityÍêÕû6 = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
  349. if (activityÍêÕû6 && activityÍêÕû6.length > 0) {
  350.     var resumedIdx6 = activityÍêÕû6.indexOf("mResumedActivity");
  351.     if (resumedIdx6 !== -1) {
  352.         print.log("ǰ̨Activity£º" + activityÍêÕû6.substring(resumedIdx6, resumedIdx6 + 200).split("\n")[0]);
  353.     } else {
  354.         print.log("ǰ̨Activity£ºÎ´ÕÒµ½ mResumedActivity");
  355.     }
  356. } else {
  357.     print.log("ǰ̨Activity£ºdumpsys activity ²»¿ÉÓÃ");
  358. }
  359. // ²ßÂÔ2£ºdumpsys window ÍêÕûÊä³ö + JSËÑË÷ mCurrentFocus
  360. var ´°¿ÚÍêÕû6 = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
  361. if (´°¿ÚÍêÕû6 && ´°¿ÚÍêÕû6.length > 0) {
  362.     var focusIdx6 = ´°¿ÚÍêÕû6.indexOf("mCurrentFocus");
  363.     if (focusIdx6 !== -1) {
  364.         print.log("µ±Ç°½¹µã´°¿Ú£º" + ´°¿ÚÍêÕû6.substring(focusIdx6, focusIdx6 + 200).split("\n")[0]);
  365.     } else {
  366.         print.log("µ±Ç°½¹µã´°¿Ú£ºÎ´ÕÒµ½ mCurrentFocus");
  367.     }
  368. } else {
  369.     print.log("µ±Ç°½¹µã´°¿Ú£ºdumpsys window ²»¿ÉÓÃ");
  370. }


  371. // =============================================================================
  372. // µÚÆß²¿·Ö£ºÎļþȨÏÞÓëϵͳ¹ÜÀí£¨root ³¡¾°£©
  373. // =============================================================================
  374. µ¹¼ÆÊ±(3, "µÚÆß²¿·Ö£ºrootȨÏÞ³¡¾°");
  375. print.log("\n========== µÚÆß²¿·Ö£ºroot ȨÏÞ³¡¾° ==========\n");

  376. // 7.1 ÐÞ¸ÄÎļþȨÏÞ
  377. print.log("--- 7.1 ÐÞ¸ÄÎļþȨÏÞ ---");
  378. // adb.exec("chmod 777 /data/local/tmp/test", true);  // root ȨÏÞ
  379. print.log("£¨Ê¾Àý£©adb.exec('chmod 777 /data/local/tmp/test', true) ÒÔ root ÐÞ¸ÄȨÏÞ");

  380. // 7.2 ¶Áȡϵͳ·ÖÇøÎļþ£¨ÐèÒª root£©
  381. print.log("\n--- 7.2 ¶Áȡϵͳ·ÖÇøÎļþ ---");
  382. // var hostsÄÚÈÝ = Ö´ÐÐÃüÁî("cat /etc/hosts", true);  // root ȨÏÞ¶ÁÈ¡
  383. print.log("£¨Ê¾Àý£©adb.exec('cat /etc/hosts', true) ÒÔ root ¶ÁȡϵͳÎļþ");

  384. // 7.3 ÐÞ¸ÄϵͳÉèÖã¨settings ÃüÁîÔÚ Android 14 ·Ç root ϱ¨È¨ÏÞ´íÎó£¬Ðè root£©
  385. print.log("\n--- 7.3 ÐÞ¸ÄϵͳÉèÖà ---");
  386. // »ñÈ¡ÆÁÄ»³¬Ê±Ê±¼ä£¨Ðè root£¬·ñÔò±¨ INTERACT_ACROSS_USERS ȨÏÞ´íÎó£©
  387. var ÆÁÄ»³¬Ê± = Ö´ÐÐÃüÁî("settings get system screen_off_timeout", true);
  388. if (!ÆÁÄ»³¬Ê± || ÆÁÄ»³¬Ê±.indexOf("Exception") !== -1 || ÆÁÄ»³¬Ê±.indexOf("Permission") !== -1) {
  389.     // »ØÍË1£º·Çroot³¢ÊÔ
  390.     var ÆÁÄ»³¬Ê±2 = Ö´ÐÐÃüÁî("settings get system screen_off_timeout", false);
  391.     if (ÆÁÄ»³¬Ê±2 && ÆÁÄ»³¬Ê±2.indexOf("Exception") === -1) {
  392.         ÆÁÄ»³¬Ê± = ÆÁÄ»³¬Ê±2;
  393.     } else {
  394.         // »ØÍË2£ºÍ¨¹ý content query ¶ÁÈ¡
  395.         var content²éѯ = Ö´ÐÐÃüÁî("content query --uri content://settings/system --where \"name='screen_off_timeout'\"", false);
  396.         if (content²éѯ && content²éѯ.indexOf("value=") !== -1) {
  397.             var valIdx = content²éѯ.indexOf("value=");
  398.             ÆÁÄ»³¬Ê± = content²éѯ.substring(valIdx + 6).split(",")[0].trim();
  399.         } else {
  400.             ÆÁÄ»³¬Ê± = "";
  401.         }
  402.     }
  403. }
  404. print.log("µ±Ç°ÆÁÄ»³¬Ê±£º" + (ÆÁÄ»³¬Ê± || "»ñȡʧ°Ü£¨Ðè root ȨÏÞ£©") + " ºÁÃë");

  405. // ÐÞ¸ÄÆÁÄ»³¬Ê±£¨Ðè root£©
  406. // Ö´ÐÐÃüÁĬ("settings put system screen_off_timeout 60000", true);
  407. print.log("£¨Ê¾Àý£©settings put system screen_off_timeout 60000 ¡ú ÉèÖÃÆÁÄ»³¬Ê±60Ãë");

  408. // 7.4 »ñÈ¡/ÐÞ¸ÄÊäÈë·¨£¨Ðè root£©
  409. print.log("\n--- 7.4 »ñÈ¡/ÐÞ¸ÄÊäÈë·¨ ---");
  410. var µ±Ç°ÊäÈë·¨ = Ö´ÐÐÃüÁî("settings get secure default_input_method", true);
  411. if (!µ±Ç°ÊäÈë·¨ || µ±Ç°ÊäÈë·¨.indexOf("Exception") !== -1 || µ±Ç°ÊäÈë·¨.indexOf("Permission") !== -1) {
  412.     // »ØÍË1£º·Çroot³¢ÊÔ
  413.     µ±Ç°ÊäÈë·¨ = Ö´ÐÐÃüÁî("settings get secure default_input_method", false);
  414.     if (!µ±Ç°ÊäÈë·¨ || µ±Ç°ÊäÈë·¨.indexOf("Exception") !== -1) {
  415.         // »ØÍË2£ºÍ¨¹ý content query ¶ÁÈ¡
  416.         var ÊäÈë·¨²éѯ = Ö´ÐÐÃüÁî("content query --uri content://settings/secure --where \"name='default_input_method'\"", false);
  417.         if (ÊäÈë·¨²éѯ && ÊäÈë·¨²éѯ.indexOf("value=") !== -1) {
  418.             var imeValIdx = ÊäÈë·¨²éѯ.indexOf("value=");
  419.             µ±Ç°ÊäÈë·¨ = ÊäÈë·¨²éѯ.substring(imeValIdx + 6).split(",")[0].trim();
  420.         } else {
  421.             // »ØÍË3£ºÍ¨¹ý imba ÃüÁ²¿·ÖÉ豸¿ÉÓã©
  422.             var imbaÁбí = Ö´ÐÐÃüÁî("ime list -s 2>/dev/null", false);
  423.             µ±Ç°ÊäÈë·¨ = imbaÁбí || "";
  424.         }
  425.     }
  426. }
  427. print.log("µ±Ç°Ä¬ÈÏÊäÈë·¨£º" + (µ±Ç°ÊäÈë·¨ || "»ñȡʧ°Ü£¨Ðè root ȨÏÞ£©"));

  428. // 7.5 ¹ÒÔØ/Ð¶ÔØÏµÍ³·ÖÇø£¨root£©
  429. print.log("\n--- 7.5 ¹ÒÔØÏµÍ³·ÖÇø¶Áд£¨root£©---");
  430. // adb.exec("mount -o remount,rw /system", true);
  431. print.log("£¨Ê¾Àý£©adb.exec('mount -o remount,rw /system', true) ÒÔ root ÖØÐ¹ÒÔØ/systemΪ¶Áд");

  432. // 7.6 дÈëϵͳÎļþ£¨root£©
  433. print.log("\n--- 7.6 дÈëϵͳ hosts Îļþ£¨root£©---");
  434. // adb.exec("echo '127.0.0.1 example.com' >> /etc/hosts", true);
  435. print.log("£¨Ê¾Àý£©ÒÔ root ȨÏÞÐÞ¸Ä hosts Îļþ");


  436. // =============================================================================
  437. // µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷
  438. // =============================================================================
  439. µ¹¼ÆÊ±(3, "µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷");
  440. print.log("\n========== µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷ ==========\n");

  441. // 8.1 ¼ì²éÍøÂçÁ¬Í¨ÐÔ
  442. print.log("--- 8.1 Ping ²âÊÔ ---");
  443. var ping½á¹û = Ö´ÐÐÃüÁî("ping -c 3 www.baidu.com", false);
  444. print.log("Ping ½á¹û£º\n" + ping½á¹û);

  445. // 8.2 »ñÈ¡ÍøÂç½Ó¿ÚÐÅÏ¢
  446. print.log("\n--- 8.2 ÍøÂç½Ó¿ÚÐÅÏ¢ ---");
  447. var ÍøÂç½Ó¿Ú = Ö´ÐÐÃüÁî("ip addr", false);
  448. print.log("ÍøÂç½Ó¿Ú£º\n" + ÍøÂç½Ó¿Ú.substring(0, 200) + "...");

  449. // 8.3 »ñȡ·Óɱí
  450. print.log("\n--- 8.3 ·Óɱí ---");
  451. var ·Óɱí = Ö´ÐÐÃüÁî("ip route", false);
  452. print.log("·ÓÉ±í£º" + ·Óɱí);

  453. // 8.4 »ñÈ¡ DNS ÅäÖ㨶à²ßÂÔ£ºresolv.conf ¡ú getprop ¡ú dhcpÊôÐÔ ¡ú dumpsys½âÎö£©
  454. print.log("\n--- 8.4 DNS ÅäÖÃ ---");
  455. var DNS1 = "";
  456. var DNS2 = "";
  457. // ²ßÂÔ1£ºresolv.conf
  458. var DNSԭʼ = Ö´ÐÐÃüÁî("cat /etc/resolv.conf 2>/dev/null", false);
  459. if (DNSԭʼ && DNSԭʼ.length > 0) {
  460.     var DNSÐÐ = DNSԭʼ.split("\n");
  461.     var DNSÐòºÅ = 0;
  462.     for (var di = 0; di < DNSÐÐ.length; di++) {
  463.         var ÐÐ = DNSÐÐ[di].trim();
  464.         if (ÐÐ.indexOf("nameserver") === 0) {
  465.             DNSÐòºÅ++;
  466.             if (DNSÐòºÅ === 1) DNS1 = ÐÐ.substring("nameserver".length).trim();
  467.             else if (DNSÐòºÅ === 2) DNS2 = ÐÐ.substring("nameserver".length).trim();
  468.         }
  469.     }
  470. }
  471. // ²ßÂÔ2£ºgetprop net.dns
  472. if (!DNS1) DNS1 = Ö´ÐÐÃüÁî("getprop net.dns1 2>/dev/null", false);
  473. if (!DNS2) DNS2 = Ö´ÐÐÃüÁî("getprop net.dns2 2>/dev/null", false);
  474. // ²ßÂÔ3£ºgetprop dhcp.wlan0.dns£¨²¿·ÖÉ豸¿ÉÓã©
  475. if (!DNS1) DNS1 = Ö´ÐÐÃüÁî("getprop dhcp.wlan0.dns1 2>/dev/null", false);
  476. if (!DNS2) DNS2 = Ö´ÐÐÃüÁî("getprop dhcp.wlan0.dns2 2>/dev/null", false);
  477. // ²ßÂÔ4£º½âÎö dumpsys connectivity£¨ËÑË÷ DnsServerSearchDomains »ò dns ×ÖÑù£©
  478. if (!DNS1) {
  479.     var Á¬Í¨ÐÔÍêÕû = Ö´ÐÐÃüÁî("dumpsys connectivity 2>/dev/null", false);
  480.     if (Á¬Í¨ÐÔÍêÕû && Á¬Í¨ÐÔÍêÕû.length > 0) {
  481.         var Á¬Í¨ÐÐ = Á¬Í¨ÐÔÍêÕû.split("\n");
  482.         for (var ci = 0; ci < Á¬Í¨ÐÐ.length; ci++) {
  483.             var Á¬½ÓÄÚÈÝ = Á¬Í¨ÐÐ[ci].trim();
  484.             if (Á¬½ÓÄÚÈÝ.indexOf("DnsAddresses") !== -1 || Á¬½ÓÄÚÈÝ.indexOf("dns addresses") !== -1) {
  485.                 // ³¢ÊÔÌáÈ¡IPµØÖ·¸ñʽ x.x.x.x
  486.                 var ipMatch = Á¬½ÓÄÚÈÝ.match(/\d+\.\d+\.\d+\.\d+/g);
  487.                 if (ipMatch) {
  488.                     if (!DNS1) DNS1 = ipMatch[0];
  489.                     if (ipMatch.length > 1 && !DNS2) DNS2 = ipMatch[1];
  490.                 }
  491.             }
  492.         }
  493.     }
  494. }
  495. print.log("DNS1£º" + (DNS1 || "»ñȡʧ°Ü"));
  496. print.log("DNS2£º" + (DNS2 || "»ñȡʧ°Ü"));

  497. // 8.5 ͨ¹ý curl »ñÈ¡ÍøÂçÊý¾Ý£¨²¿·ÖÉ豸֧³Ö£©
  498. print.log("\n--- 8.5 curl »ñÈ¡Êý¾Ý ---");
  499. var curl½á¹û = Ö´ÐÐÃüÁî("curl -s http://ip-api.com/line/ 2>/dev/null", false);
  500. print.log("ÍøÂç³ö¿ÚÐÅÏ¢£º\n" + (curl½á¹û || "curl ²»¿ÉÓûòÍøÂ粻ͨ"));


  501. // =============================================================================
  502. // µÚ¾Å²¿·Ö£ºUI ×Ô¶¯»¯¸¨Öú£¨uiautomator£©
  503. // =============================================================================
  504. µ¹¼ÆÊ±(3, "µÚ¾Å²¿·Ö£ºUI×Ô¶¯»¯¸¨Öú");
  505. print.log("\n========== µÚ¾Å²¿·Ö£ºUI ×Ô¶¯»¯¸¨Öú ==========\n");

  506. // 9.1 »ñÈ¡ UI XML£¨¶à²ßÂÔ£ºauto.getXml ¡ú uiautomator dump ¡ú ÍêÕû·¾¶£©
  507. print.log("--- 9.1 »ñÈ¡µ±Ç°½çÃæ UI XML ---");
  508. var UI_XML = "";

  509. // ²ßÂÔ1£ºÓÅÏÈʹÓà AIWROK Ô­Éú auto.getXml()£¨×î¿É¿¿£©
  510. try {
  511.     if (typeof auto !== "undefined" && auto.getXml) {
  512.         var ԭʼXML = String(auto.getXml());
  513.         if (ԭʼXML && ԭʼXML.length > 10 && ԭʼXML.indexOf("<") !== -1) {
  514.             UI_XML = ԭʼXML;
  515.             print.log("✓ ͨ¹ý auto.getXml() »ñÈ¡³É¹¦");
  516.         }
  517.     }
  518. } catch (e1) {
  519.     print.log("⚠ auto.getXml() ʧ°Ü: " + e1.message);
  520. }

  521. // ²ßÂÔ2£ºuiautomator dump£¨Èç¹û auto.getXml ²»¿ÉÓã©
  522. if (!UI_XML) {
  523.     Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
  524.     var UIÁÙʱÎļþ = "/sdcard/aiwrok_test/ui_dump.xml";
  525.     // Ïȳ¢ÊÔ --compressed
  526.     var dump½á¹û1 = Ö´ÐÐÃüÁî("uiautomator dump --compressed " + UIÁÙʱÎļþ + " 2>&1", false);
  527.     sleep.millisecond(500);
  528.     UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
  529.     if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
  530.         print.log("✓ ͨ¹ý uiautomator --compressed »ñÈ¡³É¹¦");
  531.     } else {
  532.         // »ØÍË£º²»´ø --compressed
  533.         var dump½á¹û2 = Ö´ÐÐÃüÁî("uiautomator dump " + UIÁÙʱÎļþ + " 2>&1", false);
  534.         sleep.millisecond(500);
  535.         UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
  536.         if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
  537.             print.log("✓ ͨ¹ý uiautomator dump »ñÈ¡³É¹¦£¨·ÇѹËõģʽ£©");
  538.         } else {
  539.             // »ØÍË£º³¢ÊÔ /system/bin/ ÍêÕû·¾¶
  540.             var dump½á¹û3 = Ö´ÐÐÃüÁî("/system/bin/uiautomator dump " + UIÁÙʱÎļþ + " 2>&1", false);
  541.             sleep.millisecond(500);
  542.             UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
  543.             if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
  544.                 print.log("✓ ͨ¹ý /system/bin/uiautomator »ñÈ¡³É¹¦");
  545.             } else {
  546.                 UI_XML = "";
  547.             }
  548.         }
  549.     }
  550. }

  551. if (UI_XML && UI_XML.length > 10) {
  552.     print.log("UI XML ³¤¶È£º" + UI_XML.length + " ×Ö·û");
  553.     print.log("UI XML ǰ200×Ö·û£º" + UI_XML.substring(0, 200) + "...");
  554. } else {
  555.     print.log("⚠ »ñÈ¡ UI XML ʧ°Ü£¨uiautomator ²»¿ÉÓÃÇÒ auto.getXml ²»¿ÉÓã©");
  556. }

  557. // 9.2 »ñÈ¡µ±Ç°½çÃæ°üÃû£¨¶à²ßÂÔ£ºdumpsys window ¡ú dumpsys activity ¡ú AIWROKÔ­Éú ¡ú shell£©
  558. print.log("\n--- 9.2 »ñÈ¡µ±Ç°½çÃæ°üÃû ---");
  559. var ǰ̨°üÃû = "";
  560. var ǰ̨Activity = "";
  561. var activityÍêÕû = "";

  562. // ²ßÂÔ1£ºdumpsys window ÍêÕûÊä³ö + JSËÑË÷ mCurrentFocus
  563. var ´°¿ÚÍêÕû = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
  564. if (´°¿ÚÍêÕû && ´°¿ÚÍêÕû.length > 0) {
  565.     var focusIndex = ´°¿ÚÍêÕû.indexOf("mCurrentFocus");
  566.     if (focusIndex !== -1) {
  567.         var focusLine = ´°¿ÚÍêÕû.substring(focusIndex, focusIndex + 200).split("\n")[0];
  568.         print.log("½¹µã´°¿Ú£º" + focusLine);
  569.         var spaceIdx = focusLine.indexOf(" ");
  570.         if (spaceIdx !== -1) {
  571.             var sub = focusLine.substring(spaceIdx + 1);
  572.             var slashIdx = sub.indexOf("/");
  573.             if (slashIdx !== -1) {
  574.                 ǰ̨°üÃû = sub.substring(0, slashIdx);
  575.                 print.log("µ±Ç°Ç°Ì¨°üÃû£º" + ǰ̨°üÃû);
  576.             }
  577.         }
  578.     } else {
  579.         // »ØÍË£ºËÑË÷ mFocusedApp
  580.         var appIndex = ´°¿ÚÍêÕû.indexOf("mFocusedApp");
  581.         if (appIndex !== -1) {
  582.             var appLine = ´°¿ÚÍêÕû.substring(appIndex, appIndex + 200).split("\n")[0];
  583.             print.log("½¹µãÓ¦Óãº" + appLine);
  584.             var appSlash = appLine.indexOf("/");
  585.             if (appSlash !== -1) {
  586.                 var appSub = appLine.substring(appLine.indexOf(" ") + 1, appSlash);
  587.                 if (appSub) ǰ̨°üÃû = appSub;
  588.             }
  589.         }
  590.     }
  591. }

  592. // ²ßÂÔ2£ºdumpsys activity activities + JSËÑË÷ mResumedActivity
  593. if (!ǰ̨°üÃû) {
  594.     activityÍêÕû = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
  595.     if (activityÍêÕû && activityÍêÕû.length > 0) {
  596.         var resumedIdx = activityÍêÕû.indexOf("mResumedActivity");
  597.         if (resumedIdx !== -1) {
  598.             var resumedLine = activityÍêÕû.substring(resumedIdx, resumedIdx + 300).split("\n")[0];
  599.             print.log("ǰ̨Activity£º" + resumedLine);
  600.             // ÌáÈ¡°üÃû£º¸ñʽͨ³£Îª mResumedActivity: ActivityRecord{... u0 com.xxx.xxx/...}
  601.             var °üÃûÌáÈ¡ = resumedLine.match(/(\w+\.\w+\.\w+)/);
  602.             if (°üÃûÌáÈ¡) {
  603.                 ǰ̨°üÃû = °üÃûÌáÈ¡[1];
  604.                 print.log("µ±Ç°Ç°Ì¨°üÃû£¨´ÓActivityÌáÈ¡£©£º" + ǰ̨°üÃû);
  605.             }
  606.         }
  607.     }
  608. }

  609. // ²ßÂÔ3£ºAIWROK Ô­Éú·½·¨£¨²¿·Ö·½·¨²»Îȶ¨£¬×÷Ϊ×îºó»ØÍË£©
  610. if (!ǰ̨°üÃû) {
  611.     try {
  612.         if (typeof auto !== "undefined") {
  613.             if (auto.getTopPackName) ǰ̨°üÃû = String(auto.getTopPackName());
  614.             if (!ǰ̨°üÃû && auto.getTopPackNameV2) ǰ̨°üÃû = String(auto.getTopPackNameV2());
  615.             if (!ǰ̨°üÃû && auto.getPackName) ǰ̨°üÃû = String(auto.getPackName());
  616.         }
  617.     } catch (e3) {
  618.         print.log("⚠ AIWROK Ô­Éú·½·¨»ñÈ¡°üÃûʧ°Ü: " + e3.message);
  619.     }
  620. }

  621. if (!ǰ̨°üÃû) {
  622.     print.log("⚠ δ»ñÈ¡µ½Ç°Ì¨°üÃû£¨dumpsys ºÍ AIWROK ·½·¨¾ù²»¿ÉÓã©");
  623. }

  624. // 9.3 »ñÈ¡ Activity Õ»
  625. print.log("\n--- 9.3 »ñÈ¡ Activity Õ»ÐÅÏ¢ ---");
  626. // È·±£ activityÍêÕû ÓÐÖµ£¨¿ÉÄÜÔÚ 9.2 ²ßÂÔ2 ÖÐÒÑ»ñÈ¡£©
  627. if (!activityÍêÕû) {
  628.     activityÍêÕû = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
  629. }
  630. if (activityÍêÕû && activityÍêÕû.length > 0) {
  631.     // ÔÚ JS ÖÐËÑË÷¹Ø¼ü×Ö
  632.     var Õ»ÐÐ = activityÍêÕû.split("\n");
  633.     var Õ»Êä³ö = [];
  634.     for (var si = 0; si < Õ»ÐÐ.length; si++) {
  635.         if (Õ»ÐÐ[si].indexOf("Run #") !== -1 || Õ»ÐÐ[si].indexOf("mResumed") !== -1) {
  636.             Õ»Êä³ö.push(Õ»ÐÐ[si].trim());
  637.         }
  638.     }
  639.     if (Õ»Êä³ö.length > 0) {
  640.         for (var sj = 0; sj < Õ»Êä³ö.length; sj++) {
  641.             print.log("  " + Õ»Êä³ö[sj]);
  642.         }
  643.     } else {
  644.         // »ØÍË£ºÊä³öǰ5Ðп´¿´¸ñʽ
  645.         print.log("ActivityÕ»£ºÎ´ÕÒµ½ Run # ÐÅÏ¢£¬Êä³öǰ5ÐУº");
  646.         for (var sk = 0; sk < Math.min(5, Õ»ÐÐ.length); sk++) {
  647.             print.log("  " + Õ»ÐÐ[sk].trim());
  648.         }
  649.     }
  650. } else {
  651.     print.log("ActivityÕ»£ºdumpsys activity ²»¿ÉÓÃ");
  652. }


  653. // =============================================================================
  654. // µÚÊ®²¿·Ö£º×ÛºÏʵս ¡ª¡ª Ó¦ÓÃÐÅÏ¢²É¼¯Æ÷
  655. // =============================================================================
  656. µ¹¼ÆÊ±(3, "µÚÊ®²¿·Ö£ºÓ¦ÓÃÐÅÏ¢²É¼¯Æ÷");
  657. print.log("\n========== µÚÊ®²¿·Ö£º×ÛºÏʵս£ºÓ¦ÓÃÐÅÏ¢²É¼¯Æ÷ ==========\n");

  658. /**
  659. * ×ÛºÏʾÀý£º²É¼¯É豸ÉÏËùÓеÚÈý·½Ó¦ÓõÄÏêϸÐÅÏ¢
  660. * չʾ adb.exec ÔÚ¸´ÔÓ³¡¾°ÏµÄ×éºÏʹÓÃ
  661. */

  662. // ¹¤¾ßº¯Êý£º»ñȡָ¶¨°üÃûµÄÓ¦ÓÃÏêϸÐÅÏ¢
  663. function »ñȡӦÓÃÏêÇé(°üÃû) {
  664.     var ÏêÇé = {
  665.         °üÃû: °üÃû,
  666.         °æ±¾Ãû: "",
  667.         °æ±¾ºÅ: "",
  668.         °²×°Â·¾¶: "",
  669.         Êý¾ÝĿ¼: "",
  670.         ´óС: "",
  671.         ÊÇ·ñÔËÐÐ: false
  672.     };

  673.     try {
  674.         // »ñÈ¡ÍêÕû package ÐÅÏ¢£¨dumpsys ¹ÜµÀÔÚ²¿·ÖÉ豸·µ»Ø¿Õ£¬¸ÄÓà JS ½âÎö£©
  675.         var °üÐÅÏ¢ÍêÕû = Ö´ÐÐÃüÁî("dumpsys package " + °üÃû + " 2>/dev/null", false);
  676.         if (°üÐÅÏ¢ÍêÕû && °üÐÅÏ¢ÍêÕû.length > 0) {
  677.             // ²ßÂÔ1£ºËÑË÷ versionName= £¨±ê×¼¸ñʽ£©
  678.             var vNameIdx = °üÐÅÏ¢ÍêÕû.indexOf("versionName=");
  679.             if (vNameIdx !== -1) {
  680.                 var vNameSub = °üÐÅÏ¢ÍêÕû.substring(vNameIdx + "versionName=".length);
  681.                 ÏêÇé.°æ±¾Ãû = vNameSub.split("\n")[0].trim();
  682.             }
  683.             // ²ßÂÔ2£ºËÑË÷ versionName £¨²»´ø=£¬²¿·ÖMIUI/HyperOS¸ñʽ£©
  684.             if (!ÏêÇé.°æ±¾Ãû) {
  685.                 var vNameIdx2 = °üÐÅÏ¢ÍêÕû.indexOf("versionName ");
  686.                 if (vNameIdx2 !== -1) {
  687.                     var vNameSub2 = °üÐÅÏ¢ÍêÕû.substring(vNameIdx2 + "versionName ".length);
  688.                     ÏêÇé.°æ±¾Ãû = vNameSub2.split("\n")[0].trim();
  689.                 }
  690.             }
  691.             // ËÑË÷ versionCode
  692.             var vCodeIdx = °üÐÅÏ¢ÍêÕû.indexOf("versionCode=");
  693.             if (vCodeIdx !== -1) {
  694.                 var vCodeSub = °üÐÅÏ¢ÍêÕû.substring(vCodeIdx + "versionCode=".length);
  695.                 ÏêÇé.°æ±¾ºÅ = vCodeSub.split(" ")[0].trim();
  696.             }
  697.             if (!ÏêÇé.°æ±¾ºÅ) {
  698.                 var vCodeIdx2 = °üÐÅÏ¢ÍêÕû.indexOf("versionCode ");
  699.                 if (vCodeIdx2 !== -1) {
  700.                     var vCodeSub2 = °üÐÅÏ¢ÍêÕû.substring(vCodeIdx2 + "versionCode ".length);
  701.                     ÏêÇé.°æ±¾ºÅ = vCodeSub2.split(" ")[0].trim();
  702.                 }
  703.             }
  704.         }

  705.         // ²ßÂÔ3£ºÈç¹û dumpsys package δÕÒµ½£¬³¢ÊÔ pm dump
  706.         if (!ÏêÇé.°æ±¾Ãû) {
  707.             var pmDump = Ö´ÐÐÃüÁî("pm dump " + °üÃû + " 2>/dev/null", false);
  708.             if (pmDump && pmDump.length > 0) {
  709.                 var pmVNameIdx = pmDump.indexOf("versionName=");
  710.                 if (pmVNameIdx !== -1) {
  711.                     ÏêÇé.°æ±¾Ãû = pmDump.substring(pmVNameIdx + "versionName=".length).split("\n")[0].trim();
  712.                 }
  713.                 var pmVCodeIdx = pmDump.indexOf("versionCode=");
  714.                 if (pmVCodeIdx !== -1) {
  715.                     ÏêÇé.°æ±¾ºÅ = pmDump.substring(pmVCodeIdx + "versionCode=".length).split(" ")[0].trim();
  716.                 }
  717.             }
  718.         }

  719.         // »ñÈ¡°²×°Â·¾¶
  720.         var ·¾¶ÐÅÏ¢ = Ö´ÐÐÃüÁî("pm path " + °üÃû, false);
  721.         if (·¾¶ÐÅÏ¢) {
  722.             ÏêÇé.°²×°Â·¾¶ = ·¾¶ÐÅÏ¢.replace("package:", "").trim();
  723.         }

  724.         // ¼ì²éÊÇ·ñÕýÔÚÔËÐÐ
  725.         var ½ø³Ì¼ì²é = Ö´ÐÐÃüÁî("ps | grep " + °üÃû, false);
  726.         ÏêÇé.ÊÇ·ñÔËÐÐ = !!(½ø³Ì¼ì²é && ½ø³Ì¼ì²é.length > 0);

  727.     } catch (e) {
  728.         print.log("⚠ »ñÈ¡ " + °üÃû + " ÏêÇéʧ°Ü: " + e.message);
  729.     }

  730.     return ÏêÇé;
  731. }

  732. // ¹¤¾ßº¯Êý£º»ñÈ¡É豸×ÛºÏÐÅÏ¢
  733. function »ñÈ¡É豸ÐÅÏ¢() {
  734.     var É豸 = {};
  735.     try {
  736.         É豸.ÐͺŠ= Ö´ÐÐÃüÁî("getprop ro.product.model", false);
  737.         É豸.Æ·ÅÆ = Ö´ÐÐÃüÁî("getprop ro.product.brand", false);
  738.         É豸.°²×¿°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.release", false);
  739.         É豸.SDK = Ö´ÐÐÃüÁî("getprop ro.build.version.sdk", false);
  740.         É豸.·Ö±æÂÊ = Ö´ÐÐÃüÁî("wm size", false);
  741.         // µç³ØÐÅÏ¢¸ÄÓöà²ßÂÔ»ñÈ¡º¯Êý
  742.         var É豸µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
  743.         É豸.µçÁ¿ = É豸µç³Ø.µçÁ¿ ? (É豸µç³Ø.µçÁ¿ + "%") : "δ֪";
  744.         É豸.×ÜÄÚ´æ = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -1", false);
  745.         É豸.¿ÉÓô洢 = Ö´ÐÐÃüÁî("df /sdcard | tail -1", false);
  746.     } catch (e) {
  747.         print.log("⚠ »ñÈ¡É豸ÐÅϢʧ°Ü: " + e.message);
  748.     }
  749.     return É豸;
  750. }

  751. // Ö´Ðвɼ¯
  752. print.log("--- 10.1 ²É¼¯É豸ÐÅÏ¢ ---");
  753. var É豸ÐÅÏ¢ = »ñÈ¡É豸ÐÅÏ¢();
  754. print.log("É豸Ðͺţº" + É豸ÐÅÏ¢.ÐͺÅ);
  755. print.log("Éè±¸Æ·ÅÆ£º" + É豸ÐÅÏ¢.Æ·ÅÆ);
  756. print.log("°²×¿°æ±¾£º" + É豸ÐÅÏ¢.°²×¿°æ±¾);
  757. print.log("ÆÁÄ»·Ö±æÂÊ£º" + É豸ÐÅÏ¢.·Ö±æÂÊ);
  758. print.log("µçÁ¿ÐÅÏ¢£º" + É豸ÐÅÏ¢.µçÁ¿);
  759. print.log("ÄÚ´æÐÅÏ¢£º" + É豸ÐÅÏ¢.×ÜÄÚ´æ);

  760. print.log("\n--- 10.2 ²É¼¯µÚÈý·½Ó¦ÓÃÐÅÏ¢£¨Ç°3¸ö£©---");
  761. var Ó¦ÓÃÁбíԭʼ = Ö´ÐÐÃüÁî("pm list packages -3", false);
  762. if (Ó¦ÓÃÁбíԭʼ) {
  763.     var Ó¦ÓÃÁбí = Ó¦ÓÃÁбíԭʼ.split("\n");
  764.     var ²É¼¯ÊýÁ¿ = Math.min(3, Ó¦ÓÃÁбí.length);
  765.     for (var j = 0; j < ²É¼¯ÊýÁ¿; j++) {
  766.         var °üÃû = Ó¦ÓÃÁбí[j].replace("package:", "").trim();
  767.         if (°üÃû) {
  768.             print.log("\n  Ó¦Óà " + (j + 1) + ": " + °üÃû);
  769.             var ÏêÇé = »ñȡӦÓÃÏêÇé(°üÃû);
  770.             print.log("    °æ±¾Ãû: " + ÏêÇé.°æ±¾Ãû);
  771.             print.log("    °æ±¾ºÅ: " + ÏêÇé.°æ±¾ºÅ);
  772.             print.log("    °²×°Â·¾¶: " + ÏêÇé.°²×°Â·¾¶);
  773.             print.log("    ÊÇ·ñÔËÐÐ: " + (ÏêÇé.ÊÇ·ñÔËÐÐ ? "ÊÇ ✓" : "·ñ"));
  774.         }
  775.     }
  776. }


  777. // =============================================================================
  778. // µÚʮһ²¿·Ö£º×ÛºÏʵս ¡ª¡ª ϵͳ¼à¿Ø¹¤¾ß
  779. // =============================================================================
  780. µ¹¼ÆÊ±(3, "µÚʮһ²¿·Ö£ºÏµÍ³¼à¿Ø¹¤¾ß");
  781. print.log("\n\n========== µÚʮһ²¿·Ö£º×ÛºÏʵս£ºÏµÍ³¼à¿Ø¹¤¾ß ==========\n");

  782. /**
  783. * ×ÛºÏʾÀý£ºÏµÍ³×ÊÔ´¼à¿Ø¹¤¾ß
  784. * ¶¨Ê±²É¼¯ CPU¡¢ÄÚ´æ¡¢µç³Ø¡¢ÍøÂçµÈϵͳָ±ê
  785. */

  786. // ¹¤¾ßº¯Êý£º»ñÈ¡ CPU ʹÓÃÂÊ£¨top ÃüÁîÊä³ö¸ñʽÒòÉ豸¶øÒ죬¶à²ßÂÔ½âÎö£©
  787. function »ñÈ¡CPUʹÓÃÂÊ() {
  788.     try {
  789.         var cpuÐÅÏ¢ = Ö´ÐÐÃüÁî("top -n 1 -b 2>/dev/null", false);
  790.         if (cpuÐÅÏ¢) {
  791.             var ÐÐÊý×é = cpuÐÅÏ¢.split("\n");
  792.             for (var k = 0; k < ÐÐÊý×é.length; k++) {
  793.                 var ÐÐ = ÐÐÊý×é[k].trim();
  794.                 // Æ¥Åä°üº¬ CPU ºÍ % µÄÐУ¨Èç "400%cpu 12%user 4%nice 8%sys 376%idle"£©
  795.                 if (ÐÐ.indexOf("cpu") !== -1 && ÐÐ.indexOf("%") !== -1 && ÐÐ.indexOf("PID") === -1) {
  796.                     return ÐÐ;
  797.                 }
  798.             }
  799.             // Èç¹ûûÕÒµ½ CPU ÐУ¬·µ»ØÇ°3ÐÐ
  800.             return ÐÐÊý×é.slice(0, 3).join("\n");
  801.         }
  802.     } catch (e) {
  803.         print.log("⚠ »ñÈ¡CPUʹÓÃÂÊʧ°Ü: " + e.message);
  804.     }
  805.     return "»ñȡʧ°Ü";
  806. }

  807. // ¹¤¾ßº¯Êý£º»ñÈ¡ÄÚ´æÊ¹ÓÃÇé¿ö
  808. function »ñÈ¡ÄÚ´æÊ¹ÓÃ() {
  809.     try {
  810.         var meminfo = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -3", false);
  811.         return meminfo || "»ñȡʧ°Ü";
  812.     } catch (e) {
  813.         return "»ñȡʧ°Ü: " + e.message;
  814.     }
  815. }

  816. // ¹¤¾ßº¯Êý£º»ñÈ¡µç³ØÏêϸÐÅÏ¢£¨¶à²ßÂÔ£ºsysfsÎļþ ¡ú dumpsys½âÎö ¡ú getprop»ØÍË£©
  817. function »ñÈ¡µç³ØÐÅÏ¢() {
  818.     var µç³Ø = { µçÁ¿: "", ζÈ: "", ״̬: "", ¼¼Êõ: "" };
  819.     try {
  820.         // ²ßÂÔ1£ºsysfs Îļþϵͳ£¨±ê׼·¾¶£©
  821.         µç³Ø.µçÁ¿ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/capacity 2>/dev/null", false);
  822.         var ζÈԭʼ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/temp 2>/dev/null", false);
  823.         if (ζÈԭʼ) {
  824.             var ζÈÖµ = parseInt(ζÈԭʼ.trim(), 10);
  825.             µç³Ø.ÎÂ¶È = isNaN(ζÈÖµ) ? "" : (ζÈÖµ / 10) + "¡ãC";
  826.         }
  827.         var ״̬ԭʼ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/status 2>/dev/null", false);
  828.         var ״̬ӳÉä = {"Charging": "³äµçÖÐ", "Discharging": "·ÅµçÖÐ", "Full": "ÒѳäÂú", "Not charging": "δ³äµç"};
  829.         µç³Ø.״̬ = ״̬ӳÉä[״̬ԭʼ] || ״̬ԭʼ || "";
  830.         µç³Ø.¼¼Êõ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/technology 2>/dev/null", false);

  831.         // ²ßÂÔ2£ºÈç¹û sysfs Ϊ¿Õ£¬Óà dumpsys battery ½âÎö£¨²»ÓùܵÀgrep£¬Ö±½ÓJSËÑË÷£©
  832.         if (!µç³Ø.µçÁ¿) {
  833.             var dumpsysµç³Ø = Ö´ÐÐÃüÁî("dumpsys battery 2>/dev/null", false);
  834.             if (dumpsysµç³Ø && dumpsysµç³Ø.length > 0) {
  835.                 var µç³ØÐÐ = dumpsysµç³Ø.split("\n");
  836.                 for (var bi = 0; bi < µç³ØÐÐ.length; bi++) {
  837.                     var ÐÐÄÚÈÝ = µç³ØÐÐ[bi].trim();
  838.                     if (ÐÐÄÚÈÝ.indexOf("level:") !== -1 && !µç³Ø.µçÁ¿) {
  839.                         µç³Ø.µçÁ¿ = ÐÐÄÚÈÝ.replace("level:", "").trim();
  840.                     }
  841.                     if (ÐÐÄÚÈÝ.indexOf("temperature:") !== -1 && !µç³Ø.ζÈ) {
  842.                         var ζÈÌáÈ¡ = parseInt(ÐÐÄÚÈÝ.replace("temperature:", "").trim(), 10);
  843.                         µç³Ø.ÎÂ¶È = isNaN(ζÈÌáÈ¡) ? "" : (ζÈÌáÈ¡ / 10) + "¡ãC";
  844.                     }
  845.                     if (ÐÐÄÚÈÝ.indexOf("status:") !== -1 && !µç³Ø.״̬) {
  846.                         var ״̬ÌáÈ¡ = ÐÐÄÚÈÝ.replace("status:", "").trim();
  847.                         µç³Ø.״̬ = ״̬ӳÉä[״̬ÌáÈ¡] || ״̬ÌáÈ¡ || "";
  848.                     }
  849.                     if (ÐÐÄÚÈÝ.indexOf("technology:") !== -1 && !µç³Ø.¼¼Êõ) {
  850.                         µç³Ø.¼¼Êõ = ÐÐÄÚÈÝ.replace("technology:", "").trim();
  851.                     }
  852.                 }
  853.             }
  854.         }

  855.         // ²ßÂÔ3£ºÈç¹ûÈÔΪ¿Õ£¬³¢ÊÔ bms ·¾¶£¨²¿·Ö¸ßͨÉ豸£©
  856.         if (!µç³Ø.µçÁ¿) {
  857.             µç³Ø.µçÁ¿ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/bms/capacity 2>/dev/null", false);
  858.         }
  859.     } catch (e) {
  860.         print.log("⚠ »ñÈ¡µç³ØÐÅϢʧ°Ü: " + e.message);
  861.     }
  862.     return µç³Ø;
  863. }

  864. // ¹¤¾ßº¯Êý£º»ñÈ¡ÍøÂçÁ÷Á¿Í³¼Æ
  865. function »ñÈ¡ÍøÂçÁ÷Á¿() {
  866.     try {
  867.         // »ñÈ¡ wlan0 ½Ó¿ÚµÄÁ÷Á¿Í³¼Æ
  868.         var Á÷Á¿ = Ö´ÐÐÃüÁî("cat /proc/net/dev | grep wlan0", false);
  869.         if (Á÷Á¿) {
  870.             // /proc/net/dev ¸ñʽ: "  wlan0: rx_bytes rx_packets ... tx_bytes tx_packets ..."
  871.             // trim ºó split: ×Ö¶Î[0]="wlan0:" ×Ö¶Î[1]=rx_bytes ×Ö¶Î[2]=rx_packets ... ×Ö¶Î[9]=tx_bytes ×Ö¶Î[10]=tx_packets
  872.             var ×Ö¶Î = Á÷Á¿.trim().split(/\s+/);
  873.             if (×Ö¶Î.length >= 11) {
  874.                 return {
  875.                     ½ÓÊÕ×Ö½Ú: ×Ö¶Î[1],
  876.                     ½ÓÊÕ°üÊý: ×Ö¶Î[2],
  877.                     ·¢ËÍ×Ö½Ú: ×Ö¶Î[9],
  878.                     ·¢ËͰüÊý: ×Ö¶Î[10]
  879.                 };
  880.             }
  881.         }
  882.     } catch (e) {
  883.         print.log("⚠ »ñÈ¡ÍøÂçÁ÷Á¿Ê§°Ü: " + e.message);
  884.     }
  885.     return null;
  886. }

  887. // Ö´ÐÐ¼à¿Ø
  888. print.log("--- 11.1 ϵͳ×ÊÔ´¿ìÕÕ ---");
  889. print.log("\n[CPU ʹÓÃÂÊ]");
  890. print.log("  " + »ñÈ¡CPUʹÓÃÂÊ());

  891. print.log("\n[ÄÚ´æÊ¹ÓÃ]");
  892. var ÄÚ´æ = »ñÈ¡ÄÚ´æÊ¹ÓÃ();
  893. var ÄÚ´æÐÐ = ÄÚ´æ.split("\n");
  894. for (var p = 0; p < ÄÚ´æÐÐ.length; p++) {
  895.     print.log("  " + ÄÚ´æÐÐ[p]);
  896. }

  897. print.log("\n[µç³ØÐÅÏ¢]");
  898. var µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
  899. print.log("  µçÁ¿: " + (µç³Ø.µçÁ¿ || "δ֪") + "%");
  900. print.log("  Î¶È: " + (µç³Ø.ÎÂ¶È || "δ֪"));
  901. print.log("  ×´Ì¬: " + (µç³Ø.״̬ || "δ֪"));
  902. print.log("  µç³Ø¼¼Êõ: " + (µç³Ø.¼¼Êõ || "δ֪"));

  903. print.log("\n[ÍøÂçÁ÷Á¿]");
  904. var Á÷Á¿ = »ñÈ¡ÍøÂçÁ÷Á¿();
  905. if (Á÷Á¿) {
  906.     print.log("  ½ÓÊÕ: " + Á÷Á¿.½ÓÊÕ×Ö½Ú + " ×Ö½Ú / " + Á÷Á¿.½ÓÊÕ°üÊý + " °ü");
  907.     print.log("  ·¢ËÍ: " + Á÷Á¿.·¢ËÍ×Ö½Ú + " ×Ö½Ú / " + Á÷Á¿.·¢ËͰüÊý + " °ü");
  908. } else {
  909.     print.log("  »ñÈ¡Á÷Á¿ÐÅϢʧ°Ü");
  910. }


  911. // =============================================================================
  912. // µÚÊ®¶þ²¿·Ö£º×ÛºÏʵս ¡ª¡ª ÖÇÄÜÇåÀí¹¤¾ß
  913. // =============================================================================
  914. µ¹¼ÆÊ±(3, "µÚÊ®¶þ²¿·Ö£ºÖÇÄÜÇåÀí¹¤¾ß");
  915. print.log("\n\n========== µÚÊ®¶þ²¿·Ö£º×ÛºÏʵս£ºÖÇÄÜÇåÀí¹¤¾ß ==========\n");

  916. /**
  917. * ×ÛºÏʾÀý£ºÖÇÄÜÇåÀí¹¤¾ß
  918. * ÇåÀí»º´æ¡¢É±ËÀºǫ́½ø³Ì¡¢ÊÍ·ÅÄÚ´æ
  919. * չʾ root ºÍ·Ç root ģʽµÄ×éºÏʹÓÃ
  920. */

  921. // ¹¤¾ßº¯Êý£º»ñÈ¡»º´æ´óС
  922. function »ñÈ¡»º´æ´óС() {
  923.     try {
  924.         var »º´æÐÅÏ¢ = Ö´ÐÐÃüÁî("du -sh /sdcard/Android/data/*/cache 2>/dev/null", false);
  925.         return »º´æÐÅÏ¢ || "ÎÞ»º´æÊý¾Ý";
  926.     } catch (e) {
  927.         return "»ñȡʧ°Ü";
  928.     }
  929. }

  930. // ¹¤¾ßº¯Êý£ºÇåÀíÖ¸¶¨Ó¦ÓõĻº´æ
  931. function ÇåÀíÓ¦Óûº´æ(°üÃû) {
  932.     // pm clear »áÇå³ýËùÓÐÊý¾Ý£¨°üÀ¨µÇ¼״̬£©£¬½÷É÷ʹÓÃ
  933.     // ÕâÀïʹÓà root ȨÏÞÖ»Ç建´æÄ¿Â¼
  934.     var ½á¹û = Ö´ÐÐÃüÁî("rm -rf /sdcard/Android/data/" + °üÃû + "/cache/* 2>/dev/null", false);
  935.     return ½á¹û;
  936. }

  937. // ¹¤¾ßº¯Êý£ºÇ¿ÖÆÍ£Ö¹ËùÓеÚÈý·½ºǫ́ӦÓÃ
  938. function Í£Ö¹ºǫ́ӦÓÃ() {
  939.     var Í£Ö¹ÊýÁ¿ = 0;
  940.     try {
  941.         var Ó¦ÓÃÁбí = Ö´ÐÐÃüÁî("pm list packages -3", false);
  942.         if (Ó¦ÓÃÁбí) {
  943.             var Ó¦Óà = Ó¦ÓÃÁбí.split("\n");
  944.             for (var q = 0; q < Ó¦ÓÃ.length; q++) {
  945.                 var °üÃû = Ó¦ÓÃ[q].replace("package:", "").trim();
  946.                 if (°üÃû) {
  947.                     // ¼ì²éÊÇ·ñÔÚÔËÐÐ
  948.                     var ½ø³Ì = Ö´ÐÐÃüÁî("ps | grep " + °üÃû, false);
  949.                     if (½ø³Ì && ½ø³Ì.length > 0) {
  950.                         // Ç¿ÖÆÍ£Ö¹
  951.                         Ö´ÐÐÃüÁĬ("am force-stop " + °üÃû, false);
  952.                         print.log("  ✓ ÒÑÍ£Ö¹: " + °üÃû);
  953.                         Í£Ö¹ÊýÁ¿++;
  954.                     }
  955.                 }
  956.             }
  957.         }
  958.     } catch (e) {
  959.         print.log("⚠ Í£Ö¹ºǫ́ӦÓÃʧ°Ü: " + e.message);
  960.     }
  961.     return Í£Ö¹ÊýÁ¿;
  962. }

  963. // Ö´ÐÐÇåÀí£¨ÑÝʾģʽ£¬²»Êµ¼ÊÖ´ÐУ©
  964. print.log("--- 12.1 ²é¿´»º´æÇé¿ö ---");
  965. print.log("»º´æÐÅÏ¢£º\n" + »ñÈ¡»º´æ´óС());

  966. print.log("\n--- 12.2 ÇåÀíÁÙʱÎļþ ---");
  967. Ö´ÐÐÃüÁĬ("rm -rf /sdcard/aiwrok_test/* 2>/dev/null", false);
  968. print.log("✓ ÒÑÇåÀí /sdcard/aiwrok_test/ ÁÙʱÎļþ");

  969. print.log("\n--- 12.3 Í£Ö¹ºǫ́ӦÓã¨ÐèҪʱÆôÓã©---");
  970. print.log("£¨ÑÝʾģʽ£©Êµ¼ÊʹÓÃʱµ÷Óà ֹͣºǫ́ӦÓÃ() º¯Êý");

  971. // ʹÓà root ģʽÇå¿Õϵͳ»º´æ£¨¸ß¼¶²Ù×÷£©
  972. print.log("\n--- 12.4 ϵͳ¼¶»º´æÇåÀí£¨root£©---");
  973. // adb.exec("echo 3 > /proc/sys/vm/drop_caches", true);  // root ȨÏÞÊÍ·ÅÄÚ´æ
  974. print.log("£¨Ê¾Àý£©adb.exec('echo 3 > /proc/sys/vm/drop_caches', true) ÒÔ root Çå¿Õϵͳ»º´æ");


  975. // =============================================================================
  976. // µÚÊ®Èý²¿·Ö£ºadb.exec Óë agent.shell ¶Ô±ÈÓ뻥ת
  977. // =============================================================================
  978. µ¹¼ÆÊ±(3, "µÚÊ®Èý²¿·Ö£ºAPI¶Ô±ÈÓ뻥ת");
  979. print.log("\n\n========== µÚÊ®Èý²¿·Ö£ºadb.exec Óë agent.shell ¶Ô±È ==========\n");

  980. print.log("©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ð©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ð©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´");
  981. print.log("©¦   ÌØÐÔ      ©¦   adb.exec()       ©¦   agent.shell()    ©¦");
  982. print.log("©À©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©à©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©à©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©È");
  983. print.log("©¦ ȨÏÞ¿ØÖÆ    ©¦ µÚ¶þ²ÎÊý¿ØÖÆ root  ©¦ ÐèÒª´úÀíģʽ/root  ©¦");
  984. print.log("©¦ ·µ»ØÖµ      ©¦ ÐèÇåÏ´ successMsg  ©¦ Ïà¶Ô¸É¾»           ©¦");
  985. print.log("©¦ ÊÊÓó¡¾°    ©¦ ͨÓÃÃüÁîÖ´ÐР      ©¦ ´úÀíģʽ×Ô¶¯»¯     ©¦");
  986. print.log("©¦ root Ö§³Ö   ©¦ isRoot=true ¼´¿É   ©¦ ÒÀÀµ´úÀíģʽ       ©¦");
  987. print.log("©¦ Òì³£´¦Àí    ©¦ Ðè try-catch       ©¦ Ðè try-catch       ©¦");
  988. print.log("©¦ Ö´ÐÐģʽ    ©¦ É豸¶ËÖ±½ÓÖ´ÐР    ©¦ ͨ¹ý agent ´úÀí    ©¦");
  989. print.log("©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ø©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ø©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼");

  990. // »¥×ªÊ¾Àý£ºÍ³Ò»ÃüÁîÖ´ÐнӿÚ
  991. print.log("\n--- ͳһÃüÁîÖ´Ðнӿڣ¨×Ô¶¯Ñ¡Ôñ adb.exec »ò agent.shell£©---");

  992. function ÖÇÄÜÖ´ÐÐ(ÃüÁî, ÐèÒªroot) {
  993.     var ½á¹û = "";
  994.     try {
  995.         // ÓÅÏÈʹÓà adb.exec
  996.         if (typeof adb !== "undefined" && adb.exec) {
  997.             var ԭʼ = adb.exec(ÃüÁî, ÐèÒªroot || false);
  998.             ½á¹û = ÇåÏ´Êä³ö(String(ԭʼ));
  999.             print.log("[adb.exec] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
  1000.         }
  1001.         // »ØÍ˵½ agent.shell
  1002.         else if (typeof agent !== "undefined" && agent.shell) {
  1003.             ½á¹û = String(agent.shell(ÃüÁî));
  1004.             print.log("[agent.shell] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
  1005.         }
  1006.         // »ØÍ˵½ shell.exec
  1007.         else if (typeof shell !== "undefined" && shell.exec) {
  1008.             ½á¹û = String(shell.exec(ÃüÁî));
  1009.             print.log("[shell.exec] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
  1010.         }
  1011.         else {
  1012.             print.log("⚠ ÎÞ¿ÉÓõÄÃüÁîÖ´ÐнӿÚ");
  1013.         }
  1014.     } catch (e) {
  1015.         print.log("⚠ ÖÇÄÜÖ´ÐÐÒì³£: " + e.message);
  1016.     }
  1017.     return ½á¹û;
  1018. }

  1019. // ²âÊÔͳһ½Ó¿Ú
  1020. print.log("\n²âÊÔͳһ½Ó¿Ú£º");
  1021. ÖÇÄÜÖ´ÐÐ("getprop ro.product.model", false);
  1022. ÖÇÄÜÖ´ÐÐ("ls /sdcard/", false);


  1023. // =============================================================================
  1024. // µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÈÎÎñ ¡ª¡ª ÖÜÆÚÐÔϵͳ¼à¿Ø
  1025. // =============================================================================
  1026. µ¹¼ÆÊ±(3, "µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÏµÍ³¼à¿Ø");
  1027. print.log("\n\n========== µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÏµÍ³¼à¿Ø ==========\n");

  1028. /**
  1029. * ×ÛºÏʾÀý£º¶¨Ê±¼à¿ØÏµÍ³×´Ì¬²¢¼Ç¼ÈÕÖ¾
  1030. * ʹÓà setInterval ÖÜÆÚÐԲɼ¯ÏµÍ³ÐÅÏ¢
  1031. */

  1032. var ¼à¿Ø´ÎÊý = 0;
  1033. var ×î´ó¼à¿Ø´ÎÊý = 3;  // ÑÝʾÓã¬Êµ¼Ê¿ÉÉèΪ¸ü´óÖµ

  1034. function ϵͳ¼à¿ØÈÎÎñ() {
  1035.     ¼à¿Ø´ÎÊý++;
  1036.     print.log("\n--- µÚ " + ¼à¿Ø´ÎÊý + " ´Î¼à¿Ø [" + new Date().toLocaleTimeString() + "] ---");

  1037.     // ²É¼¯ CPU
  1038.     var cpu = »ñÈ¡CPUʹÓÃÂÊ();
  1039.     print.log("  CPU: " + cpu);

  1040.     // ²É¼¯ÄÚ´æ
  1041.     var mem = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -1", false);
  1042.     print.log("  ÄÚ´æ: " + mem);

  1043.     // ²É¼¯µç³Ø
  1044.     var µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
  1045.     print.log("  µçÁ¿: " + (µç³Ø.µçÁ¿ || "?") + "% | ζÈ: " + (µç³Ø.ÎÂ¶È || "?"));

  1046.     // ²É¼¯Ç°Ì¨Ó¦Ó㨹ܵÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎödumpsys windowÍêÕûÊä³ö£©
  1047.     var ¼à¿Ø´°¿Ú = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
  1048.     if (¼à¿Ø´°¿Ú && ¼à¿Ø´°¿Ú.length > 0) {
  1049.         var focusIdx = ¼à¿Ø´°¿Ú.indexOf("mCurrentFocus");
  1050.         if (focusIdx !== -1) {
  1051.             var focusÐÐ = ¼à¿Ø´°¿Ú.substring(focusIdx, focusIdx + 200).split("\n")[0];
  1052.             print.log("  Ç°Ì¨: " + focusÐÐ);
  1053.         } else {
  1054.             // »ØÍË£ºËÑË÷ mFocusedApp
  1055.             var appIdx = ¼à¿Ø´°¿Ú.indexOf("mFocusedApp");
  1056.             if (appIdx !== -1) {
  1057.                 var appÐÐ = ¼à¿Ø´°¿Ú.substring(appIdx, appIdx + 200).split("\n")[0];
  1058.                 print.log("  Ç°Ì¨: " + appÐÐ);
  1059.             } else {
  1060.                 print.log("  Ç°Ì¨: δ»ñÈ¡µ½½¹µã´°¿Ú");
  1061.             }
  1062.         }
  1063.     } else {
  1064.         print.log("  Ç°Ì¨: dumpsys window ²»¿ÉÓÃ");
  1065.     }

  1066.     if (¼à¿Ø´ÎÊý >= ×î´ó¼à¿Ø´ÎÊý) {
  1067.         print.log("\n✓ ¼à¿ØÍê³É£¬¹²Ö´ÐÐ " + ¼à¿Ø´ÎÊý + " ´Î");
  1068.     }
  1069. }

  1070. // Ö´ÐÐÒ»´Î¼à¿ØÑÝʾ
  1071. ϵͳ¼à¿ØÈÎÎñ();

  1072. // ʵ¼Ê¶¨Ê±¼à¿Ø£¨È¡Ïû×¢Êͼ´¿ÉÆôÓã©
  1073. // setInterval(function() {
  1074. //     ÏµÍ³¼à¿ØÈÎÎñ();
  1075. // }, 60000);  // ÿ60Ãë¼à¿ØÒ»´Î


  1076. // =============================================================================
  1077. // µÚÊ®Î岿·Ö£ºÈÕÖ¾¼Ç¼ϵͳ
  1078. // =============================================================================
  1079. µ¹¼ÆÊ±(3, "µÚÊ®Î岿·Ö£ºÈÕÖ¾¼Ç¼ϵͳ");
  1080. print.log("\n\n========== µÚÊ®Î岿·Ö£ºadb.exec ÈÕÖ¾¼Ç¼ϵͳ ==========\n");

  1081. /**
  1082. * ×ÛºÏʾÀý£º½« adb.exec Ö´Ðнá¹ûдÈëÈÕÖ¾Îļþ
  1083. * ʵÏÖÃüÁîÖ´ÐÐÈÕÖ¾µÄ³Ö¾Ã»¯´æ´¢
  1084. */

  1085. function дÈëÈÕÖ¾(ÄÚÈÝ) {
  1086.     var ʱ¼ä´Á = new Date().toISOString();
  1087.     var ÈÕÖ¾ÐÐ = "[" + ʱ¼ä´Á + "] " + ÄÚÈÝ + "\n";
  1088.     // ʹÓà echo ×·¼ÓдÈëÈÕÖ¾Îļþ
  1089.     Ö´ÐÐÃüÁĬ("echo '" + ÈÕÖ¾ÐÐ.replace(/'/g, "'\\''") + "' >> /sdcard/aiwrok_test/adb_log.txt", false);
  1090. }

  1091. function ¼Ç¼ÃüÁîÖ´ÐÐ(ÃüÁî, ÊÇ·ñroot) {
  1092.     var ¿ªÊ¼Ê±¼ä = Date.now();
  1093.     var ½á¹û = Ö´ÐÐÃüÁî(ÃüÁî, ÊÇ·ñroot);
  1094.     var ºÄʱ = Date.now() - ¿ªÊ¼Ê±¼ä;

  1095.     var ÈÕÖ¾ÄÚÈÝ = "CMD: " + ÃüÁî + " | ROOT: " + ÊÇ·ñroot + " | TIME: " + ºÄʱ + "ms | RESULT: " + ½á¹û.substring(0, 100);
  1096.     дÈëÈÕÖ¾(ÈÕÖ¾ÄÚÈÝ);
  1097.     print.log("  &#128221; " + ÈÕÖ¾ÄÚÈÝ);

  1098.     return ½á¹û;
  1099. }

  1100. print.log("--- 15.1 ¼Ç¼ÃüÁîÖ´ÐÐÈÕÖ¾ ---");
  1101. // ´´½¨ÈÕ־Ŀ¼
  1102. Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
  1103. // Ö´Ðв¢¼Ç¼
  1104. ¼Ç¼ÃüÁîÖ´ÐÐ("getprop ro.product.model", false);
  1105. ¼Ç¼ÃüÁîÖ´ÐÐ("ls /sdcard/", false);
  1106. // µç³ØÐÅÏ¢£º²»Óà grep ¹ÜµÀ£¨·µ»Ø¿Õ£©£¬¸ÄÓöà²ßÂÔ»ñÈ¡º¯Êý
  1107. var µç³ØÈÕÖ¾ = »ñÈ¡µç³ØÐÅÏ¢();
  1108. ¼Ç¼ÃüÁîÖ´ÐÐ("echo 'battery_level=" + (µç³ØÈÕÖ¾.µçÁ¿ || "unknown") + " temp=" + (µç³ØÈÕÖ¾.ÎÂ¶È || "unknown") + "'", false);

  1109. print.log("\n--- 15.2 ²é¿´ÈÕÖ¾Îļþ ---");
  1110. var ÈÕÖ¾ÄÚÈÝ = Ö´ÐÐÃüÁî("cat /sdcard/aiwrok_test/adb_log.txt 2>/dev/null", false);
  1111. print.log("ÈÕÖ¾ÄÚÈÝ£º\n" + (ÈÕÖ¾ÄÚÈÝ || "ÈÕ־Ϊ¿Õ"));


  1112. // =============================================================================
  1113. // ×ܽá
  1114. // =============================================================================
  1115. print.log("\n\n========== ×ܽá ==========\n");
  1116. print.log("adb.exec(command, isRoot) ºËÐÄÓ÷¨£º");
  1117. print.log("  1. »ù´¡Ó÷¨£ºadb.exec('ls', false) ¡ú ·ÇrootÖ´ÐÐlsÃüÁî");
  1118. print.log("  2. rootÓ÷¨£ºadb.exec('chmod 777 /data/tmp', true) ¡ú rootÖ´ÐÐ");
  1119. print.log("  3. Îļþ²Ù×÷£ºls/cat/cp/mv/rm/mkdir/chmod");
  1120. print.log("  4. Ó¦ÓùÜÀí£ºpm list/install/uninstall/clear, am start/force-stop");
  1121. print.log("  5. ϵͳÐÅÏ¢£ºgetprop/dumpsys/wm size/df/cat /proc/meminfo");
  1122. print.log("  6. ÊäÈëÄ£Ä⣺input tap/swipe/text/keyevent");
  1123. print.log("  7. ½ØÍ¼Â¼ÆÁ£ºscreencap/screenrecord");
  1124. print.log("  8. ½ø³Ì¹ÜÀí£ºps/top/kill");
  1125. print.log("  9. ÍøÂç²Ù×÷£ºping/ip/curl");
  1126. print.log(" 10. UI¸¨Öú£ºuiautomator dump");
  1127. print.log("");
  1128. print.log("×¢ÒâÊÂÏ");
  1129. print.log("  - ·µ»ØÖµÎª JSON ¸ñʽ {\"errorMsg\":\"\",\"success\":\"ÄÚÈÝ\"}£¬ÐèÌáÈ¡ success ×Ö¶Î");
  1130. print.log("  - Java String ÐèÓà String() תΪ JS Ô­Éú×Ö·û´®ÔÙ×öÕýÔò/·Ö¸î");
  1131. print.log("  - ²»Ö§³Ö grep -P£¬Ê¹ÓÃÆÕͨ grep");
  1132. print.log("  - root ģʽÐèÉ豸ÒÑ root »ò PC_ADB Á¬½Ó");
  1133. print.log("  - ½¨ÒéËùÓе÷Óðü¹ü try-catch ·ÀÖ¹Òì³£");
  1134. print.log("  - isRoot=true ʱµ×²ãͨ¹ý su -c Ö´ÐУ¬Ðè root ȨÏÞ");

  1135. print.log("\n✅ adb.exec() ¸ß¼¶Ó÷¨Ê¾ÀýÖ´ÐÐÍê±Ï");
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-8-5 07:42 , Processed in 0.111833 second(s), 34 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí