diff --git a/shells/tv.sh b/shells/tv.sh index 37ccd3c..8155e4b 100644 --- a/shells/tv.sh +++ b/shells/tv.sh @@ -126,7 +126,7 @@ connect_adb() { echo -e "${YELLOW}请输入设备显示的debug【调试端口号】:(通常位于无线调试这一页)${NC}" read debug_port adb connect "${ip}:${debug_port}" - for ((i = 1; i <= 30; i++)); do + for ((i = 1; i <= 35; i++)); do device_status=$(adb devices | grep "${debug_port}" | awk '{print $2}') if [[ "$device_status" == "device" ]]; then echo -e "${GREEN}ADB 已成功连接到设备 ${debug_port}${NC}" @@ -139,9 +139,7 @@ connect_adb() { done else # ---------- 安卓13及以下 ---------- - echo -e "${YELLOW}请输入端口号 [回车默认5555]:${NC}" - read port - port=${port:-5555} + port=5555 ip_port="${ip}:${port}" adb connect "${ip_port}" @@ -659,31 +657,59 @@ get_tvbox_timezone() { fi } -# 单个xapk安装函数,支持传入路径 -install_xapk() { - local xapk_local_path="$1" - local xapkname=$(basename "$xapk_local_path") - local timestamp=$(date +%H%M%S) # 比如 142315 表示 14:23:15 - local extract_to="/tmp/xapks/${timestamp}" + + +# ========================== +# 批量安装目录中的 APK / XAPK / APKM +# ========================== +do_install_all_packages() { + local supported_exts=("apk" "xapk" "apkm") + + for ext in "${supported_exts[@]}"; do + for file in "${DATA_DIR}"/*."$ext"; do + if [ -f "$file" ]; then + echo -e "\n========== 处理文件: $(basename "$file") ==========" + install_app_package "$file" + fi + done + done +} + + +# 支持xapk/apkm/apk三种格式的安装函数 +install_app_package() { + local file_path="$1" + local filename=$(basename "$file_path") + local ext="${filename##*.}" + + local timestamp=$(date +%H%M%S) + local extract_to="/tmp/app_pkgs/${timestamp}" mkdir -p "$extract_to" - if unzip -o "$xapk_local_path" -d "$extract_to"; then - echo "XAPK文件解压成功: $xapkname" - else - echo "XAPK文件解压失败: $xapkname" - return 1 - fi + case "$ext" in + xapk|apkm) + if unzip -o "$file_path" -d "$extract_to"; then + echo "$ext 文件解压成功: $filename" + else + echo "$ext 文件解压失败: $filename" + return 1 + fi + apk_files=$(find "$extract_to" -type f -name "*.apk") + ;; + apk) + apk_files="$file_path" + ;; + *) + echo "不支持的文件类型: $ext" + return 1 + ;; + esac - apk_files=$(find "$extract_to" -type f -name "*.apk") - echo -e "解压后的多个apk:\n$apk_files" - echo -ne "${YELLOW}正在安装: $xapkname${NC} ${GREEN}" - echo + echo -e "准备安装:\n$apk_files" + echo -ne "${YELLOW}正在安装: $filename${NC} ${GREEN}\n" - # 模拟安装进度 - while true; do - echo -n ".." - sleep 1 - done & + # 模拟进度 + while true; do echo -n ".."; sleep 1; done & PROGRESS_PID=$! install_result=$(adb install-multiple $apk_files 2>&1) @@ -693,26 +719,13 @@ install_xapk() { echo -e "${NC}\n安装结果: $install_result" if echo "$install_result" | grep -qi "Success"; then - echo -e "${GREEN} 安装成功: $xapkname ${NC}" - echo -e "${RED}正在删除临时文件...${NC}" + echo -e "${GREEN}安装成功: $filename${NC}" rm -rf "$extract_to" else - echo -e "${RED}安装失败: $xapkname${NC}" + echo -e "${RED}安装失败: $filename${NC}" fi } -# ========================== -# 批量安装目录中的所有XAPK -# ========================== -do_install_all_xapks() { - - for xapk_file in "${DATA_DIR}"/*.xapk; do - if [ -f "$xapk_file" ]; then - echo -e "\n========== 处理文件: $(basename "$xapk_file") ==========" - install_xapk "$xapk_file" - fi - done -} # 安装mix apps 用于显示全部app install_mixapps() { @@ -829,8 +842,7 @@ menu_options=( "安装Android原生TV必备精选Apps(含子菜单)" "一键修改NTP(限原生TV,需重启)" "安装Play商店图标(仅google tv使用)" - "安装映射目录下的所有apk" - "安装映射目录下的所有xapk(适合流媒体app)" + "一键安装/data目录下所有apk/xapk/apkm (适合流媒体app)" "替换系统桌面" "进入KODI助手" "进入TVBox安装助手" @@ -851,8 +863,7 @@ commands=( ["显示Netflix影片码率"]="show_nf_info" ["模拟菜单键"]="show_menu_keycode" ["安装Play商店图标(仅google tv使用)"]="show_playstore_icon" - ["安装映射目录下的所有apk"]="install_all_apks" - ["安装映射目录下的所有xapk(适合流媒体app)"]="do_install_all_xapks" + ["一键安装/data目录下所有apk/xapk/apkm (适合流媒体app)"]="do_install_all_packages" ["进入KODI助手"]="kodi_helper" ["进入TVBox安装助手"]="enter_tvbox_helper" ["进入Sony电视助手"]="enter_sonytv"