From 49484943fc6d2bc3021c23f699b1dd02f342f54b Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 16 Nov 2022 00:22:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Eminitouch=20abi?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/config.json | 8 ++++++++ src/MeoAssistant/Controller.cpp | 15 +++++++++++++-- src/MeoAssistant/Resource/GeneralConfiger.cpp | 1 + src/MeoAssistant/Resource/GeneralConfiger.h | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/resource/config.json b/resource/config.json index 852d4fa5c9..707e6c29dd 100644 --- a/resource/config.json +++ b/resource/config.json @@ -58,6 +58,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -79,6 +80,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -100,6 +102,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -121,6 +124,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -142,6 +146,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -163,6 +168,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -185,6 +191,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" @@ -206,6 +213,7 @@ "release": "[Adb] kill-server", "start": "[Adb] -s [AdbSerial] shell am start -n [Intent]", "stop": "[Adb] -s [AdbSerial] shell \"am force-stop `dumpsys activity activities 2>/dev/null | grep Activities= 2>/dev/null | grep -m 1 -i -o -E [^\\ ]*arknights[^/]*`\"", + "abilist": "[Adb] -s [AdbSerial] shell getprop ro.product.cpu.abilist", "pushMinitouch": "[Adb] -s [AdbSerial] push \"[minitouchLocalPath]\" \"/data/local/tmp/[minitouchWorkingFile]\"", "chmodMinitouch": "[Adb] -s [AdbSerial] shell chmod 700 \"/data/local/tmp/[minitouchWorkingFile]\"", "callMinitouch": "[Adb] -s [AdbSerial] shell \"/data/local/tmp/[minitouchWorkingFile]\" -i" diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 3b190656b4..cdd13e4d74 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -1381,12 +1381,23 @@ bool asst::Controller::connect(const std::string& adb_path, const std::string& a return false; } + std::string abilist = call_command(cmd_replace(adb_cfg.abilist)).value_or(""); + constexpr std::array OrderedABI = { + "x86_64", "x86", "arm64-v8a", "armeabi-v7a", "armeabi", + }; + std::string_view optimal_abi = "armeabi-v7a"; + for (const auto& abi : OrderedABI) { + if (abilist.find(abi) != std::string::npos) { + optimal_abi = abi; + break; + } + } + Log.info("The optimal abi is", optimal_abi); auto minitouch_cmd_rep = [&](const std::string& cfg_cmd) -> std::string { return utils::string_replace_all( cmd_replace(cfg_cmd), { - // TODO: 用 adb shell getprop ro.product.cpu.abilist 来判断该用哪个文件夹里的 - { "[minitouchLocalPath]", (m_resource_path / "minitouch" / "armeabi-v7a" / "minitouch").string() }, + { "[minitouchLocalPath]", (m_resource_path / "minitouch" / optimal_abi / "minitouch").string() }, { "[minitouchWorkingFile]", m_uuid }, }); }; diff --git a/src/MeoAssistant/Resource/GeneralConfiger.cpp b/src/MeoAssistant/Resource/GeneralConfiger.cpp index 1b8ed36f1a..8ef8fbc146 100644 --- a/src/MeoAssistant/Resource/GeneralConfiger.cpp +++ b/src/MeoAssistant/Resource/GeneralConfiger.cpp @@ -48,6 +48,7 @@ bool asst::GeneralConfiger::parse(const json::value& json) adb.release = cfg_json.at("release").as_string(); adb.start = cfg_json.at("start").as_string(); adb.stop = cfg_json.at("stop").as_string(); + adb.abilist = cfg_json.at("abilist").as_string(); adb.push_minitouch = cfg_json.at("pushMinitouch").as_string(); adb.chmod_minitouch = cfg_json.at("chmodMinitouch").as_string(); adb.call_minitouch = cfg_json.at("callMinitouch").as_string(); diff --git a/src/MeoAssistant/Resource/GeneralConfiger.h b/src/MeoAssistant/Resource/GeneralConfiger.h index 387e46d870..3a3681833f 100644 --- a/src/MeoAssistant/Resource/GeneralConfiger.h +++ b/src/MeoAssistant/Resource/GeneralConfiger.h @@ -70,6 +70,7 @@ namespace asst std::string release; std::string start; std::string stop; + std::string abilist; std::string push_minitouch; std::string chmod_minitouch; std::string call_minitouch;