|
|
adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý
- // =============================================================================
- // AIWROK adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý
- // =============================================================================
- // ÊÊÓÃÆ½Ì¨£ºAIWROK °²×¿×Ô¶¯»¯Èí¼þ
- // ÒýÇæ£ºRhino (ES5)
- // ˵Ã÷£ºadb.exec(command, isRoot) ÊÇ AIWROK ÌṩµÄ ADB ÃüÁîÖ´ÐнӿÚ
- // - ²ÎÊý1 (command)£ºÒªÖ´ÐÐµÄ shell ÃüÁî×Ö·û´®
- // - ²ÎÊý2 (isRoot)£ºboolean£¬true=ÒÔ root ȨÏÞÖ´ÐÐ(su -c)£¬false=ÆÕͨȨÏÞÖ´ÐÐ
- // - ·µ»ØÖµ£ºJSON ¸ñʽ {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}£¬ÐèÌáÈ¡ success ×Ö¶Î
- //
- // Óë agent.shell() µÄÇø±ð£º
- // - agent.shell() ½öÔÚ´úÀíģʽÏ¿ÉÓã¬ÐèÒª root »ò PC_ADB Á¬½Ó
- // - adb.exec() ¿ÉÖ±½ÓÔÚÉ豸¶ËÖ´ÐУ¬isRoot ²ÎÊýÁé»î¿ØÖÆÈ¨ÏÞ
- // - adb.exec() ·µ»ØÖµÐèÒªÇåÏ´£¬agent.shell() ·µ»ØÖµÏà¶Ô¸É¾»
- // =============================================================================
- print.log("===== adb.exec() ¸ß¼¶Ó÷¨ÍêÕûʾÀý =====\n");
- // =============================================================================
- // ¹¤¾ßº¯Êý£ºÇåÏ´ adb.exec ·µ»ØÖµ
- // =============================================================================
- // adb.exec() ʵ¼Ê·µ»Ø JSON ¸ñʽ: {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}
- // ÐèÒªÌáÈ¡ success ×ֶεÄÖµ£¬²¢´¦ÀíתÒå×Ö·û
- function ÇåÏ´Êä³ö(Ôʼ½á¹û) {
- if (!Ôʼ½á¹û) return "";
- var ½á¹û = String(Ôʼ½á¹û);
- // ¸ñʽ1: JSON ¸ñʽ {"errorMsg":"","success":"ʵ¼ÊÄÚÈÝ"}
- if (½á¹û.charAt(0) === "{") {
- try {
- var json = JSON.parse(½á¹û);
- if (json && json.success !== undefined) {
- // ¼ì²éÊÇ·ñÓдíÎó
- if (json.errorMsg && json.errorMsg !== "") {
- print.log("⚠ ÃüÁî·µ»Ø´íÎó: " + json.errorMsg);
- }
- return String(json.success).trim();
- }
- } catch (e) {
- // JSON.parse ʧ°Ü£¬³¢ÊÔÕýÔòÌáÈ¡ success ×Ö¶Î
- var successMatch = ½á¹û.match(/"success"\s*:\s*"([\s\S]*?)"\s*[,}]/);
- if (successMatch) {
- return successMatch[1]
- .replace(/\\n/g, "\n")
- .replace(/\\t/g, "\t")
- .replace(/\\"/g, '"')
- .replace(/\\\\/g, "\\")
- .trim();
- }
- }
- return ½á¹û.trim();
- }
- // ¸ñʽ2: ¾É¸ñʽ successMsg:ÄÚÈÝ,errorMsg:ÄÚÈÝ£¨¼æÈÝ agent.shell£©
- if (½á¹û.indexOf("successMsg:") === 0) {
- ½á¹û = ½á¹û.substring("successMsg:".length);
- }
- var ´íÎóË÷Òý = ½á¹û.indexOf(",errorMsg:");
- if (´íÎóË÷Òý !== -1) {
- ½á¹û = ½á¹û.substring(0, ´íÎóË÷Òý);
- }
- return ½á¹û.trim();
- }
- // ¹¤¾ßº¯Êý£º°²È«Ö´ÐÐÃüÁî²¢·µ»ØÇåÏ´ºóµÄ½á¹û
- function Ö´ÐÐÃüÁî(ÃüÁî, ÊÇ·ñroot) {
- try {
- var Ôʼ = adb.exec(ÃüÁî, ÊÇ·ñroot || false);
- return ÇåÏ´Êä³ö(String(Ôʼ));
- } catch (e) {
- print.log("⚠ ÃüÁîÖ´ÐÐÒì³£ [" + ÃüÁî + "]: " + e.message);
- return "";
- }
- }
- // ¹¤¾ßº¯Êý£º°²È«Ö´ÐÐÃüÁ²»¹ØÐÄ·µ»ØÖµ£¬Ö»¹ØÐÄÊÇ·ñ³É¹¦£©
- function Ö´ÐÐÃüÁĬ(ÃüÁî, ÊÇ·ñroot) {
- try {
- adb.exec(ÃüÁî, ÊÇ·ñroot || false);
- return true;
- } catch (e) {
- print.log("⚠ ÃüÁîÖ´ÐÐÒì³£ [" + ÃüÁî + "]: " + e.message);
- return false;
- }
- }
- // =============================================================================
- // ¹¤¾ßº¯Êý£º3Ãëµ¹¼ÆÊ±£¨Ã¿¸ö¶¯×÷ǰִÐУ¬Ôö¼Ó½Ú×à¸Ð£©
- // =============================================================================
- function µ¹¼ÆÊ±(ÃëÊý, Ìáʾ) {
- ÃëÊý = ÃëÊý || 3;
- Ìáʾ = Ìáʾ || "";
- for (var i = ÃëÊý; i > 0; i--) {
- print.log("⏳ " + Ìáʾ + " µ¹¼ÆÊ±: " + i + " Ãë...");
- sleep.second(1);
- }
- print.log("▶ " + Ìáʾ + " ¿ªÊ¼Ö´ÐÐ");
- }
- // =============================================================================
- // µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷");
- print.log("========== µÚÒ»²¿·Ö£º»ù´¡Îļþ²Ù×÷ ==========\n");
- // 1.1 ÁгöĿ¼ÄÚÈÝ£¨·Ç root£©
- print.log("--- 1.1 Áгö /sdcard/ Ŀ¼ÄÚÈÝ ---");
- var Ŀ¼Áбí = Ö´ÐÐÃüÁî("ls -la /sdcard/", false);
- print.log("Ŀ¼ÄÚÈÝ£º\n" + Ŀ¼Áбí);
- // 1.2 ÁгöÖ¸¶¨Ä¿Â¼²¢¹ýÂË£¨½áºÏ grep ¹ÜµÀ£¬×¢Òâ²»ÄÜÓà grep -P£©
- print.log("\n--- 1.2 Áгö /sdcard/ Ï嵀 .png Îļþ ---");
- var ͼƬÁбí = Ö´ÐÐÃüÁî("ls /sdcard/*.png 2>/dev/null", false);
- print.log("PNG Îļþ£º\n" + (ͼƬÁбí || "ÎÞ"));
- // 1.3 ²é¿´ÎļþÄÚÈÝ
- print.log("\n--- 1.3 ²é¿´ /sdcard/test.txt ÎļþÄÚÈÝ ---");
- var ÎļþÄÚÈÝ = Ö´ÐÐÃüÁî("cat /sdcard/test.txt 2>/dev/null", false);
- print.log("ÎļþÄÚÈÝ£º\n" + (ÎļþÄÚÈÝ || "Îļþ²»´æÔÚ»òΪ¿Õ"));
- // 1.4 ´´½¨Ä¿Â¼£¨ÐèÒª root ʱ²Ù×÷ /data µÈϵͳĿ¼£©
- print.log("\n--- 1.4 ´´½¨Ä¿Â¼ ---");
- Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
- print.log("✓ ÒÑ´´½¨ /sdcard/aiwrok_test Ŀ¼");
- // 1.5 ¸´ÖÆÎļþ
- print.log("\n--- 1.5 ¸´ÖÆÎļþ ---");
- Ö´ÐÐÃüÁĬ("cp /sdcard/test.txt /sdcard/aiwrok_test/test_backup.txt 2>/dev/null", false);
- print.log("✓ ÒѸ´ÖÆÎļþ");
- // 1.6 дÈëÎļþ£¨Í¨¹ý echo ÖØ¶¨Ïò£©
- print.log("\n--- 1.6 ͨ¹ý echo дÈëÎļþ ---");
- Ö´ÐÐÃüÁĬ("echo 'AIWROK adb.exec ²âÊÔдÈë' > /sdcard/aiwrok_test/write_test.txt", false);
- var дÈëÑéÖ¤ = Ö´ÐÐÃüÁî("cat /sdcard/aiwrok_test/write_test.txt", false);
- print.log("дÈëÑéÖ¤£º" + дÈëÑéÖ¤);
- // 1.7 »ñÈ¡Îļþ´óСºÍȨÏÞÐÅÏ¢
- print.log("\n--- 1.7 »ñÈ¡ÎļþÏêϸÐÅÏ¢ ---");
- var ÎļþÐÅÏ¢ = Ö´ÐÐÃüÁî("ls -l /sdcard/aiwrok_test/write_test.txt", false);
- print.log("ÎļþÐÅÏ¢£º" + ÎļþÐÅÏ¢);
- // 1.8 ͳ¼ÆÄ¿Â¼ÏÂÎļþÊýÁ¿
- print.log("\n--- 1.8 ͳ¼Æ /sdcard/ ÏÂÎļþÊýÁ¿ ---");
- var ÎļþÊý = Ö´ÐÐÃüÁî("ls /sdcard/ | wc -l", false);
- print.log("ÎļþÊýÁ¿£º" + ÎļþÊý);
- // =============================================================================
- // µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí£¨Package Manager£©
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí");
- print.log("\n========== µÚ¶þ²¿·Ö£ºÓ¦ÓùÜÀí ==========\n");
- // 2.1 ÁгöËùÓÐÒѰ²×°µÄµÚÈý·½Ó¦ÓÃ
- print.log("--- 2.1 ÁгöËùÓеÚÈý·½Ó¦ÓðüÃû ---");
- var µÚÈý·½Ó¦Óà = Ö´ÐÐÃüÁî("pm list packages -3", false);
- var Ó¦ÓÃÊý×é = µÚÈý·½Ó¦Óà ? µÚÈý·½Ó¦ÓÃ.split("\n") : [];
- print.log("µÚÈý·½Ó¦ÓÃÊýÁ¿£º" + Ó¦ÓÃÊý×é.length);
- // Ö»´òӡǰ5¸ö
- for (var i = 0; i < Math.min(5, Ó¦ÓÃÊý×é.length); i++) {
- print.log(" " + Ó¦ÓÃÊý×é[i]);
- }
- if (Ó¦ÓÃÊý×é.length > 5) {
- print.log(" ... ¹² " + Ó¦ÓÃÊý×é.length + " ¸öÓ¦ÓÃ");
- }
- // 2.2 ÁгöËùÓÐϵͳӦÓÃ
- print.log("\n--- 2.2 ÁгöϵͳӦÓÃÊýÁ¿ ---");
- var ϵͳӦÓà = Ö´ÐÐÃüÁî("pm list packages -s", false);
- var ϵͳӦÓÃÊý×é = ϵͳӦÓà ? ϵͳӦÓÃ.split("\n") : [];
- print.log("ϵͳӦÓÃÊýÁ¿£º" + ϵͳӦÓÃÊý×é.length);
- // 2.3 ²é¿´Ö¸¶¨Ó¦ÓÃÐÅÏ¢
- print.log("\n--- 2.3 ²é¿´Î¢ÐÅÓ¦ÓÃÐÅÏ¢ ---");
- var ΢ÐÅÐÅÏ¢ = Ö´ÐÐÃüÁî("pm list packages com.tencent.mm", false);
- print.log("΢ÐŰüÃûÐÅÏ¢£º" + (΢ÐÅÐÅÏ¢ || "δ°²×°Î¢ÐÅ"));
- // 2.4 Æô¶¯Ó¦Óã¨Í¨¹ý am start£©
- print.log("\n--- 2.4 Æô¶¯Ö¸¶¨Ó¦Óà ---");
- // Æô¶¯ÉèÖÃÓ¦ÓÃ
- Ö´ÐÐÃüÁĬ("am start -a android.settings.SETTINGS", false);
- print.log("✓ ÒÑÆô¶¯ÏµÍ³ÉèÖÃ");
- // 2.5 ͨ¹ý monkey Æô¶¯Ó¦ÓÃ
- print.log("\n--- 2.5 ͨ¹ý monkey Æô¶¯Ó¦Óà ---");
- // Ö´ÐÐÃüÁĬ("monkey -p com.tencent.mm 1", false);
- print.log("£¨Ê¾Àý£©¿Éͨ¹ý monkey -p <°üÃû> 1 Æô¶¯Ó¦ÓÃ");
- // 2.6 Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ
- print.log("\n--- 2.6 Ç¿ÖÆÍ£Ö¹Ó¦Óà ---");
- // Ö´ÐÐÃüÁĬ("am force-stop com.tencent.mm", false);
- print.log("£¨Ê¾Àý£©¿Éͨ¹ý am force-stop <°üÃû> Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ");
- // 2.7 Çå³ýÓ¦ÓÃÊý¾Ý£¨ÐèÒª root »ò¶ÔӦȨÏÞ£©
- print.log("\n--- 2.7 Çå³ýÓ¦ÓÃÊý¾Ý£¨root ʾÀý£©---");
- // adb.exec("pm clear com.example.app", true); // true = root ȨÏÞ
- print.log("£¨Ê¾Àý£©adb.exec('pm clear com.example.app', true) ÒÔ root Çå³ýÓ¦ÓÃÊý¾Ý");
- // 2.8 °²×° / Ð¶ÔØ APK
- print.log("\n--- 2.8 °²×°/Ð¶ÔØ APK ---");
- // °²×°£ºadb.exec("pm install /sdcard/app.apk", false);
- // Ð¶ÔØ£ºadb.exec("pm uninstall com.example.app", false);
- print.log("£¨Ê¾Àý£©pm install / pm uninstall ¿É°²×°/Ð¶ÔØÓ¦ÓÃ");
- // =============================================================================
- // µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡");
- print.log("\n========== µÚÈý²¿·Ö£ºÏµÍ³ÐÅÏ¢»ñÈ¡ ==========\n");
- // 3.1 »ñȡϵͳÊôÐÔ£¨getprop£©
- print.log("--- 3.1 »ñÈ¡É豸ϵͳÊôÐÔ ---");
- var É豸ÐͺŠ= Ö´ÐÐÃüÁî("getprop ro.product.model", false);
- var °²×¿°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.release", false);
- var SDK°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.sdk", false);
- var ÖÆÔìÉÌ = Ö´ÐÐÃüÁî("getprop ro.product.manufacturer", false);
- var ÐòÁкŠ= Ö´ÐÐÃüÁî("getprop ro.serialno", false);
- print.log("É豸Ðͺţº" + É豸ÐͺÅ);
- print.log("°²×¿°æ±¾£º" + °²×¿°æ±¾);
- print.log("SDK°æ±¾£º" + SDK°æ±¾);
- print.log("ÖÆÔìÉÌ£º" + ÖÆÔìÉÌ);
- print.log("ÐòÁкţº" + ÐòÁкÅ);
- // 3.2 »ñÈ¡ÆÁÄ»·Ö±æÂÊ
- print.log("\n--- 3.2 »ñÈ¡ÆÁÄ»·Ö±æÂÊ ---");
- var ·Ö±æÂÊ = Ö´ÐÐÃüÁî("wm size", false);
- print.log("ÆÁÄ»·Ö±æÂÊ£º" + ·Ö±æÂÊ);
- var ÃÜ¶È = Ö´ÐÐÃüÁî("wm density", false);
- print.log("ÆÁÄ»Ãܶȣº" + ÃܶÈ);
- // 3.3 »ñÈ¡µç³ØÐÅÏ¢£¨¶à²ßÂÔ£ºsysfs ¡ú dumpsys½âÎö ¡ú bms»ØÍË£©
- print.log("\n--- 3.3 »ñÈ¡µç³ØÐÅÏ¢ ---");
- var µç³ØÐÅÏ¢3 = »ñÈ¡µç³ØÐÅÏ¢();
- print.log("µç³ØµçÁ¿£º" + (µç³ØÐÅÏ¢3.µçÁ¿ || "δ֪") + "%");
- print.log("µç³Ø×´Ì¬£º" + (µç³ØÐÅÏ¢3.״̬ || "δ֪"));
- print.log("µç³ØÎ¶ȣº" + (µç³ØÐÅÏ¢3.ÎÂ¶È || "δ֪"));
- print.log("µç³Ø¼¼Êõ£º" + (µç³ØÐÅÏ¢3.¼¼Êõ || "δ֪"));
- // 3.4 »ñÈ¡ÄÚ´æÐÅÏ¢
- print.log("\n--- 3.4 »ñÈ¡ÄÚ´æÐÅÏ¢ ---");
- var ÄÚ´æÐÅÏ¢ = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -5", false);
- print.log("ÄÚ´æÐÅÏ¢£º\n" + ÄÚ´æÐÅÏ¢);
- // 3.5 »ñÈ¡ CPU ÐÅÏ¢
- print.log("\n--- 3.5 »ñÈ¡ CPU ÐÅÏ¢ ---");
- var CPUÐÅÏ¢ = Ö´ÐÐÃüÁî("cat /proc/cpuinfo | head -10", false);
- print.log("CPUÐÅÏ¢£º\n" + CPUÐÅÏ¢);
- // 3.6 »ñÈ¡´æ´¢ÐÅÏ¢
- print.log("\n--- 3.6 »ñÈ¡´æ´¢ÐÅÏ¢ ---");
- var ´æ´¢ÐÅÏ¢ = Ö´ÐÐÃüÁî("df /sdcard", false);
- print.log("´æ´¢ÐÅÏ¢£º\n" + ´æ´¢ÐÅÏ¢);
- // 3.7 »ñÈ¡ÍøÂçÁ¬½ÓÐÅÏ¢
- print.log("\n--- 3.7 »ñÈ¡ÍøÂçÐÅÏ¢ ---");
- var IPµØÖ· = Ö´ÐÐÃüÁî("ip addr show wlan0 | grep 'inet '", false);
- print.log("IPµØÖ·£º" + IPµØÖ·);
- // WiFi״̬£º¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎö dumpsys wifi ÍêÕûÊä³ö
- var WiFiÍêÕû = Ö´ÐÐÃüÁî("dumpsys wifi 2>/dev/null", false);
- var WiFi״̬ = "δ֪";
- if (WiFiÍêÕû && WiFiÍêÕû.length > 0) {
- var WiFiÐÐ = WiFiÍêÕû.split("\n");
- for (var wi = 0; wi < WiFiÐÐ.length; wi++) {
- var ÐÐÄÚÈÝ = WiFiÐÐ[wi].trim().toLowerCase();
- if (ÐÐÄÚÈÝ.indexOf("wi-fi is") !== -1 || ÐÐÄÚÈÝ.indexOf("wifi is") !== -1) {
- WiFi״̬ = WiFiÐÐ[wi].trim();
- break;
- }
- }
- // »ØÍË£ºËÑË÷ "Wi-Fi" ¹Ø¼ü×ÖËùÔÚÐÐ
- if (WiFi״̬ === "δ֪") {
- for (var wi2 = 0; wi2 < WiFiÐÐ.length; wi2++) {
- if (WiFiÐÐ[wi2].toLowerCase().indexOf("wifi") !== -1 && WiFiÐÐ[wi2].indexOf("SSID") !== -1) {
- WiFi״̬ = WiFiÐÐ[wi2].trim();
- break;
- }
- }
- }
- }
- print.log("WiFi״̬£º" + WiFi״̬);
- // =============================================================================
- // µÚËIJ¿·Ö£ºÊäÈëÄ£Ä⣨Input Commands£©
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚËIJ¿·Ö£ºÊäÈëÄ£Äâ");
- print.log("\n========== µÚËIJ¿·Ö£ºÊäÈëÄ£Äâ ==========\n");
- // 4.1 Ä£Äâµã»÷£¨input tap£©
- print.log("--- 4.1 Ä£Äâµã»÷×ø±ê ---");
- // Ö´ÐÐÃüÁĬ("input tap 540 960", false);
- print.log("£¨Ê¾Àý£©input tap 540 960 ¡ú µã»÷ÆÁÄ»ÖÐÐÄ");
- // 4.2 Ä£Ä⻬¶¯£¨input swipe£©
- print.log("\n--- 4.2 Ä£Ä⻬¶¯ ---");
- // Ö´ÐÐÃüÁĬ("input swipe 540 1500 540 500 300", false); // ÉÏ»¬
- print.log("£¨Ê¾Àý£©input swipe 540 1500 540 500 300 ¡ú ÏòÉÏ»¬¶¯");
- // 4.3 Ä£Äⳤ°´£¨swipe ÆðµãÖÕµãÏàͬ£¬Ê±³¤ > 500ms£©
- print.log("\n--- 4.3 Ä£Äⳤ°´ ---");
- // Ö´ÐÐÃüÁĬ("input swipe 540 960 540 960 1000", false);
- print.log("£¨Ê¾Àý£©input swipe 540 960 540 960 1000 ¡ú ³¤°´ 1 Ãë");
- // 4.4 Ä£ÄâÊäÈëÎÄ×Ö£¨½öÖ§³Ö ASCII£©
- print.log("\n--- 4.4 Ä£ÄâÊäÈëÎÄ×Ö ---");
- // Ö´ÐÐÃüÁĬ("input text 'hello123'", false);
- print.log("£¨Ê¾Àý£©input text 'hello123' ¡ú ÊäÈë ASCII ÎÄ×Ö");
- // 4.5 Ä£Äâ°´¼üʼþ£¨input keyevent£©
- print.log("\n--- 4.5 Ä£Äâ°´¼üʼþ ---");
- var °´¼ü˵Ã÷ = {
- "3": "KEYCODE_HOME (Home¼ü)",
- "4": "KEYCODE_BACK (·µ»Ø¼ü)",
- "24": "KEYCODE_VOLUME_UP (ÒôÁ¿¼Ó)",
- "25": "KEYCODE_VOLUME_DOWN (ÒôÁ¿¼õ)",
- "26": "KEYCODE_POWER (µçÔ´¼ü)",
- "27": "KEYCODE_CAMERA (Ïà»ú¼ü)",
- "66": "KEYCODE_ENTER (»Ø³µ¼ü)",
- "82": "KEYCODE_MENU (²Ëµ¥¼ü)",
- "279": "KEYCODE_PASTE (Õ³Ìù¼ü)"
- };
- for (var ¼üÂë in °´¼ü˵Ã÷) {
- // Ö´ÐÐÃüÁĬ("input keyevent " + ¼üÂë, false);
- print.log(" keyevent " + ¼üÂë + " ¡ú " + °´¼ü˵Ã÷[¼üÂë]);
- }
- // 4.6 Ä£Äâ×éºÏ¼ü£¨Ctrl+V Õ³Ìù£©
- print.log("\n--- 4.6 Ä£Äâ×éºÏ¼ü ---");
- // Ö´ÐÐÃüÁĬ("input keyevent 50 --meta 0x1000", false); // Ctrl+V
- print.log("£¨Ê¾Àý£©input keyevent 50 --meta 0x1000 ¡ú Ctrl+V Õ³Ìù");
- // =============================================================================
- // µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ");
- print.log("\n========== µÚÎ岿·Ö£º½ØÍ¼ÓëýÌå¿ØÖÆ ==========\n");
- // 5.1 ½ØÍ¼±£´æµ½Îļþ
- print.log("--- 5.1 ½ØÍ¼±£´æµ½Îļþ ---");
- var ½ØÍ¼Â·¾¶ = "/sdcard/aiwrok_test/screenshot_" + Date.now() + ".png";
- Ö´ÐÐÃüÁĬ("screencap -p " + ½ØÍ¼Â·¾¶, false);
- var ½ØÍ¼ÑéÖ¤ = Ö´ÐÐÃüÁî("ls -l " + ½ØÍ¼Â·¾¶, false);
- print.log("½ØÍ¼Îļþ£º" + ½ØÍ¼ÑéÖ¤);
- // 5.2 ½ØÍ¼Ö±½ÓÊä³öµ½ stdout£¨ÓÃÓÚ»ñÈ¡¶þ½øÖÆÊý¾Ý£©
- print.log("\n--- 5.2 ½ØÍ¼Êä³öµ½ stdout ---");
- print.log("£¨Ê¾Àý£©screencap -p ¿ÉÖ±½ÓÊä³ö PNG Êý¾ÝÁ÷");
- // 5.3 ¼ÆÁ£¨ÐèÒª Android 4.4+£©
- print.log("\n--- 5.3 ¼ÆÁÃüÁî ---");
- print.log("£¨Ê¾Àý£©screenrecord --time-limit 10 /sdcard/aiwrok_test/record.mp4 ¡ú ¼ÆÁ10Ãë");
- // 5.4 ýÌåÒôÁ¿¿ØÖÆ£¨¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎö£©
- print.log("\n--- 5.4 ýÌåÒôÁ¿¿ØÖÆ ---");
- var ÒôƵÍêÕû = Ö´ÐÐÃüÁî("dumpsys audio 2>/dev/null", false);
- var ÒôÁ¿Êä³ö = "";
- if (ÒôƵÍêÕû && ÒôƵÍêÕû.length > 0) {
- var ÒôƵÐÐ = ÒôƵÍêÕû.split("\n");
- var ÒôÁ¿ÐÐ = [];
- for (var ai = 0; ai < ÒôƵÐÐ.length; ai++) {
- if (ÒôƵÐÐ[ai].indexOf("Stream volume") !== -1 || ÒôƵÐÐ[ai].indexOf("STREAM_MUSIC") !== -1) {
- ÒôÁ¿ÐÐ.push(ÒôƵÐÐ[ai].trim());
- }
- }
- ÒôÁ¿Êä³ö = ÒôÁ¿ÐÐ.length > 0 ? ÒôÁ¿ÐÐ.join("\n") : "δÕÒµ½ÒôÁ¿ÐÅÏ¢";
- } else {
- ÒôÁ¿Êä³ö = "dumpsys audio ²»¿ÉÓÃ";
- }
- print.log("µ±Ç°ÒôƵÁ÷ÐÅÏ¢£º\n" + ÒôÁ¿Êä³ö);
- // =============================================================================
- // µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí");
- print.log("\n========== µÚÁù²¿·Ö£º½ø³Ì¹ÜÀí ==========\n");
- // 6.1 ²é¿´ËùÓÐÔËÐÐÖеĽø³Ì
- print.log("--- 6.1 ²é¿´ÔËÐÐÖеĽø³Ì£¨Ç°10¸ö£©---");
- var ½ø³ÌÁбí = Ö´ÐÐÃüÁî("ps | head -10", false);
- print.log("½ø³ÌÁÐ±í£º\n" + ½ø³ÌÁбí);
- // 6.2 ²éÕÒÌØ¶¨½ø³Ì
- print.log("\n--- 6.2 ²éÕÒÌØ¶¨½ø³Ì ---");
- // ×¢Ò⣺Android shell ²»Ö§³Ö grep -P£¬Ê¹ÓÃÆÕͨ grep
- var ΢ÐŽø³Ì = Ö´ÐÐÃüÁî("ps | grep com.tencent.mm", false);
- print.log("΢ÐŽø³Ì£º" + (΢ÐŽø³Ì || "΢ÐÅδÔËÐÐ"));
- // 6.3 »ñÈ¡ CPU Õ¼ÓÃ×î¸ßµÄ½ø³Ì
- print.log("\n--- 6.3 CPU Õ¼ÓÃ×î¸ßµÄ½ø³Ì ---");
- var CPUÕ¼Óà = Ö´ÐÐÃüÁî("top -n 1 -b | head -15", false);
- print.log("CPUÕ¼ÓÃÇé¿ö£º\n" + CPUÕ¼ÓÃ);
- // 6.4 ɱËÀ½ø³Ì£¨ÐèÒª root »òͬ UID£©
- print.log("\n--- 6.4 ɱËÀ½ø³Ì ---");
- // Ö´ÐÐÃüÁĬ("kill <PID>", true); // ÐèÒª root
- print.log("£¨Ê¾Àý£©kill <PID> ÒÔ root ȨÏÞɱËÀÖ¸¶¨½ø³Ì");
- // 6.5 »ñȡǰ̨ Activity£¨¹ÜµÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎöÍêÕûÊä³ö£©
- print.log("\n--- 6.5 »ñȡǰ̨ Activity ---");
- // ²ßÂÔ1£ºdumpsys activity activities ÍêÕûÊä³ö + JSËÑË÷ mResumedActivity
- var activityÍêÕû6 = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
- if (activityÍêÕû6 && activityÍêÕû6.length > 0) {
- var resumedIdx6 = activityÍêÕû6.indexOf("mResumedActivity");
- if (resumedIdx6 !== -1) {
- print.log("ǰ̨Activity£º" + activityÍêÕû6.substring(resumedIdx6, resumedIdx6 + 200).split("\n")[0]);
- } else {
- print.log("ǰ̨Activity£ºÎ´ÕÒµ½ mResumedActivity");
- }
- } else {
- print.log("ǰ̨Activity£ºdumpsys activity ²»¿ÉÓÃ");
- }
- // ²ßÂÔ2£ºdumpsys window ÍêÕûÊä³ö + JSËÑË÷ mCurrentFocus
- var ´°¿ÚÍêÕû6 = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
- if (´°¿ÚÍêÕû6 && ´°¿ÚÍêÕû6.length > 0) {
- var focusIdx6 = ´°¿ÚÍêÕû6.indexOf("mCurrentFocus");
- if (focusIdx6 !== -1) {
- print.log("µ±Ç°½¹µã´°¿Ú£º" + ´°¿ÚÍêÕû6.substring(focusIdx6, focusIdx6 + 200).split("\n")[0]);
- } else {
- print.log("µ±Ç°½¹µã´°¿Ú£ºÎ´ÕÒµ½ mCurrentFocus");
- }
- } else {
- print.log("µ±Ç°½¹µã´°¿Ú£ºdumpsys window ²»¿ÉÓÃ");
- }
- // =============================================================================
- // µÚÆß²¿·Ö£ºÎļþȨÏÞÓëϵͳ¹ÜÀí£¨root ³¡¾°£©
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÆß²¿·Ö£ºrootȨÏÞ³¡¾°");
- print.log("\n========== µÚÆß²¿·Ö£ºroot ȨÏÞ³¡¾° ==========\n");
- // 7.1 ÐÞ¸ÄÎļþȨÏÞ
- print.log("--- 7.1 ÐÞ¸ÄÎļþȨÏÞ ---");
- // adb.exec("chmod 777 /data/local/tmp/test", true); // root ȨÏÞ
- print.log("£¨Ê¾Àý£©adb.exec('chmod 777 /data/local/tmp/test', true) ÒÔ root ÐÞ¸ÄȨÏÞ");
- // 7.2 ¶Áȡϵͳ·ÖÇøÎļþ£¨ÐèÒª root£©
- print.log("\n--- 7.2 ¶Áȡϵͳ·ÖÇøÎļþ ---");
- // var hostsÄÚÈÝ = Ö´ÐÐÃüÁî("cat /etc/hosts", true); // root ȨÏÞ¶ÁÈ¡
- print.log("£¨Ê¾Àý£©adb.exec('cat /etc/hosts', true) ÒÔ root ¶ÁȡϵͳÎļþ");
- // 7.3 ÐÞ¸ÄϵͳÉèÖã¨settings ÃüÁîÔÚ Android 14 ·Ç root ϱ¨È¨ÏÞ´íÎó£¬Ðè root£©
- print.log("\n--- 7.3 ÐÞ¸ÄϵͳÉèÖà ---");
- // »ñÈ¡ÆÁÄ»³¬Ê±Ê±¼ä£¨Ðè root£¬·ñÔò±¨ INTERACT_ACROSS_USERS ȨÏÞ´íÎó£©
- var ÆÁÄ»³¬Ê± = Ö´ÐÐÃüÁî("settings get system screen_off_timeout", true);
- if (!ÆÁÄ»³¬Ê± || ÆÁÄ»³¬Ê±.indexOf("Exception") !== -1 || ÆÁÄ»³¬Ê±.indexOf("Permission") !== -1) {
- // »ØÍË1£º·Çroot³¢ÊÔ
- var ÆÁÄ»³¬Ê±2 = Ö´ÐÐÃüÁî("settings get system screen_off_timeout", false);
- if (ÆÁÄ»³¬Ê±2 && ÆÁÄ»³¬Ê±2.indexOf("Exception") === -1) {
- ÆÁÄ»³¬Ê± = ÆÁÄ»³¬Ê±2;
- } else {
- // »ØÍË2£ºÍ¨¹ý content query ¶ÁÈ¡
- var content²éѯ = Ö´ÐÐÃüÁî("content query --uri content://settings/system --where \"name='screen_off_timeout'\"", false);
- if (content²éѯ && content²éѯ.indexOf("value=") !== -1) {
- var valIdx = content²éѯ.indexOf("value=");
- ÆÁÄ»³¬Ê± = content²éѯ.substring(valIdx + 6).split(",")[0].trim();
- } else {
- ÆÁÄ»³¬Ê± = "";
- }
- }
- }
- print.log("µ±Ç°ÆÁÄ»³¬Ê±£º" + (ÆÁÄ»³¬Ê± || "»ñȡʧ°Ü£¨Ðè root ȨÏÞ£©") + " ºÁÃë");
- // ÐÞ¸ÄÆÁÄ»³¬Ê±£¨Ðè root£©
- // Ö´ÐÐÃüÁĬ("settings put system screen_off_timeout 60000", true);
- print.log("£¨Ê¾Àý£©settings put system screen_off_timeout 60000 ¡ú ÉèÖÃÆÁÄ»³¬Ê±60Ãë");
- // 7.4 »ñÈ¡/ÐÞ¸ÄÊäÈë·¨£¨Ðè root£©
- print.log("\n--- 7.4 »ñÈ¡/ÐÞ¸ÄÊäÈë·¨ ---");
- var µ±Ç°ÊäÈë·¨ = Ö´ÐÐÃüÁî("settings get secure default_input_method", true);
- if (!µ±Ç°ÊäÈë·¨ || µ±Ç°ÊäÈë·¨.indexOf("Exception") !== -1 || µ±Ç°ÊäÈë·¨.indexOf("Permission") !== -1) {
- // »ØÍË1£º·Çroot³¢ÊÔ
- µ±Ç°ÊäÈë·¨ = Ö´ÐÐÃüÁî("settings get secure default_input_method", false);
- if (!µ±Ç°ÊäÈë·¨ || µ±Ç°ÊäÈë·¨.indexOf("Exception") !== -1) {
- // »ØÍË2£ºÍ¨¹ý content query ¶ÁÈ¡
- var ÊäÈë·¨²éѯ = Ö´ÐÐÃüÁî("content query --uri content://settings/secure --where \"name='default_input_method'\"", false);
- if (ÊäÈë·¨²éѯ && ÊäÈë·¨²éѯ.indexOf("value=") !== -1) {
- var imeValIdx = ÊäÈë·¨²éѯ.indexOf("value=");
- µ±Ç°ÊäÈë·¨ = ÊäÈë·¨²éѯ.substring(imeValIdx + 6).split(",")[0].trim();
- } else {
- // »ØÍË3£ºÍ¨¹ý imba ÃüÁ²¿·ÖÉ豸¿ÉÓã©
- var imbaÁбí = Ö´ÐÐÃüÁî("ime list -s 2>/dev/null", false);
- µ±Ç°ÊäÈë·¨ = imbaÁбí || "";
- }
- }
- }
- print.log("µ±Ç°Ä¬ÈÏÊäÈë·¨£º" + (µ±Ç°ÊäÈë·¨ || "»ñȡʧ°Ü£¨Ðè root ȨÏÞ£©"));
- // 7.5 ¹ÒÔØ/Ð¶ÔØÏµÍ³·ÖÇø£¨root£©
- print.log("\n--- 7.5 ¹ÒÔØÏµÍ³·ÖÇø¶Áд£¨root£©---");
- // adb.exec("mount -o remount,rw /system", true);
- print.log("£¨Ê¾Àý£©adb.exec('mount -o remount,rw /system', true) ÒÔ root ÖØÐ¹ÒÔØ/systemΪ¶Áд");
- // 7.6 дÈëϵͳÎļþ£¨root£©
- print.log("\n--- 7.6 дÈëϵͳ hosts Îļþ£¨root£©---");
- // adb.exec("echo '127.0.0.1 example.com' >> /etc/hosts", true);
- print.log("£¨Ê¾Àý£©ÒÔ root ȨÏÞÐÞ¸Ä hosts Îļþ");
- // =============================================================================
- // µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷");
- print.log("\n========== µÚ°Ë²¿·Ö£ºÍøÂç²Ù×÷ ==========\n");
- // 8.1 ¼ì²éÍøÂçÁ¬Í¨ÐÔ
- print.log("--- 8.1 Ping ²âÊÔ ---");
- var ping½á¹û = Ö´ÐÐÃüÁî("ping -c 3 www.baidu.com", false);
- print.log("Ping ½á¹û£º\n" + ping½á¹û);
- // 8.2 »ñÈ¡ÍøÂç½Ó¿ÚÐÅÏ¢
- print.log("\n--- 8.2 ÍøÂç½Ó¿ÚÐÅÏ¢ ---");
- var ÍøÂç½Ó¿Ú = Ö´ÐÐÃüÁî("ip addr", false);
- print.log("ÍøÂç½Ó¿Ú£º\n" + ÍøÂç½Ó¿Ú.substring(0, 200) + "...");
- // 8.3 »ñȡ·Óɱí
- print.log("\n--- 8.3 ·Óɱí ---");
- var ·Óɱí = Ö´ÐÐÃüÁî("ip route", false);
- print.log("·ÓÉ±í£º" + ·Óɱí);
- // 8.4 »ñÈ¡ DNS ÅäÖ㨶à²ßÂÔ£ºresolv.conf ¡ú getprop ¡ú dhcpÊôÐÔ ¡ú dumpsys½âÎö£©
- print.log("\n--- 8.4 DNS ÅäÖÃ ---");
- var DNS1 = "";
- var DNS2 = "";
- // ²ßÂÔ1£ºresolv.conf
- var DNSÔʼ = Ö´ÐÐÃüÁî("cat /etc/resolv.conf 2>/dev/null", false);
- if (DNSÔʼ && DNSÔʼ.length > 0) {
- var DNSÐÐ = DNSÔʼ.split("\n");
- var DNSÐòºÅ = 0;
- for (var di = 0; di < DNSÐÐ.length; di++) {
- var ÐÐ = DNSÐÐ[di].trim();
- if (ÐÐ.indexOf("nameserver") === 0) {
- DNSÐòºÅ++;
- if (DNSÐòºÅ === 1) DNS1 = ÐÐ.substring("nameserver".length).trim();
- else if (DNSÐòºÅ === 2) DNS2 = ÐÐ.substring("nameserver".length).trim();
- }
- }
- }
- // ²ßÂÔ2£ºgetprop net.dns
- if (!DNS1) DNS1 = Ö´ÐÐÃüÁî("getprop net.dns1 2>/dev/null", false);
- if (!DNS2) DNS2 = Ö´ÐÐÃüÁî("getprop net.dns2 2>/dev/null", false);
- // ²ßÂÔ3£ºgetprop dhcp.wlan0.dns£¨²¿·ÖÉ豸¿ÉÓã©
- if (!DNS1) DNS1 = Ö´ÐÐÃüÁî("getprop dhcp.wlan0.dns1 2>/dev/null", false);
- if (!DNS2) DNS2 = Ö´ÐÐÃüÁî("getprop dhcp.wlan0.dns2 2>/dev/null", false);
- // ²ßÂÔ4£º½âÎö dumpsys connectivity£¨ËÑË÷ DnsServerSearchDomains »ò dns ×ÖÑù£©
- if (!DNS1) {
- var Á¬Í¨ÐÔÍêÕû = Ö´ÐÐÃüÁî("dumpsys connectivity 2>/dev/null", false);
- if (Á¬Í¨ÐÔÍêÕû && Á¬Í¨ÐÔÍêÕû.length > 0) {
- var Á¬Í¨ÐÐ = Á¬Í¨ÐÔÍêÕû.split("\n");
- for (var ci = 0; ci < Á¬Í¨ÐÐ.length; ci++) {
- var Á¬½ÓÄÚÈÝ = Á¬Í¨ÐÐ[ci].trim();
- if (Á¬½ÓÄÚÈÝ.indexOf("DnsAddresses") !== -1 || Á¬½ÓÄÚÈÝ.indexOf("dns addresses") !== -1) {
- // ³¢ÊÔÌáÈ¡IPµØÖ·¸ñʽ x.x.x.x
- var ipMatch = Á¬½ÓÄÚÈÝ.match(/\d+\.\d+\.\d+\.\d+/g);
- if (ipMatch) {
- if (!DNS1) DNS1 = ipMatch[0];
- if (ipMatch.length > 1 && !DNS2) DNS2 = ipMatch[1];
- }
- }
- }
- }
- }
- print.log("DNS1£º" + (DNS1 || "»ñȡʧ°Ü"));
- print.log("DNS2£º" + (DNS2 || "»ñȡʧ°Ü"));
- // 8.5 ͨ¹ý curl »ñÈ¡ÍøÂçÊý¾Ý£¨²¿·ÖÉ豸֧³Ö£©
- print.log("\n--- 8.5 curl »ñÈ¡Êý¾Ý ---");
- var curl½á¹û = Ö´ÐÐÃüÁî("curl -s http://ip-api.com/line/ 2>/dev/null", false);
- print.log("ÍøÂç³ö¿ÚÐÅÏ¢£º\n" + (curl½á¹û || "curl ²»¿ÉÓûòÍøÂ粻ͨ"));
- // =============================================================================
- // µÚ¾Å²¿·Ö£ºUI ×Ô¶¯»¯¸¨Öú£¨uiautomator£©
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚ¾Å²¿·Ö£ºUI×Ô¶¯»¯¸¨Öú");
- print.log("\n========== µÚ¾Å²¿·Ö£ºUI ×Ô¶¯»¯¸¨Öú ==========\n");
- // 9.1 »ñÈ¡ UI XML£¨¶à²ßÂÔ£ºauto.getXml ¡ú uiautomator dump ¡ú ÍêÕû·¾¶£©
- print.log("--- 9.1 »ñÈ¡µ±Ç°½çÃæ UI XML ---");
- var UI_XML = "";
- // ²ßÂÔ1£ºÓÅÏÈʹÓà AIWROK ÔÉú auto.getXml()£¨×î¿É¿¿£©
- try {
- if (typeof auto !== "undefined" && auto.getXml) {
- var ÔʼXML = String(auto.getXml());
- if (ÔʼXML && ÔʼXML.length > 10 && ÔʼXML.indexOf("<") !== -1) {
- UI_XML = ÔʼXML;
- print.log("✓ ͨ¹ý auto.getXml() »ñÈ¡³É¹¦");
- }
- }
- } catch (e1) {
- print.log("⚠ auto.getXml() ʧ°Ü: " + e1.message);
- }
- // ²ßÂÔ2£ºuiautomator dump£¨Èç¹û auto.getXml ²»¿ÉÓã©
- if (!UI_XML) {
- Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
- var UIÁÙʱÎļþ = "/sdcard/aiwrok_test/ui_dump.xml";
- // Ïȳ¢ÊÔ --compressed
- var dump½á¹û1 = Ö´ÐÐÃüÁî("uiautomator dump --compressed " + UIÁÙʱÎļþ + " 2>&1", false);
- sleep.millisecond(500);
- UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
- if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
- print.log("✓ ͨ¹ý uiautomator --compressed »ñÈ¡³É¹¦");
- } else {
- // »ØÍË£º²»´ø --compressed
- var dump½á¹û2 = Ö´ÐÐÃüÁî("uiautomator dump " + UIÁÙʱÎļþ + " 2>&1", false);
- sleep.millisecond(500);
- UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
- if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
- print.log("✓ ͨ¹ý uiautomator dump »ñÈ¡³É¹¦£¨·ÇѹËõģʽ£©");
- } else {
- // »ØÍË£º³¢ÊÔ /system/bin/ ÍêÕû·¾¶
- var dump½á¹û3 = Ö´ÐÐÃüÁî("/system/bin/uiautomator dump " + UIÁÙʱÎļþ + " 2>&1", false);
- sleep.millisecond(500);
- UI_XML = Ö´ÐÐÃüÁî("cat " + UIÁÙʱÎļþ + " 2>/dev/null", false);
- if (UI_XML && UI_XML.length > 10 && UI_XML.indexOf("<") !== -1) {
- print.log("✓ ͨ¹ý /system/bin/uiautomator »ñÈ¡³É¹¦");
- } else {
- UI_XML = "";
- }
- }
- }
- }
- if (UI_XML && UI_XML.length > 10) {
- print.log("UI XML ³¤¶È£º" + UI_XML.length + " ×Ö·û");
- print.log("UI XML ǰ200×Ö·û£º" + UI_XML.substring(0, 200) + "...");
- } else {
- print.log("⚠ »ñÈ¡ UI XML ʧ°Ü£¨uiautomator ²»¿ÉÓÃÇÒ auto.getXml ²»¿ÉÓã©");
- }
- // 9.2 »ñÈ¡µ±Ç°½çÃæ°üÃû£¨¶à²ßÂÔ£ºdumpsys window ¡ú dumpsys activity ¡ú AIWROKÔÉú ¡ú shell£©
- print.log("\n--- 9.2 »ñÈ¡µ±Ç°½çÃæ°üÃû ---");
- var ǰ̨°üÃû = "";
- var ǰ̨Activity = "";
- var activityÍêÕû = "";
- // ²ßÂÔ1£ºdumpsys window ÍêÕûÊä³ö + JSËÑË÷ mCurrentFocus
- var ´°¿ÚÍêÕû = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
- if (´°¿ÚÍêÕû && ´°¿ÚÍêÕû.length > 0) {
- var focusIndex = ´°¿ÚÍêÕû.indexOf("mCurrentFocus");
- if (focusIndex !== -1) {
- var focusLine = ´°¿ÚÍêÕû.substring(focusIndex, focusIndex + 200).split("\n")[0];
- print.log("½¹µã´°¿Ú£º" + focusLine);
- var spaceIdx = focusLine.indexOf(" ");
- if (spaceIdx !== -1) {
- var sub = focusLine.substring(spaceIdx + 1);
- var slashIdx = sub.indexOf("/");
- if (slashIdx !== -1) {
- ǰ̨°üÃû = sub.substring(0, slashIdx);
- print.log("µ±Ç°Ç°Ì¨°üÃû£º" + ǰ̨°üÃû);
- }
- }
- } else {
- // »ØÍË£ºËÑË÷ mFocusedApp
- var appIndex = ´°¿ÚÍêÕû.indexOf("mFocusedApp");
- if (appIndex !== -1) {
- var appLine = ´°¿ÚÍêÕû.substring(appIndex, appIndex + 200).split("\n")[0];
- print.log("½¹µãÓ¦Óãº" + appLine);
- var appSlash = appLine.indexOf("/");
- if (appSlash !== -1) {
- var appSub = appLine.substring(appLine.indexOf(" ") + 1, appSlash);
- if (appSub) ǰ̨°üÃû = appSub;
- }
- }
- }
- }
- // ²ßÂÔ2£ºdumpsys activity activities + JSËÑË÷ mResumedActivity
- if (!ǰ̨°üÃû) {
- activityÍêÕû = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
- if (activityÍêÕû && activityÍêÕû.length > 0) {
- var resumedIdx = activityÍêÕû.indexOf("mResumedActivity");
- if (resumedIdx !== -1) {
- var resumedLine = activityÍêÕû.substring(resumedIdx, resumedIdx + 300).split("\n")[0];
- print.log("ǰ̨Activity£º" + resumedLine);
- // ÌáÈ¡°üÃû£º¸ñʽͨ³£Îª mResumedActivity: ActivityRecord{... u0 com.xxx.xxx/...}
- var °üÃûÌáÈ¡ = resumedLine.match(/(\w+\.\w+\.\w+)/);
- if (°üÃûÌáÈ¡) {
- ǰ̨°üÃû = °üÃûÌáÈ¡[1];
- print.log("µ±Ç°Ç°Ì¨°üÃû£¨´ÓActivityÌáÈ¡£©£º" + ǰ̨°üÃû);
- }
- }
- }
- }
- // ²ßÂÔ3£ºAIWROK ÔÉú·½·¨£¨²¿·Ö·½·¨²»Îȶ¨£¬×÷Ϊ×îºó»ØÍË£©
- if (!ǰ̨°üÃû) {
- try {
- if (typeof auto !== "undefined") {
- if (auto.getTopPackName) ǰ̨°üÃû = String(auto.getTopPackName());
- if (!ǰ̨°üÃû && auto.getTopPackNameV2) ǰ̨°üÃû = String(auto.getTopPackNameV2());
- if (!ǰ̨°üÃû && auto.getPackName) ǰ̨°üÃû = String(auto.getPackName());
- }
- } catch (e3) {
- print.log("⚠ AIWROK ÔÉú·½·¨»ñÈ¡°üÃûʧ°Ü: " + e3.message);
- }
- }
- if (!ǰ̨°üÃû) {
- print.log("⚠ δ»ñÈ¡µ½Ç°Ì¨°üÃû£¨dumpsys ºÍ AIWROK ·½·¨¾ù²»¿ÉÓã©");
- }
- // 9.3 »ñÈ¡ Activity Õ»
- print.log("\n--- 9.3 »ñÈ¡ Activity Õ»ÐÅÏ¢ ---");
- // È·±£ activityÍêÕû ÓÐÖµ£¨¿ÉÄÜÔÚ 9.2 ²ßÂÔ2 ÖÐÒÑ»ñÈ¡£©
- if (!activityÍêÕû) {
- activityÍêÕû = Ö´ÐÐÃüÁî("dumpsys activity activities 2>/dev/null", false);
- }
- if (activityÍêÕû && activityÍêÕû.length > 0) {
- // ÔÚ JS ÖÐËÑË÷¹Ø¼ü×Ö
- var Õ»ÐÐ = activityÍêÕû.split("\n");
- var Õ»Êä³ö = [];
- for (var si = 0; si < Õ»ÐÐ.length; si++) {
- if (Õ»ÐÐ[si].indexOf("Run #") !== -1 || Õ»ÐÐ[si].indexOf("mResumed") !== -1) {
- Õ»Êä³ö.push(Õ»ÐÐ[si].trim());
- }
- }
- if (Õ»Êä³ö.length > 0) {
- for (var sj = 0; sj < Õ»Êä³ö.length; sj++) {
- print.log(" " + Õ»Êä³ö[sj]);
- }
- } else {
- // »ØÍË£ºÊä³öǰ5Ðп´¿´¸ñʽ
- print.log("ActivityÕ»£ºÎ´ÕÒµ½ Run # ÐÅÏ¢£¬Êä³öǰ5ÐУº");
- for (var sk = 0; sk < Math.min(5, Õ»ÐÐ.length); sk++) {
- print.log(" " + Õ»ÐÐ[sk].trim());
- }
- }
- } else {
- print.log("ActivityÕ»£ºdumpsys activity ²»¿ÉÓÃ");
- }
- // =============================================================================
- // µÚÊ®²¿·Ö£º×ÛºÏʵս ¡ª¡ª Ó¦ÓÃÐÅÏ¢²É¼¯Æ÷
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÊ®²¿·Ö£ºÓ¦ÓÃÐÅÏ¢²É¼¯Æ÷");
- print.log("\n========== µÚÊ®²¿·Ö£º×ÛºÏʵս£ºÓ¦ÓÃÐÅÏ¢²É¼¯Æ÷ ==========\n");
- /**
- * ×ÛºÏʾÀý£º²É¼¯É豸ÉÏËùÓеÚÈý·½Ó¦ÓõÄÏêϸÐÅÏ¢
- * չʾ adb.exec ÔÚ¸´ÔÓ³¡¾°ÏµÄ×éºÏʹÓÃ
- */
- // ¹¤¾ßº¯Êý£º»ñȡָ¶¨°üÃûµÄÓ¦ÓÃÏêϸÐÅÏ¢
- function »ñȡӦÓÃÏêÇé(°üÃû) {
- var ÏêÇé = {
- °üÃû: °üÃû,
- °æ±¾Ãû: "",
- °æ±¾ºÅ: "",
- °²×°Â·¾¶: "",
- Êý¾ÝĿ¼: "",
- ´óС: "",
- ÊÇ·ñÔËÐÐ: false
- };
- try {
- // »ñÈ¡ÍêÕû package ÐÅÏ¢£¨dumpsys ¹ÜµÀÔÚ²¿·ÖÉ豸·µ»Ø¿Õ£¬¸ÄÓà JS ½âÎö£©
- var °üÐÅÏ¢ÍêÕû = Ö´ÐÐÃüÁî("dumpsys package " + °üÃû + " 2>/dev/null", false);
- if (°üÐÅÏ¢ÍêÕû && °üÐÅÏ¢ÍêÕû.length > 0) {
- // ²ßÂÔ1£ºËÑË÷ versionName= £¨±ê×¼¸ñʽ£©
- var vNameIdx = °üÐÅÏ¢ÍêÕû.indexOf("versionName=");
- if (vNameIdx !== -1) {
- var vNameSub = °üÐÅÏ¢ÍêÕû.substring(vNameIdx + "versionName=".length);
- ÏêÇé.°æ±¾Ãû = vNameSub.split("\n")[0].trim();
- }
- // ²ßÂÔ2£ºËÑË÷ versionName £¨²»´ø=£¬²¿·ÖMIUI/HyperOS¸ñʽ£©
- if (!ÏêÇé.°æ±¾Ãû) {
- var vNameIdx2 = °üÐÅÏ¢ÍêÕû.indexOf("versionName ");
- if (vNameIdx2 !== -1) {
- var vNameSub2 = °üÐÅÏ¢ÍêÕû.substring(vNameIdx2 + "versionName ".length);
- ÏêÇé.°æ±¾Ãû = vNameSub2.split("\n")[0].trim();
- }
- }
- // ËÑË÷ versionCode
- var vCodeIdx = °üÐÅÏ¢ÍêÕû.indexOf("versionCode=");
- if (vCodeIdx !== -1) {
- var vCodeSub = °üÐÅÏ¢ÍêÕû.substring(vCodeIdx + "versionCode=".length);
- ÏêÇé.°æ±¾ºÅ = vCodeSub.split(" ")[0].trim();
- }
- if (!ÏêÇé.°æ±¾ºÅ) {
- var vCodeIdx2 = °üÐÅÏ¢ÍêÕû.indexOf("versionCode ");
- if (vCodeIdx2 !== -1) {
- var vCodeSub2 = °üÐÅÏ¢ÍêÕû.substring(vCodeIdx2 + "versionCode ".length);
- ÏêÇé.°æ±¾ºÅ = vCodeSub2.split(" ")[0].trim();
- }
- }
- }
- // ²ßÂÔ3£ºÈç¹û dumpsys package δÕÒµ½£¬³¢ÊÔ pm dump
- if (!ÏêÇé.°æ±¾Ãû) {
- var pmDump = Ö´ÐÐÃüÁî("pm dump " + °üÃû + " 2>/dev/null", false);
- if (pmDump && pmDump.length > 0) {
- var pmVNameIdx = pmDump.indexOf("versionName=");
- if (pmVNameIdx !== -1) {
- ÏêÇé.°æ±¾Ãû = pmDump.substring(pmVNameIdx + "versionName=".length).split("\n")[0].trim();
- }
- var pmVCodeIdx = pmDump.indexOf("versionCode=");
- if (pmVCodeIdx !== -1) {
- ÏêÇé.°æ±¾ºÅ = pmDump.substring(pmVCodeIdx + "versionCode=".length).split(" ")[0].trim();
- }
- }
- }
- // »ñÈ¡°²×°Â·¾¶
- var ·¾¶ÐÅÏ¢ = Ö´ÐÐÃüÁî("pm path " + °üÃû, false);
- if (·¾¶ÐÅÏ¢) {
- ÏêÇé.°²×°Â·¾¶ = ·¾¶ÐÅÏ¢.replace("package:", "").trim();
- }
- // ¼ì²éÊÇ·ñÕýÔÚÔËÐÐ
- var ½ø³Ì¼ì²é = Ö´ÐÐÃüÁî("ps | grep " + °üÃû, false);
- ÏêÇé.ÊÇ·ñÔËÐÐ = !!(½ø³Ì¼ì²é && ½ø³Ì¼ì²é.length > 0);
- } catch (e) {
- print.log("⚠ »ñÈ¡ " + °üÃû + " ÏêÇéʧ°Ü: " + e.message);
- }
- return ÏêÇé;
- }
- // ¹¤¾ßº¯Êý£º»ñÈ¡É豸×ÛºÏÐÅÏ¢
- function »ñÈ¡É豸ÐÅÏ¢() {
- var É豸 = {};
- try {
- É豸.ÐͺŠ= Ö´ÐÐÃüÁî("getprop ro.product.model", false);
- É豸.Æ·ÅÆ = Ö´ÐÐÃüÁî("getprop ro.product.brand", false);
- É豸.°²×¿°æ±¾ = Ö´ÐÐÃüÁî("getprop ro.build.version.release", false);
- É豸.SDK = Ö´ÐÐÃüÁî("getprop ro.build.version.sdk", false);
- É豸.·Ö±æÂÊ = Ö´ÐÐÃüÁî("wm size", false);
- // µç³ØÐÅÏ¢¸ÄÓöà²ßÂÔ»ñÈ¡º¯Êý
- var É豸µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
- É豸.µçÁ¿ = É豸µç³Ø.µçÁ¿ ? (É豸µç³Ø.µçÁ¿ + "%") : "δ֪";
- É豸.×ÜÄÚ´æ = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -1", false);
- É豸.¿ÉÓô洢 = Ö´ÐÐÃüÁî("df /sdcard | tail -1", false);
- } catch (e) {
- print.log("⚠ »ñÈ¡É豸ÐÅϢʧ°Ü: " + e.message);
- }
- return É豸;
- }
- // Ö´Ðвɼ¯
- print.log("--- 10.1 ²É¼¯É豸ÐÅÏ¢ ---");
- var É豸ÐÅÏ¢ = »ñÈ¡É豸ÐÅÏ¢();
- print.log("É豸Ðͺţº" + É豸ÐÅÏ¢.ÐͺÅ);
- print.log("Éè±¸Æ·ÅÆ£º" + É豸ÐÅÏ¢.Æ·ÅÆ);
- print.log("°²×¿°æ±¾£º" + É豸ÐÅÏ¢.°²×¿°æ±¾);
- print.log("ÆÁÄ»·Ö±æÂÊ£º" + É豸ÐÅÏ¢.·Ö±æÂÊ);
- print.log("µçÁ¿ÐÅÏ¢£º" + É豸ÐÅÏ¢.µçÁ¿);
- print.log("ÄÚ´æÐÅÏ¢£º" + É豸ÐÅÏ¢.×ÜÄÚ´æ);
- print.log("\n--- 10.2 ²É¼¯µÚÈý·½Ó¦ÓÃÐÅÏ¢£¨Ç°3¸ö£©---");
- var Ó¦ÓÃÁбíÔʼ = Ö´ÐÐÃüÁî("pm list packages -3", false);
- if (Ó¦ÓÃÁбíÔʼ) {
- var Ó¦ÓÃÁбí = Ó¦ÓÃÁбíÔʼ.split("\n");
- var ²É¼¯ÊýÁ¿ = Math.min(3, Ó¦ÓÃÁбí.length);
- for (var j = 0; j < ²É¼¯ÊýÁ¿; j++) {
- var °üÃû = Ó¦ÓÃÁбí[j].replace("package:", "").trim();
- if (°üÃû) {
- print.log("\n Ó¦Óà " + (j + 1) + ": " + °üÃû);
- var ÏêÇé = »ñȡӦÓÃÏêÇé(°üÃû);
- print.log(" °æ±¾Ãû: " + ÏêÇé.°æ±¾Ãû);
- print.log(" °æ±¾ºÅ: " + ÏêÇé.°æ±¾ºÅ);
- print.log(" °²×°Â·¾¶: " + ÏêÇé.°²×°Â·¾¶);
- print.log(" ÊÇ·ñÔËÐÐ: " + (ÏêÇé.ÊÇ·ñÔËÐÐ ? "ÊÇ ✓" : "·ñ"));
- }
- }
- }
- // =============================================================================
- // µÚʮһ²¿·Ö£º×ÛºÏʵս ¡ª¡ª ϵͳ¼à¿Ø¹¤¾ß
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚʮһ²¿·Ö£ºÏµÍ³¼à¿Ø¹¤¾ß");
- print.log("\n\n========== µÚʮһ²¿·Ö£º×ÛºÏʵս£ºÏµÍ³¼à¿Ø¹¤¾ß ==========\n");
- /**
- * ×ÛºÏʾÀý£ºÏµÍ³×ÊÔ´¼à¿Ø¹¤¾ß
- * ¶¨Ê±²É¼¯ CPU¡¢ÄÚ´æ¡¢µç³Ø¡¢ÍøÂçµÈϵͳָ±ê
- */
- // ¹¤¾ßº¯Êý£º»ñÈ¡ CPU ʹÓÃÂÊ£¨top ÃüÁîÊä³ö¸ñʽÒòÉ豸¶øÒ죬¶à²ßÂÔ½âÎö£©
- function »ñÈ¡CPUʹÓÃÂÊ() {
- try {
- var cpuÐÅÏ¢ = Ö´ÐÐÃüÁî("top -n 1 -b 2>/dev/null", false);
- if (cpuÐÅÏ¢) {
- var ÐÐÊý×é = cpuÐÅÏ¢.split("\n");
- for (var k = 0; k < ÐÐÊý×é.length; k++) {
- var ÐÐ = ÐÐÊý×é[k].trim();
- // Æ¥Åä°üº¬ CPU ºÍ % µÄÐУ¨Èç "400%cpu 12%user 4%nice 8%sys 376%idle"£©
- if (ÐÐ.indexOf("cpu") !== -1 && ÐÐ.indexOf("%") !== -1 && ÐÐ.indexOf("PID") === -1) {
- return ÐÐ;
- }
- }
- // Èç¹ûûÕÒµ½ CPU ÐУ¬·µ»ØÇ°3ÐÐ
- return ÐÐÊý×é.slice(0, 3).join("\n");
- }
- } catch (e) {
- print.log("⚠ »ñÈ¡CPUʹÓÃÂÊʧ°Ü: " + e.message);
- }
- return "»ñȡʧ°Ü";
- }
- // ¹¤¾ßº¯Êý£º»ñÈ¡ÄÚ´æÊ¹ÓÃÇé¿ö
- function »ñÈ¡ÄÚ´æÊ¹ÓÃ() {
- try {
- var meminfo = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -3", false);
- return meminfo || "»ñȡʧ°Ü";
- } catch (e) {
- return "»ñȡʧ°Ü: " + e.message;
- }
- }
- // ¹¤¾ßº¯Êý£º»ñÈ¡µç³ØÏêϸÐÅÏ¢£¨¶à²ßÂÔ£ºsysfsÎļþ ¡ú dumpsys½âÎö ¡ú getprop»ØÍË£©
- function »ñÈ¡µç³ØÐÅÏ¢() {
- var µç³Ø = { µçÁ¿: "", ζÈ: "", ״̬: "", ¼¼Êõ: "" };
- try {
- // ²ßÂÔ1£ºsysfs Îļþϵͳ£¨±ê׼·¾¶£©
- µç³Ø.µçÁ¿ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/capacity 2>/dev/null", false);
- var ζÈÔʼ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/temp 2>/dev/null", false);
- if (ζÈÔʼ) {
- var ζÈÖµ = parseInt(ζÈÔʼ.trim(), 10);
- µç³Ø.ÎÂ¶È = isNaN(ζÈÖµ) ? "" : (ζÈÖµ / 10) + "¡ãC";
- }
- var ״̬Ôʼ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/status 2>/dev/null", false);
- var ״̬ӳÉä = {"Charging": "³äµçÖÐ", "Discharging": "·ÅµçÖÐ", "Full": "ÒѳäÂú", "Not charging": "δ³äµç"};
- µç³Ø.״̬ = ״̬ӳÉä[״̬Ôʼ] || ״̬Ôʼ || "";
- µç³Ø.¼¼Êõ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/battery/technology 2>/dev/null", false);
- // ²ßÂÔ2£ºÈç¹û sysfs Ϊ¿Õ£¬Óà dumpsys battery ½âÎö£¨²»ÓùܵÀgrep£¬Ö±½ÓJSËÑË÷£©
- if (!µç³Ø.µçÁ¿) {
- var dumpsysµç³Ø = Ö´ÐÐÃüÁî("dumpsys battery 2>/dev/null", false);
- if (dumpsysµç³Ø && dumpsysµç³Ø.length > 0) {
- var µç³ØÐÐ = dumpsysµç³Ø.split("\n");
- for (var bi = 0; bi < µç³ØÐÐ.length; bi++) {
- var ÐÐÄÚÈÝ = µç³ØÐÐ[bi].trim();
- if (ÐÐÄÚÈÝ.indexOf("level:") !== -1 && !µç³Ø.µçÁ¿) {
- µç³Ø.µçÁ¿ = ÐÐÄÚÈÝ.replace("level:", "").trim();
- }
- if (ÐÐÄÚÈÝ.indexOf("temperature:") !== -1 && !µç³Ø.ζÈ) {
- var ζÈÌáÈ¡ = parseInt(ÐÐÄÚÈÝ.replace("temperature:", "").trim(), 10);
- µç³Ø.ÎÂ¶È = isNaN(ζÈÌáÈ¡) ? "" : (ζÈÌáÈ¡ / 10) + "¡ãC";
- }
- if (ÐÐÄÚÈÝ.indexOf("status:") !== -1 && !µç³Ø.״̬) {
- var ״̬ÌáÈ¡ = ÐÐÄÚÈÝ.replace("status:", "").trim();
- µç³Ø.״̬ = ״̬ӳÉä[״̬ÌáÈ¡] || ״̬ÌáÈ¡ || "";
- }
- if (ÐÐÄÚÈÝ.indexOf("technology:") !== -1 && !µç³Ø.¼¼Êõ) {
- µç³Ø.¼¼Êõ = ÐÐÄÚÈÝ.replace("technology:", "").trim();
- }
- }
- }
- }
- // ²ßÂÔ3£ºÈç¹ûÈÔΪ¿Õ£¬³¢ÊÔ bms ·¾¶£¨²¿·Ö¸ßͨÉ豸£©
- if (!µç³Ø.µçÁ¿) {
- µç³Ø.µçÁ¿ = Ö´ÐÐÃüÁî("cat /sys/class/power_supply/bms/capacity 2>/dev/null", false);
- }
- } catch (e) {
- print.log("⚠ »ñÈ¡µç³ØÐÅϢʧ°Ü: " + e.message);
- }
- return µç³Ø;
- }
- // ¹¤¾ßº¯Êý£º»ñÈ¡ÍøÂçÁ÷Á¿Í³¼Æ
- function »ñÈ¡ÍøÂçÁ÷Á¿() {
- try {
- // »ñÈ¡ wlan0 ½Ó¿ÚµÄÁ÷Á¿Í³¼Æ
- var Á÷Á¿ = Ö´ÐÐÃüÁî("cat /proc/net/dev | grep wlan0", false);
- if (Á÷Á¿) {
- // /proc/net/dev ¸ñʽ: " wlan0: rx_bytes rx_packets ... tx_bytes tx_packets ..."
- // trim ºó split: ×Ö¶Î[0]="wlan0:" ×Ö¶Î[1]=rx_bytes ×Ö¶Î[2]=rx_packets ... ×Ö¶Î[9]=tx_bytes ×Ö¶Î[10]=tx_packets
- var ×Ö¶Î = Á÷Á¿.trim().split(/\s+/);
- if (×Ö¶Î.length >= 11) {
- return {
- ½ÓÊÕ×Ö½Ú: ×Ö¶Î[1],
- ½ÓÊÕ°üÊý: ×Ö¶Î[2],
- ·¢ËÍ×Ö½Ú: ×Ö¶Î[9],
- ·¢ËͰüÊý: ×Ö¶Î[10]
- };
- }
- }
- } catch (e) {
- print.log("⚠ »ñÈ¡ÍøÂçÁ÷Á¿Ê§°Ü: " + e.message);
- }
- return null;
- }
- // Ö´ÐÐ¼à¿Ø
- print.log("--- 11.1 ϵͳ×ÊÔ´¿ìÕÕ ---");
- print.log("\n[CPU ʹÓÃÂÊ]");
- print.log(" " + »ñÈ¡CPUʹÓÃÂÊ());
- print.log("\n[ÄÚ´æÊ¹ÓÃ]");
- var ÄÚ´æ = »ñÈ¡ÄÚ´æÊ¹ÓÃ();
- var ÄÚ´æÐÐ = ÄÚ´æ.split("\n");
- for (var p = 0; p < ÄÚ´æÐÐ.length; p++) {
- print.log(" " + ÄÚ´æÐÐ[p]);
- }
- print.log("\n[µç³ØÐÅÏ¢]");
- var µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
- print.log(" µçÁ¿: " + (µç³Ø.µçÁ¿ || "δ֪") + "%");
- print.log(" ζÈ: " + (µç³Ø.ÎÂ¶È || "δ֪"));
- print.log(" ״̬: " + (µç³Ø.״̬ || "δ֪"));
- print.log(" µç³Ø¼¼Êõ: " + (µç³Ø.¼¼Êõ || "δ֪"));
- print.log("\n[ÍøÂçÁ÷Á¿]");
- var Á÷Á¿ = »ñÈ¡ÍøÂçÁ÷Á¿();
- if (Á÷Á¿) {
- print.log(" ½ÓÊÕ: " + Á÷Á¿.½ÓÊÕ×Ö½Ú + " ×Ö½Ú / " + Á÷Á¿.½ÓÊÕ°üÊý + " °ü");
- print.log(" ·¢ËÍ: " + Á÷Á¿.·¢ËÍ×Ö½Ú + " ×Ö½Ú / " + Á÷Á¿.·¢ËͰüÊý + " °ü");
- } else {
- print.log(" »ñÈ¡Á÷Á¿ÐÅϢʧ°Ü");
- }
- // =============================================================================
- // µÚÊ®¶þ²¿·Ö£º×ÛºÏʵս ¡ª¡ª ÖÇÄÜÇåÀí¹¤¾ß
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÊ®¶þ²¿·Ö£ºÖÇÄÜÇåÀí¹¤¾ß");
- print.log("\n\n========== µÚÊ®¶þ²¿·Ö£º×ÛºÏʵս£ºÖÇÄÜÇåÀí¹¤¾ß ==========\n");
- /**
- * ×ÛºÏʾÀý£ºÖÇÄÜÇåÀí¹¤¾ß
- * ÇåÀí»º´æ¡¢É±ËÀºǫ́½ø³Ì¡¢ÊÍ·ÅÄÚ´æ
- * չʾ root ºÍ·Ç root ģʽµÄ×éºÏʹÓÃ
- */
- // ¹¤¾ßº¯Êý£º»ñÈ¡»º´æ´óС
- function »ñÈ¡»º´æ´óС() {
- try {
- var »º´æÐÅÏ¢ = Ö´ÐÐÃüÁî("du -sh /sdcard/Android/data/*/cache 2>/dev/null", false);
- return »º´æÐÅÏ¢ || "ÎÞ»º´æÊý¾Ý";
- } catch (e) {
- return "»ñȡʧ°Ü";
- }
- }
- // ¹¤¾ßº¯Êý£ºÇåÀíÖ¸¶¨Ó¦ÓõĻº´æ
- function ÇåÀíÓ¦Óûº´æ(°üÃû) {
- // pm clear »áÇå³ýËùÓÐÊý¾Ý£¨°üÀ¨µÇ¼״̬£©£¬½÷É÷ʹÓÃ
- // ÕâÀïʹÓà root ȨÏÞÖ»Ç建´æÄ¿Â¼
- var ½á¹û = Ö´ÐÐÃüÁî("rm -rf /sdcard/Android/data/" + °üÃû + "/cache/* 2>/dev/null", false);
- return ½á¹û;
- }
- // ¹¤¾ßº¯Êý£ºÇ¿ÖÆÍ£Ö¹ËùÓеÚÈý·½ºǫ́ӦÓÃ
- function Í£Ö¹ºǫ́ӦÓÃ() {
- var Í£Ö¹ÊýÁ¿ = 0;
- try {
- var Ó¦ÓÃÁбí = Ö´ÐÐÃüÁî("pm list packages -3", false);
- if (Ó¦ÓÃÁбí) {
- var Ó¦Óà = Ó¦ÓÃÁбí.split("\n");
- for (var q = 0; q < Ó¦ÓÃ.length; q++) {
- var °üÃû = Ó¦ÓÃ[q].replace("package:", "").trim();
- if (°üÃû) {
- // ¼ì²éÊÇ·ñÔÚÔËÐÐ
- var ½ø³Ì = Ö´ÐÐÃüÁî("ps | grep " + °üÃû, false);
- if (½ø³Ì && ½ø³Ì.length > 0) {
- // Ç¿ÖÆÍ£Ö¹
- Ö´ÐÐÃüÁĬ("am force-stop " + °üÃû, false);
- print.log(" ✓ ÒÑÍ£Ö¹: " + °üÃû);
- Í£Ö¹ÊýÁ¿++;
- }
- }
- }
- }
- } catch (e) {
- print.log("⚠ Í£Ö¹ºǫ́ӦÓÃʧ°Ü: " + e.message);
- }
- return Í£Ö¹ÊýÁ¿;
- }
- // Ö´ÐÐÇåÀí£¨ÑÝʾģʽ£¬²»Êµ¼ÊÖ´ÐУ©
- print.log("--- 12.1 ²é¿´»º´æÇé¿ö ---");
- print.log("»º´æÐÅÏ¢£º\n" + »ñÈ¡»º´æ´óС());
- print.log("\n--- 12.2 ÇåÀíÁÙʱÎļþ ---");
- Ö´ÐÐÃüÁĬ("rm -rf /sdcard/aiwrok_test/* 2>/dev/null", false);
- print.log("✓ ÒÑÇåÀí /sdcard/aiwrok_test/ ÁÙʱÎļþ");
- print.log("\n--- 12.3 Í£Ö¹ºǫ́ӦÓã¨ÐèҪʱÆôÓã©---");
- print.log("£¨ÑÝʾģʽ£©Êµ¼ÊʹÓÃʱµ÷Óà ֹͣºǫ́ӦÓÃ() º¯Êý");
- // ʹÓà root ģʽÇå¿Õϵͳ»º´æ£¨¸ß¼¶²Ù×÷£©
- print.log("\n--- 12.4 ϵͳ¼¶»º´æÇåÀí£¨root£©---");
- // adb.exec("echo 3 > /proc/sys/vm/drop_caches", true); // root ȨÏÞÊÍ·ÅÄÚ´æ
- print.log("£¨Ê¾Àý£©adb.exec('echo 3 > /proc/sys/vm/drop_caches', true) ÒÔ root Çå¿Õϵͳ»º´æ");
- // =============================================================================
- // µÚÊ®Èý²¿·Ö£ºadb.exec Óë agent.shell ¶Ô±ÈÓ뻥ת
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÊ®Èý²¿·Ö£ºAPI¶Ô±ÈÓ뻥ת");
- print.log("\n\n========== µÚÊ®Èý²¿·Ö£ºadb.exec Óë agent.shell ¶Ô±È ==========\n");
- print.log("©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ð©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ð©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´");
- print.log("©¦ ÌØÐÔ ©¦ adb.exec() ©¦ agent.shell() ©¦");
- print.log("©À©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©à©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©à©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©È");
- print.log("©¦ ȨÏÞ¿ØÖÆ ©¦ µÚ¶þ²ÎÊý¿ØÖÆ root ©¦ ÐèÒª´úÀíģʽ/root ©¦");
- print.log("©¦ ·µ»ØÖµ ©¦ ÐèÇåÏ´ successMsg ©¦ Ïà¶Ô¸É¾» ©¦");
- print.log("©¦ ÊÊÓó¡¾° ©¦ ͨÓÃÃüÁîÖ´ÐÐ ©¦ ´úÀíģʽ×Ô¶¯»¯ ©¦");
- print.log("©¦ root Ö§³Ö ©¦ isRoot=true ¼´¿É ©¦ ÒÀÀµ´úÀíģʽ ©¦");
- print.log("©¦ Òì³£´¦Àí ©¦ Ðè try-catch ©¦ Ðè try-catch ©¦");
- print.log("©¦ Ö´ÐÐģʽ ©¦ É豸¶ËÖ±½ÓÖ´ÐÐ ©¦ ͨ¹ý agent ´úÀí ©¦");
- print.log("©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ø©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ø©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼");
- // »¥×ªÊ¾Àý£ºÍ³Ò»ÃüÁîÖ´ÐнӿÚ
- print.log("\n--- ͳһÃüÁîÖ´Ðнӿڣ¨×Ô¶¯Ñ¡Ôñ adb.exec »ò agent.shell£©---");
- function ÖÇÄÜÖ´ÐÐ(ÃüÁî, ÐèÒªroot) {
- var ½á¹û = "";
- try {
- // ÓÅÏÈʹÓà adb.exec
- if (typeof adb !== "undefined" && adb.exec) {
- var Ôʼ = adb.exec(ÃüÁî, ÐèÒªroot || false);
- ½á¹û = ÇåÏ´Êä³ö(String(Ôʼ));
- print.log("[adb.exec] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
- }
- // »ØÍ˵½ agent.shell
- else if (typeof agent !== "undefined" && agent.shell) {
- ½á¹û = String(agent.shell(ÃüÁî));
- print.log("[agent.shell] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
- }
- // »ØÍ˵½ shell.exec
- else if (typeof shell !== "undefined" && shell.exec) {
- ½á¹û = String(shell.exec(ÃüÁî));
- print.log("[shell.exec] " + ÃüÁî + " ¡ú " + ½á¹û.substring(0, 50));
- }
- else {
- print.log("⚠ ÎÞ¿ÉÓõÄÃüÁîÖ´ÐнӿÚ");
- }
- } catch (e) {
- print.log("⚠ ÖÇÄÜÖ´ÐÐÒì³£: " + e.message);
- }
- return ½á¹û;
- }
- // ²âÊÔͳһ½Ó¿Ú
- print.log("\n²âÊÔͳһ½Ó¿Ú£º");
- ÖÇÄÜÖ´ÐÐ("getprop ro.product.model", false);
- ÖÇÄÜÖ´ÐÐ("ls /sdcard/", false);
- // =============================================================================
- // µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÈÎÎñ ¡ª¡ª ÖÜÆÚÐÔϵͳ¼à¿Ø
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÏµÍ³¼à¿Ø");
- print.log("\n\n========== µÚÊ®ËIJ¿·Ö£º¶¨Ê±ÏµÍ³¼à¿Ø ==========\n");
- /**
- * ×ÛºÏʾÀý£º¶¨Ê±¼à¿ØÏµÍ³×´Ì¬²¢¼Ç¼ÈÕÖ¾
- * ʹÓà setInterval ÖÜÆÚÐԲɼ¯ÏµÍ³ÐÅÏ¢
- */
- var ¼à¿Ø´ÎÊý = 0;
- var ×î´ó¼à¿Ø´ÎÊý = 3; // ÑÝʾÓã¬Êµ¼Ê¿ÉÉèΪ¸ü´óÖµ
- function ϵͳ¼à¿ØÈÎÎñ() {
- ¼à¿Ø´ÎÊý++;
- print.log("\n--- µÚ " + ¼à¿Ø´ÎÊý + " ´Î¼à¿Ø [" + new Date().toLocaleTimeString() + "] ---");
- // ²É¼¯ CPU
- var cpu = »ñÈ¡CPUʹÓÃÂÊ();
- print.log(" CPU: " + cpu);
- // ²É¼¯ÄÚ´æ
- var mem = Ö´ÐÐÃüÁî("cat /proc/meminfo | head -1", false);
- print.log(" ÄÚ´æ: " + mem);
- // ²É¼¯µç³Ø
- var µç³Ø = »ñÈ¡µç³ØÐÅÏ¢();
- print.log(" µçÁ¿: " + (µç³Ø.µçÁ¿ || "?") + "% | ζÈ: " + (µç³Ø.ÎÂ¶È || "?"));
- // ²É¼¯Ç°Ì¨Ó¦Ó㨹ܵÀgrep·µ»Ø¿Õ£¬¸ÄÓÃJS½âÎödumpsys windowÍêÕûÊä³ö£©
- var ¼à¿Ø´°¿Ú = Ö´ÐÐÃüÁî("dumpsys window 2>/dev/null", false);
- if (¼à¿Ø´°¿Ú && ¼à¿Ø´°¿Ú.length > 0) {
- var focusIdx = ¼à¿Ø´°¿Ú.indexOf("mCurrentFocus");
- if (focusIdx !== -1) {
- var focusÐÐ = ¼à¿Ø´°¿Ú.substring(focusIdx, focusIdx + 200).split("\n")[0];
- print.log(" ǰ̨: " + focusÐÐ);
- } else {
- // »ØÍË£ºËÑË÷ mFocusedApp
- var appIdx = ¼à¿Ø´°¿Ú.indexOf("mFocusedApp");
- if (appIdx !== -1) {
- var appÐÐ = ¼à¿Ø´°¿Ú.substring(appIdx, appIdx + 200).split("\n")[0];
- print.log(" ǰ̨: " + appÐÐ);
- } else {
- print.log(" ǰ̨: δ»ñÈ¡µ½½¹µã´°¿Ú");
- }
- }
- } else {
- print.log(" ǰ̨: dumpsys window ²»¿ÉÓÃ");
- }
- if (¼à¿Ø´ÎÊý >= ×î´ó¼à¿Ø´ÎÊý) {
- print.log("\n✓ ¼à¿ØÍê³É£¬¹²Ö´ÐÐ " + ¼à¿Ø´ÎÊý + " ´Î");
- }
- }
- // Ö´ÐÐÒ»´Î¼à¿ØÑÝʾ
- ϵͳ¼à¿ØÈÎÎñ();
- // ʵ¼Ê¶¨Ê±¼à¿Ø£¨È¡Ïû×¢Êͼ´¿ÉÆôÓã©
- // setInterval(function() {
- // ϵͳ¼à¿ØÈÎÎñ();
- // }, 60000); // ÿ60Ãë¼à¿ØÒ»´Î
- // =============================================================================
- // µÚÊ®Î岿·Ö£ºÈÕÖ¾¼Ç¼ϵͳ
- // =============================================================================
- µ¹¼ÆÊ±(3, "µÚÊ®Î岿·Ö£ºÈÕÖ¾¼Ç¼ϵͳ");
- print.log("\n\n========== µÚÊ®Î岿·Ö£ºadb.exec ÈÕÖ¾¼Ç¼ϵͳ ==========\n");
- /**
- * ×ÛºÏʾÀý£º½« adb.exec Ö´Ðнá¹ûдÈëÈÕÖ¾Îļþ
- * ʵÏÖÃüÁîÖ´ÐÐÈÕÖ¾µÄ³Ö¾Ã»¯´æ´¢
- */
- function дÈëÈÕÖ¾(ÄÚÈÝ) {
- var ʱ¼ä´Á = new Date().toISOString();
- var ÈÕÖ¾ÐÐ = "[" + ʱ¼ä´Á + "] " + ÄÚÈÝ + "\n";
- // ʹÓà echo ×·¼ÓдÈëÈÕÖ¾Îļþ
- Ö´ÐÐÃüÁĬ("echo '" + ÈÕÖ¾ÐÐ.replace(/'/g, "'\\''") + "' >> /sdcard/aiwrok_test/adb_log.txt", false);
- }
- function ¼Ç¼ÃüÁîÖ´ÐÐ(ÃüÁî, ÊÇ·ñroot) {
- var ¿ªÊ¼Ê±¼ä = Date.now();
- var ½á¹û = Ö´ÐÐÃüÁî(ÃüÁî, ÊÇ·ñroot);
- var ºÄʱ = Date.now() - ¿ªÊ¼Ê±¼ä;
- var ÈÕÖ¾ÄÚÈÝ = "CMD: " + ÃüÁî + " | ROOT: " + ÊÇ·ñroot + " | TIME: " + ºÄʱ + "ms | RESULT: " + ½á¹û.substring(0, 100);
- дÈëÈÕÖ¾(ÈÕÖ¾ÄÚÈÝ);
- print.log(" 📝 " + ÈÕÖ¾ÄÚÈÝ);
- return ½á¹û;
- }
- print.log("--- 15.1 ¼Ç¼ÃüÁîÖ´ÐÐÈÕÖ¾ ---");
- // ´´½¨ÈÕ־Ŀ¼
- Ö´ÐÐÃüÁĬ("mkdir -p /sdcard/aiwrok_test", false);
- // Ö´Ðв¢¼Ç¼
- ¼Ç¼ÃüÁîÖ´ÐÐ("getprop ro.product.model", false);
- ¼Ç¼ÃüÁîÖ´ÐÐ("ls /sdcard/", false);
- // µç³ØÐÅÏ¢£º²»Óà grep ¹ÜµÀ£¨·µ»Ø¿Õ£©£¬¸ÄÓöà²ßÂÔ»ñÈ¡º¯Êý
- var µç³ØÈÕÖ¾ = »ñÈ¡µç³ØÐÅÏ¢();
- ¼Ç¼ÃüÁîÖ´ÐÐ("echo 'battery_level=" + (µç³ØÈÕÖ¾.µçÁ¿ || "unknown") + " temp=" + (µç³ØÈÕÖ¾.ÎÂ¶È || "unknown") + "'", false);
- print.log("\n--- 15.2 ²é¿´ÈÕÖ¾Îļþ ---");
- var ÈÕÖ¾ÄÚÈÝ = Ö´ÐÐÃüÁî("cat /sdcard/aiwrok_test/adb_log.txt 2>/dev/null", false);
- print.log("ÈÕÖ¾ÄÚÈÝ£º\n" + (ÈÕÖ¾ÄÚÈÝ || "ÈÕ־Ϊ¿Õ"));
- // =============================================================================
- // ×ܽá
- // =============================================================================
- print.log("\n\n========== ×ܽá ==========\n");
- print.log("adb.exec(command, isRoot) ºËÐÄÓ÷¨£º");
- print.log(" 1. »ù´¡Ó÷¨£ºadb.exec('ls', false) ¡ú ·ÇrootÖ´ÐÐlsÃüÁî");
- print.log(" 2. rootÓ÷¨£ºadb.exec('chmod 777 /data/tmp', true) ¡ú rootÖ´ÐÐ");
- print.log(" 3. Îļþ²Ù×÷£ºls/cat/cp/mv/rm/mkdir/chmod");
- print.log(" 4. Ó¦ÓùÜÀí£ºpm list/install/uninstall/clear, am start/force-stop");
- print.log(" 5. ϵͳÐÅÏ¢£ºgetprop/dumpsys/wm size/df/cat /proc/meminfo");
- print.log(" 6. ÊäÈëÄ£Ä⣺input tap/swipe/text/keyevent");
- print.log(" 7. ½ØÍ¼Â¼ÆÁ£ºscreencap/screenrecord");
- print.log(" 8. ½ø³Ì¹ÜÀí£ºps/top/kill");
- print.log(" 9. ÍøÂç²Ù×÷£ºping/ip/curl");
- print.log(" 10. UI¸¨Öú£ºuiautomator dump");
- print.log("");
- print.log("×¢ÒâÊÂÏ");
- print.log(" - ·µ»ØÖµÎª JSON ¸ñʽ {\"errorMsg\":\"\",\"success\":\"ÄÚÈÝ\"}£¬ÐèÌáÈ¡ success ×Ö¶Î");
- print.log(" - Java String ÐèÓà String() תΪ JS ÔÉú×Ö·û´®ÔÙ×öÕýÔò/·Ö¸î");
- print.log(" - ²»Ö§³Ö grep -P£¬Ê¹ÓÃÆÕͨ grep");
- print.log(" - root ģʽÐèÉ豸ÒÑ root »ò PC_ADB Á¬½Ó");
- print.log(" - ½¨ÒéËùÓе÷Óðü¹ü try-catch ·ÀÖ¹Òì³£");
- print.log(" - isRoot=true ʱµ×²ãͨ¹ý su -c Ö´ÐУ¬Ðè root ȨÏÞ");
- print.log("\n✅ adb.exec() ¸ß¼¶Ó÷¨Ê¾ÀýÖ´ÐÐÍê±Ï");
¸´ÖÆ´úÂë
|
|