diff --git a/app/build.gradle b/app/build.gradle index 6d76b64..aa83e70 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.vectras.vm" minSdk minApi targetSdk targetApi - versionCode 86 - versionName "3.8.2" + versionCode 87 + versionName "3.8.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true @@ -103,12 +103,11 @@ dependencies { implementation 'com.airbnb.android:lottie:6.7.1' implementation 'org.apache.commons:commons-compress:1.28.0' // implementation 'com.google.firebase:firebase-crashlytics-buildtools:3.0.6' - implementation 'androidx.activity:activity-ktx:1.12.3' + implementation 'androidx.activity:activity-ktx:1.12.4' implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation 'androidx.preference:preference-ktx:1.2.1' implementation "androidx.documentfile:documentfile:1.1.0" implementation 'androidx.core:core-ktx:1.17.0' - implementation 'androidx.activity:activity-ktx:1.12.3' compileOnly project(':shell-loader:stub') implementation project(":terminal-view") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 904ccab..ea4f6b6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,7 +7,6 @@ - @@ -92,6 +91,7 @@ android:exported="false" /> @@ -112,34 +112,31 @@ + android:exported="false" /> + android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout" + android:exported="true" /> + android:exported="true"> @@ -148,13 +145,13 @@ + android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout" + android:exported="true" /> "qemu-system-aarch64"; + case "PPC" -> "qemu-system-ppc"; + case "I386" -> "qemu-system-i386"; + default -> "qemu-system-x86_64"; + }; + vterm.executeShellCommand2("killall -15 " + qemuProcess + "; sleep 1; killall -9 " + qemuProcess, false, null); } public static void killallqemuprocesses(Context context) { Terminal vterm = new Terminal(context); - vterm.executeShellCommand2("killall -15 qemu-system-i386 && killall -15 qemu-system-x86_64 && killall -15 qemu-system-aarch64 && killall -15 qemu-system-ppc", false, null); + vterm.executeShellCommand2("pkill -15 -f qemu-system-; sleep 1; pkill -9 -f qemu-system-", false, null); } public static void shutdownCurrentVM() { diff --git a/app/src/main/java/com/vectras/vm/main/core/MainStartVM.java b/app/src/main/java/com/vectras/vm/main/core/MainStartVM.java index 82a6595..f7c40f7 100644 --- a/app/src/main/java/com/vectras/vm/main/core/MainStartVM.java +++ b/app/src/main/java/com/vectras/vm/main/core/MainStartVM.java @@ -77,7 +77,8 @@ public class MainStartVM { if (MainSettingsManager.getVmUi(context).equals("X11") && !VMManager.isVMRunning(context, vmID)) { if (MainSettingsManager.getRunQemuWithXterm(context)) { - runCommandFormat = String.format(runCommandFormat, "xterm -e bash -c \"%s\""); + String logFilePath = VMManager.getVMLogFilePath(context, vmID); + runCommandFormat = String.format(runCommandFormat, "xterm -e bash -c \"%s 2>&1 | tee " + logFilePath + "\"; cat " + logFilePath + "; rm " + logFilePath); } else { runCommandFormat = String.format(runCommandFormat, "bash -c \"%s\""); } diff --git a/app/src/main/java/com/vectras/vm/main/monitor/SystemMonitorFragment.java b/app/src/main/java/com/vectras/vm/main/monitor/SystemMonitorFragment.java index cb56fa7..8b8e863 100644 --- a/app/src/main/java/com/vectras/vm/main/monitor/SystemMonitorFragment.java +++ b/app/src/main/java/com/vectras/vm/main/monitor/SystemMonitorFragment.java @@ -104,7 +104,7 @@ public class SystemMonitorFragment extends Fragment { if (getContext() != null) { requireActivity().runOnUiThread(this::getQemuInfo); } - }, 500, TimeUnit.MILLISECONDS); + }, 2000, TimeUnit.MILLISECONDS); })); binding.btStopvmvnc.setOnClickListener(v -> { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9130856..4d86184 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -91,7 +91,7 @@ 密码 端口 中继转发 - 输入中继转发服务器地址 <b>仅在</b> 你使用<br><i>UltraVNC</i>类中继是可用 + 输入中继转发服务器地址 <b>仅在</b> 您使用<br><i>UltraVNC</i>类中继是可用 不使用中继 中继信息 @@ -147,17 +147,17 @@ 语言 保存更改 QEMU 创建命令 - 整一个! - 杀死 QEMU + 安装 + 终止 QEMU 正在安装… 为 Termux 设置声音 - 这使得在 Vectras VM上运行的虚拟机能够使用Termux播放音频(终于不是个哑巴了!)。如果您尚未设置Termux,请选择“开始设置”,将自动复制该命令到剪贴板,您需要粘贴该命令并在Termux中运行以完成设置。下次需要播放声音时请确保Termux正在运行 + 这使得在 Vectras VM上运行的虚拟机能够使用Termux播放音频。如果您尚未设置Termux,请选择“开始设置”,将自动复制该命令到剪贴板,您需要粘贴该命令并在Termux中运行以完成设置。下次需要播放声音时请确保Termux正在运行 已复制 开始设置 未安装 Termux 您需要在设置之前安装 Termux - 就等你了… - 哇袄! + 正在等您… + 哎呀! 警告! 您设备上的 Android 操作系统或CPU不支持64位,这意味着虚拟机在运行时性能较差且不稳定 全部删除 @@ -170,7 +170,7 @@ 所有虚拟机都将被删除。您想继续吗? 删除所有虚拟机 新建 - 什么都没有¯\\_(ツ)_/¯ + 这里什么都没有 点击底部的“创建”按钮,开始创建新的虚拟机。或者… 允许访问存储空间 您需要允许访问存储空间才能继续 @@ -203,9 +203,9 @@ 因必要文件缺失导致系统不工作。该问题可能由安装过程中出差错引发。想要再次进行首次启动时的安装吗?错误码:PROOT_IS_MISSING_0. 发生错误,虚拟机未能启动. 两个及以上的设备不能同时接入同一个插槽.请检查相关设置. 错误码: DRIVE_INDEX_0_EXISTS. 发生错误,虚拟机未能启动. X11用不了. 我们推荐你切换至VNC,确定切换吗?错误码:X11_NOT_AVAILABLE. - 已切换至VNC. 你现在可以再试试启动虚拟机 + 已切换至VNC. 您现在可以再试试启动虚拟机 恢复 - 如果你在删除虚拟机时选择保留文件, 你可以把它们恢复回来 + 如果您在删除虚拟机时选择保留文件, 您可以把它们恢复回来 已恢复 QEMU参数为空. 部分虚拟机的硬件将由QEMU自动设定 出现错误,无法导出: @@ -219,11 +219,11 @@ 成功修复. 部分虚拟机可能被移至回收站 (Recycle bin) 文件夹 "修复失败. 所有虚拟机均被移至回收站 (Recycle bin) " 允许分配大于实际空间的运行内存(memory overcommit) - A potentially harmful command was detected and it has been blocked. Please check this virtual machine and try again. + 检测到潜在有害的命令,已被阻止。请检查此虚拟机并重试。 复制文件 总是复制文件至虚拟机而非直接使用 重装系统(Proot) - 如果你发现Vectras出现严重问题, 你可以重新安装系统. 所有虚拟机都将保留 + 如果您发现Vectras出现严重问题, 您可以重新安装系统. 所有虚拟机都将保留 小工具 运行虚拟机时出现问题: 虚拟机所需要的文件或文件夹不存在 创建新虚拟机时自动新建硬盘 @@ -285,7 +285,7 @@ 未连接    帮助       首选项   - 在这里你可以像Termux一样设置一些额外按键 (可以看看 这个) 以及其余项 (e.g. META).\n 留空则使用默认值 + 在这里您可以像Termux一样设置一些额外按键 (可以看看 这个) 以及其余项 (e.g. META).\n 留空则使用默认值 取消 @@ -293,24 +293,24 @@ X11 关于软件 加入我们的电报频道 - 加入我们的电报群获取最新的信息,并且为软件的添砖加瓦畅所欲言 + 加入我们的电报群获取最新的信息,分享您的意见和建议 加入 不再提示 正在准备中…请保持网络连接 - 已完成 10%\\n请坐和放宽 - 已完成 20%\\n别着急 - 已完成 30%\\n再等等 - 已完成 40%\\n**少女祈祷中** - 已完成 50%\\n在下了在下了 - 已完成 75%\n快了快了 - 只要能到达那个地方… - Completed 95%\nKeep it up… + 已完成 10%\\n不会太久… + 已完成 20%\\n不会太久… + 已完成 30%\\n不会太久… + 已完成 40%\\n不会太久… + 已完成 50%\n不会太久… + 已完成 75%\n请勿断开连接… + 继续加油… + 已完成 95%\n继续加油… 已完成 95% 显示详细日志 请授予必要权限 - 在使用前你必须授予存储权限 + 在使用前您必须授予存储权限 在设置中找到本软件的存储权限并设置为允许 - 你想要自动设置还是自行选择已经下载好的初始化包 + 您想要自动设置还是自行选择已经下载好的初始化包 自动 手动 正在准备就绪 @@ -318,7 +318,7 @@ 设置的过程中出现了问题. 要重试吗? 显示日志 需要初始化! - 你可以选择让软件自动下载或者选择初始化包完成手动设置 + 您可以选择让软件自动下载或者选择初始化包完成手动设置 手动安装 Alpine Xfce4 @@ -374,7 +374,7 @@ 启用无障碍权限实现自动开启系统快捷手势的捕获 需要授予WRITE_SECURE_SETTINGS权限 不捕获Meta/Win/Mod4键 - 允许你在捕获按键的同时使用DeX快捷键 + 允许您在捕获按键的同时使用DeX快捷键 长按实现不自动解除 显示输出 鼠标指针 @@ -392,7 +392,7 @@ 正在连接镜像站: 镜像站 欢迎使用Vectras VM。让我们开始吧! - 正在处理中...\n请坐和放宽,这需要一些时间. + 正在处理中...\n这可能需要几分钟. 从公测频道获取更新 用户配置 编辑配置 @@ -435,7 +435,7 @@ 已更改 更改失败 输入设备ID(如cdrom) - 你必须输入设备ID + 您必须输入设备ID 这不是一个可移动设备 无匹配的结果 虚拟机列表数据已损坏,要修复吗? @@ -448,9 +448,9 @@ 停止 - 位置 + 未知 前往设置 - 就一小会… + 请稍候… 新建虚拟机 作者 不兼容ARM架构 @@ -467,11 +467,11 @@ 更新 新版本可用 确定 - 你正在使用Beta版本 + 您正在使用Beta版本 现在获取新版公测版 - 没有信号AWSL + 没有信号 要退出吗 - 你只能在Vectras VM完成配置后导入该文件 + 您只能在Vectras VM完成配置后导入该文件 无法创建虚拟机目录,可能由未授予权限、内部存储空间不足或其他原因造成 这不是用于运行QEMU的命令 @@ -481,21 +481,21 @@ 命令不允许包含\"|\" 原因 镜像容量太大,试试QCOW2? - 通过使用此 ROM 的任何文件或任何以任何方式包含内容的文件,你同意Vectras VM 的开发者和贡献者以及此 ROM 或这些文件的创建者不会对你及你的物品发生的任何意外问题负责。但如果此 ROM 或这些文件的创建者被确认有恶意行为,该创建者将承担责任。这也意味着你已同意此 ROM 所包含的操作系统的所有者或提供者的条款和政策。 + 通过使用此 ROM 的任何文件或任何以任何方式包含内容的文件,您同意Vectras VM 的开发者和贡献者以及此 ROM 或这些文件的创建者不会对您及您的物品发生的任何意外问题负责。但如果此 ROM 或这些文件的创建者被确认有恶意行为,该创建者将承担责任。这也意味着您已同意此 ROM 所包含的操作系统的所有者或提供者的条款和政策。 我同意 看过来! - 当你导入任何 ROM 或使用包含任何内容的文件时,即表示接受所有这些条款。点击此处阅读全文。 - 加入Telegram群组! 多个人多双筷子 + 当您导入任何 ROM 或使用包含任何内容的文件时,即表示接受所有这些条款。点击此处阅读全文。 + 如果想的话,现在就加入 Telegram。 跳过 捐赠 - 如果你喜欢 Vectras VM,你可以在 Patreon 上支持我们。非常感谢! + 如果您喜欢 Vectras VM,您可以在 Patreon 上支持我们。非常感谢! 即刻访问 一切就绪! I386不支持共享文件夹,功能已关闭 使用UEFI(仅对x64生效) 移除虚拟机文件 保留虚拟机文件 - 要移除吗?你可以决定相关文件的去留 + 要移除吗?您可以决定相关文件的去留 macOS SD卡 秒,请稍等 @@ -513,7 +513,7 @@ 自动检查更新 启动时检查 加入公测频道 - 成为第一个吃螃蟹的人 + 您将提前收到更新,体验最新功能。 点击选择语言 内存 内存大小(MB) @@ -523,12 +523,12 @@ 您可以运行适用于 ARM 的 Windows、Linux 以及其他操作系统。 可以以比 x86_64 更高的兼容性运行旧的 x86 操作系统。 可以运行为 PowerPC 架构设计的较旧版本 macOS 以及其他操作系统。 - 你可以导入采用CVBI格式的虚拟机整合包 + 您可以导入采用CVBI格式的虚拟机整合包 深入了解开源虚拟机QEMU 创建命令 为Vectras VM新建虚拟机实现更便利的个性化 选择CPU架构或导入虚拟机 - 你还可以将CVBI文件拖拽至“导入”选项卡 + 您还可以将CVBI文件拖拽至“导入”选项卡 复制 搜索 无匹配的结果 @@ -561,7 +561,7 @@ 更换或弹出设备 更换可移动设备 更换磁盘文件 - 你必须输入设备ID + 您必须输入设备ID 这不是一个可移动设备 电源 想要关机还是重置?这些操作可能会在虚拟机内引发问题 @@ -572,9 +572,9 @@ 开放用于连接的端口 数字请设置得小一些 若不需要密码,留空就行 - 你设置的VNC端口已经被占用。解除占用,换个别的吧 + 您设置的VNC端口已经被占用。请解除占用并更换其他端口。 前往设置 - 你需要为该显示设置序号 + 您需要为该显示设置序号 停止 新建虚拟机 无效路径 @@ -584,11 +584,11 @@ CVBI文件处理失败,文件已经损坏或者路径不可读 无法创建虚拟机,故CVBI文件处理失败 无法处理该预览图 - 你的存储空间爆红了!去删点东西吧 + 您设备的可用存储空间太低,请清理。 此虚拟机数据已损坏,需要修复 虚拟机缓存文件夹创建失败。请稍后重试 正在检查更新 - 就一小会… + 请稍候… 更新内容 更新就绪 已是最新版 @@ -606,7 +606,7 @@ 得做点什么 此虚拟机数据已损坏,需要修复 开始修复 - 配置运行环境需要更多的存储空间,去清理一下再来吧 + 您的设备没有足够的存储空间来完成设置。请清理后重试。 无信号 点击重试 强制刷新 @@ -620,7 +620,7 @@ 删除文件时出错,稍后重试 文件已删除 打开主文件夹 - 你正在使用 X11而非 VNC。要使用 VNC,请进入设置-> QEMU,向下滚动到底部,然后在用户界面中选择\"VNC\"。 + 您正在使用 X11而非 VNC。要使用 VNC,请进入设置-> QEMU,向下滚动到底部,然后在用户界面中选择"VNC"。 没有可用于进行该操作的APP 文件夹不存在 共享文件夹体积不应超过516MB,请删除部分文件 @@ -629,8 +629,8 @@ 发生错误,虚拟机无法启动。另一个进程正在使用该虚拟机所需文件,请解除占用 无法新建用于存储CVBI的文件夹 快速开始 - 只要你在多任务里不划掉它,下次打开 Vectras VM 时可以更快启动。 - 你的设备的 Android (a64binder?)或 CPU 不支持 64 位,这意味着此功能无法使用。 + 只要您在多任务里不划掉它,下次打开 Vectras VM 时可以更快启动。 + 您的设备的 Android (a64binder?)或 CPU 不支持 64 位,这意味着此功能无法使用。 文件处理失败,文件已经损坏或者路径不可读 激活或者取消QEMU窗口的激活 主题 @@ -638,13 +638,13 @@ 亮色主题 暗色主题 需要重启生效 - 莫奈取色 + 动态色彩 根据系统自动取色 重启 编辑 正在导入… 完成 - 请呆在这里不要走动 + 请稍后,不要离开 正在导出… 开发者 我们的社区 @@ -658,7 +658,7 @@ 自适应体积计算 在导入 ROM 时跳过大小计算可以使导入速度更快,但导入进度将不会显示。 CRC校验 - 在导出 ROM 时检查和检测数据错误,你可以关闭此功能加快导出速度 + 在导出 ROM 时检查和检测数据错误,您可以关闭此功能加快导出速度 无法连接到 Alpine Linux 服务器或服务器暂时不可用,请检查您的网络连接、更换其他镜像源或稍后再试。 安装系统文件时发生错误。 正在复制文件 @@ -668,7 +668,7 @@ 更换可移动设备 已弹出 已更换 - 你必须输入设备ID + 您必须输入设备ID 无匹配的结果 虚拟机列表数据已损坏,要修复吗? 得做点什么 @@ -681,8 +681,8 @@ CVBI文件处理失败,文件已经损坏或者路径不可读 无法创建虚拟机文件夹,故CVBI文件处理失败 无法处理该预览图 - 你的存储空间爆红了!去删点东西吧 - 配置运行环境需要更多的存储空间,去清理一下再来吧 + 您设备的可用存储空间太低,请清理。 + 您的设备没有足够的存储空间来完成设置。请清理后重试。 检查更新 更新内容 更新就绪 @@ -697,16 +697,16 @@ 开放用于连接的端口 数字请设置得小一些 若不需要密码,留空就行 - 你设置的VNC端口已经被占用。解除占用,或者换个别的吧 - 你需要为该显示设置序号 + 您设置的VNC端口已经被占用。请解除占用并更换其他端口。 + 您需要为该显示设置序号 资源概览 状态: 端口: 通过点击系统监视器中的停止按钮来关闭此虚拟机。要控制它,请连接到此端口: 存储空间 - 在使用前你必须授予存储权限 + 在使用前您必须授予存储权限 授予存储权限 - 安卓电池优化(MIUI神隐模式/ColorOS后台行为控制等)\n 应当为Vectras VM设置为“无限制”…\n 详情参阅 https://developer.android.com/about/versions/oreo/background\n 以及 https://developer.android.com/guide/components/foreground-services#background-start-restrictions\n\n \n\n也可查阅 https://dontkillmyapp.com 获取关于厂商针对特定app杀后台的问题\n 按照不同的厂商你需要允许Vectras VM自启动, 关闭DuraSpeed(又称“MTK快霸”)\n 或者在DuraSpeed中为Vectras VM设置白名单,\n 放行 `后台弹出界面`权限 + 安卓电池优化(MIUI神隐模式/ColorOS后台行为控制等)\n 应当为Vectras VM设置为“无限制”…\n 详情参阅 https://developer.android.com/about/versions/oreo/background\n 以及 https://developer.android.com/guide/components/foreground-services#background-start-restrictions\n\n \n\n也可查阅 https://dontkillmyapp.com 获取关于厂商针对特定app杀后台的问题\n 按照不同的厂商您需要允许Vectras VM自启动, 关闭DuraSpeed(又称“MTK快霸”)\n 或者在DuraSpeed中为Vectras VM设置白名单,\n 放行 `后台弹出界面`权限 禁用电池优化 "放行“在其他应用上层显示”权限(在MIUI显示为“显示悬浮窗”)\n 对于Vectras VM在后台启动前台活动(Activity)是必要的\n 参阅 https://developer.android.com/guide/components/activities/background-starts 了解详情 " 允许“在其他应用上层显示”权限 @@ -715,9 +715,22 @@ 未连接    帮助       首选项   - 在这里你可以像Termux一样设置一些额外按键 (可以看看 这个) 以及其余项 (e.g. META).\\n 留空则使用默认值 + 在这里您可以像Termux一样设置一些额外按键 (可以看看 这个) 以及其余项 (e.g. META).\n 留空则使用默认值 日志级别 日志级别已设置到 \"%1$s\" 返回显示屏 X11用户界面环境 + 软件和驱动 + 您设备的 CPU 支持 3dfx 加速。但它可能不稳定或无法正常工作。 + 您设备的 CPU 不支持 3dfx 加速。 + 3dfx 不可用。 + X11 显示 + X11 显示设置。 + 使用 X11 显示 + X11 显示当前不可用,请尝试关闭并重新打开 Vectras VM。 + 使用 Xterm 运行 Qemu + 使用 Qemu 监视器更轻松地运行命令,无需切换。 + 前往 Termux:X11 设置。 + 使用 SDL + 如果您想使用 3dfx 并玩老游戏,请开启此选项(仅适用于 x86_64 和 i386)。 diff --git a/web/data/UpdateConfig.json b/web/data/UpdateConfig.json index 09c07cb..a86fe9f 100644 --- a/web/data/UpdateConfig.json +++ b/web/data/UpdateConfig.json @@ -5,11 +5,11 @@ "url": "https://github.com/xoureldeen/Vectras-VM-Android/releases", "Message": "

3.8.0

\nBugs fixed.", "cancellable": true, - "versionCodeBeta":"86", - "versionNameBeta":"3.8.2", - "versionNameBetas":"3.0.0,3.1.0,3.2.1,3.2.2,3.2.3,3.2.4,3.2.5,3.2.6,3.2.7,3.2.8,3.2.9,3.2.10,3.3.1,3.3.2,3.3.3,3.3.4,3.3.5,3.3.6,3.3.7,3.3.8,3.3.9,3.4.1,3.4.2,3.4.3,3.4.4,3.4.5,3.4.6,3.4.7,3.4.8,3.4.9,3.5.1,3.5.2,3.5.3,3.5.4,3.5.5,3.5.6,3.5.7,3.5.8,3.5.9,3.6.1,3.6.2,3.6.3,3.6.4,3.6.5,3.6.6,3.6.7,3.6.8,3.6.9,3.7.1,3.7.2,3.7.3,3.7.4,3.7.5,3.7.6,3.7.7,3.7.8,3.7.9,3.8.0,3.8.1,3.8.2", + "versionCodeBeta":"87", + "versionNameBeta":"3.8.3", + "versionNameBetas":"3.0.0,3.1.0,3.2.1,3.2.2,3.2.3,3.2.4,3.2.5,3.2.6,3.2.7,3.2.8,3.2.9,3.2.10,3.3.1,3.3.2,3.3.3,3.3.4,3.3.5,3.3.6,3.3.7,3.3.8,3.3.9,3.4.1,3.4.2,3.4.3,3.4.4,3.4.5,3.4.6,3.4.7,3.4.8,3.4.9,3.5.1,3.5.2,3.5.3,3.5.4,3.5.5,3.5.6,3.5.7,3.5.8,3.5.9,3.6.1,3.6.2,3.6.3,3.6.4,3.6.5,3.6.6,3.6.7,3.6.8,3.6.9,3.7.1,3.7.2,3.7.3,3.7.4,3.7.5,3.7.6,3.7.7,3.7.8,3.7.9,3.8.0,3.8.1,3.8.2,3.8.3", "sizeBeta": "45 MB", "urlBeta": "https://github.com/AnBui2004/Vectras-VM-Emu-Android/releases", - "MessageBeta": "

3.8.2

Bugs fixed.", + "MessageBeta": "

3.8.3

Bugs fixed.", "cancellableBeta": true }