From d5e2c5247e416d5c381eb8d3a0becd4036591573 Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Sat, 21 May 2022 10:44:13 -0400 Subject: [PATCH 01/33] sload_f2fs: update code for correct binary name Change-Id: I7c14ec0b76d82d2b0951fd57fbc7184acc09d25a (cherry picked from commit 8833868a48b054c708650c136c9b27b48c901ce0) --- Android.mk | 2 +- partition.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Android.mk b/Android.mk index d65930ee..679c2ec6 100755 --- a/Android.mk +++ b/Android.mk @@ -549,7 +549,7 @@ ifeq ($(TW_INCLUDE_NTFS_3G),true) mkfs.ntfs endif ifeq ($(TARGET_USERIMAGES_USE_F2FS), true) - TWRP_REQUIRED_MODULES += sload.f2fs \ + TWRP_REQUIRED_MODULES += sload_f2fs \ libfs_mgr \ fs_mgr \ libinit diff --git a/partition.cpp b/partition.cpp index 6d1825d8..f0406205 100755 --- a/partition.cpp +++ b/partition.cpp @@ -2443,7 +2443,7 @@ bool TWPartition::Wipe_F2FS() { } needs_casefold = android::base::GetBoolProperty("external_storage.casefold.enabled", false); - needs_projid = android::base::GetBoolProperty("external_storage.projid.enabled", false); + needs_projid = android::base::GetBoolProperty("external_storage.projid.enabled", false); unsigned long long dev_sz = TWFunc::IOCTL_Get_Block_Size(Actual_Block_Device.c_str()); if (!dev_sz) return false; @@ -2460,8 +2460,8 @@ bool TWPartition::Wipe_F2FS() { f2fs_command += " " + Actual_Block_Device + " " + dev_sz_str; - if (TWFunc::Path_Exists("/system/bin/sload.f2fs")) { - f2fs_command += " && sload.f2fs -t /data " + Actual_Block_Device; + if (TWFunc::Path_Exists("/system/bin/sload_f2fs")) { + f2fs_command += " && sload_f2fs -t /data " + Actual_Block_Device; } /** From d0fcdaf492bdcaa0c230fe7789d1882b2e1b5416 Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Thu, 26 May 2022 14:14:12 -0400 Subject: [PATCH 02/33] flash_image: use Override_Active_Slot instead of bootctrl Change-Id: I985d644ccb1e3bc8f9f9da77798d7bbcb7b84419 --- gui/action.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gui/action.cpp b/gui/action.cpp index 819e4ad8..d5b8c8f4 100755 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -1801,9 +1801,9 @@ int GUIAction::flashimage(std::string arg __unused) string current_slot = PartitionManager.Get_Active_Slot_Display(); bool pre_op_status = PartitionManager.Flash_Image(path, filename); - PartitionManager.Set_Active_Slot(current_slot == "A" ? "B" : "A"); + PartitionManager.Override_Active_Slot(current_slot == "A" ? "B" : "A"); op_status = (int) !(pre_op_status && PartitionManager.Flash_Image(path, filename)); - PartitionManager.Set_Active_Slot(current_slot); + PartitionManager.Override_Active_Slot(current_slot); DataManager::SetValue("tw_flash_both_slots", 0); flag = false; @@ -2360,4 +2360,4 @@ int GUIAction::mergesnapshots(string arg __unused) { } operation_end(op_status); return 0; -} \ No newline at end of file +} From fbf1fdd07f7380bcc19eaf8048bac1f64c6ba069 Mon Sep 17 00:00:00 2001 From: bigbiff Date: Thu, 26 May 2022 19:47:58 -0400 Subject: [PATCH 03/33] release: twrp 3.6.2 a11 Change-Id: I89f3d24f336718e9ba5296a5286d7ca52ffe8c1a --- variables.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variables.h b/variables.h index 661bb481..8ae34696 100755 --- a/variables.h +++ b/variables.h @@ -17,7 +17,7 @@ #ifndef _VARIABLES_HEADER_ #define _VARIABLES_HEADER_ -#define TW_MAIN_VERSION_STR "3.6.1_11" +#define TW_MAIN_VERSION_STR "3.6.2_11" #define TW_VERSION_STR TW_MAIN_VERSION_STR TW_DEVICE_VERSION #define TW_SETTINGS_FILE ".twrps" #define TW_RECOVERY_NAME "TWRP" From bb7f0ba2a7d478858788a6331b921181d504569d Mon Sep 17 00:00:00 2001 From: nijel8 Date: Fri, 14 Jan 2022 11:59:21 -0500 Subject: [PATCH 04/33] MtpServer: create new ffs handle if current one fails - fixes MTP not working after USB unplugged and plugged Change-Id: Iea684107d7de20ff92828543881f6fbec1848b77 --- mtp/ffs/MtpServer.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mtp/ffs/MtpServer.cpp b/mtp/ffs/MtpServer.cpp index fa670243..454da251 100755 --- a/mtp/ffs/MtpServer.cpp +++ b/mtp/ffs/MtpServer.cpp @@ -164,8 +164,17 @@ bool MtpServer::hasStorage(MtpStorageID id) { void MtpServer::run() { if (mHandle->start(mPtp)) { - MTPE("Failed to start usb driver!"); + MTPE("Failed to start usb driver!\n"); mHandle->close(); + int controlFd = open(FFS_MTP_EP0, O_RDWR); + bool ffs_ok = access(FFS_MTP_EP0, W_OK) == 0; + if (ffs_ok) { + bool aio_compat = android::base::GetBoolProperty("sys.usb.ffs.aio_compat", false); + mHandle = aio_compat ? new MtpFfsCompatHandle(controlFd) : new MtpFfsHandle(controlFd); + mHandle->writeDescriptors(mPtp); + } else { + mHandle = new MtpDevHandle(controlFd); + } return; } From e963088f0f29d9ac12b5598c36a0cd6c4a014be4 Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Thu, 14 Apr 2022 20:13:10 -0400 Subject: [PATCH 05/33] twrp-depmod: only run when TW_LOAD_VENDOR_MODULES is set (1/2) Change-Id: Iaa2b16adf3eeb9696ba2d217f1003abf4a6f0f44 --- Android.mk | 13 ++++++++----- twrp.cpp | 4 ++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Android.mk b/Android.mk index 679c2ec6..53a08849 100755 --- a/Android.mk +++ b/Android.mk @@ -62,7 +62,6 @@ LOCAL_SRC_FILES := \ find_file.cpp \ infomanager.cpp \ data.cpp \ - kernel_module_loader.cpp \ partition.cpp \ partitionmanager.cpp \ progresstracking.cpp \ @@ -108,7 +107,6 @@ LOCAL_C_INCLUDES += \ bionic \ system/extras \ system/core/adb \ - system/core/libmodprobe/include \ system/core/libsparse \ external/zlib \ system/core/libziparchive/include \ @@ -129,7 +127,7 @@ LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/minuitwrp/include \ $(LOCAL_PATH)/twinstall/include -LOCAL_STATIC_LIBRARIES += libguitwrp libmodprobe +LOCAL_STATIC_LIBRARIES += libguitwrp LOCAL_SHARED_LIBRARIES += libz libc libcutils libstdc++ libtar libblkid libminuitwrp libmtdutils libtwadbbu LOCAL_SHARED_LIBRARIES += libbootloader_message libcrecovery libtwrpdigest libc++ libaosprecovery libcrypto libbase LOCAL_SHARED_LIBRARIES += libziparchive libselinux libdl_android.bootstrap @@ -307,6 +305,9 @@ ifneq ($(TW_ADDITIONAL_APEX_FILES),) LOCAL_CFLAGS += -DTW_ADDITIONAL_APEX_FILES=$(TW_ADDITIONAL_APEX_FILES) endif ifneq ($(TW_LOAD_VENDOR_MODULES),) + LOCAL_SRC_FILES += kernel_module_loader.cpp + LOCAL_C_INCLUDES += system/core/libmodprobe/include + LOCAL_STATIC_LIBRARIES += libmodprobe LOCAL_CFLAGS += -DTW_LOAD_VENDOR_MODULES=$(TW_LOAD_VENDOR_MODULES) endif ifeq ($(TW_INCLUDE_CRYPTO), true) @@ -443,8 +444,7 @@ TWRP_REQUIRED_MODULES += \ me.twrp.twrpapp.apk \ privapp-permissions-twrpapp.xml \ adbd_system_api_recovery \ - libsync.recovery \ - libmodprobe + libsync.recovery ifneq ($(TW_EXCLUDE_TZDATA), true) TWRP_REQUIRED_MODULES += \ @@ -554,6 +554,9 @@ ifeq ($(TARGET_USERIMAGES_USE_F2FS), true) fs_mgr \ libinit endif +ifneq ($(TW_LOAD_VENDOR_MODULES),) + TWRP_REQUIRED_MODULES += libmodprobe +endif TWRP_REQUIRED_MODULES += file_contexts_text diff --git a/twrp.cpp b/twrp.cpp index dcc57640..69c82182 100644 --- a/twrp.cpp +++ b/twrp.cpp @@ -44,7 +44,11 @@ extern "C" { #include "twcommon.h" #include "twrp-functions.hpp" #include "data.hpp" + +#ifdef TW_LOAD_VENDOR_MODULES #include "kernel_module_loader.hpp" +#endif + #include "partitions.hpp" #ifdef __ANDROID_API_N__ #include From 25cee82e98344438159782fd1c009a05dac5616e Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Fri, 15 Apr 2022 10:39:32 -0400 Subject: [PATCH 06/33] selinux: add missing contexts files to LOCAL_REQUIRED_MODULES Change-Id: I16d26bf9f6a41a5b459602a613f5ebc238b10fa9 --- prebuilt/Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk index ec2bb19d..02589554 100755 --- a/prebuilt/Android.mk +++ b/prebuilt/Android.mk @@ -401,7 +401,7 @@ LOCAL_POST_INSTALL_CMD += \ LOCAL_POST_INSTALL_CMD += \ && cp $(TARGET_OUT_ETC)/mke2fs.conf $(TARGET_RECOVERY_ROOT_OUT)/system/etc/mke2fs.conf endif -LOCAL_REQUIRED_MODULES += init_second_stage.recovery reboot.recovery plat_service_contexts plat_hardware_contexts vndservice_contexts twrp_soong +LOCAL_REQUIRED_MODULES += init_second_stage.recovery reboot.recovery plat_service_contexts plat_hwservice_contexts plat_hardware_contexts vndservice_contexts vendor_hwservice_contexts twrp_soong include $(BUILD_PHONY_PACKAGE) # copy license file for OpenAES From ace1121c64737af2b5d209380b44fb49ff89a3f6 Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Tue, 5 Apr 2022 17:10:29 -0400 Subject: [PATCH 07/33] openaes: fully remove from build with encrypted backups disabled Change-Id: I7941d90deb6c07bd354bfd5594b76a25ceccef1e --- Android.mk | 2 +- prebuilt/Android.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Android.mk b/Android.mk index 53a08849..f27ac4b8 100755 --- a/Android.mk +++ b/Android.mk @@ -509,7 +509,7 @@ endif ifeq ($(BOARD_HAS_NO_REAL_SDCARD),) TWRP_REQUIRED_MODULES += sgdisk endif -ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS), true) +ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS),) TWRP_REQUIRED_MODULES += openaes openaes_license endif ifeq ($(TW_INCLUDE_DUMLOCK), true) diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk index 02589554..82849438 100755 --- a/prebuilt/Android.mk +++ b/prebuilt/Android.mk @@ -255,7 +255,7 @@ endif ifneq ($(wildcard system/core/libsparse/Android.*),) RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libsparse.so endif -ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS), true) +ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS),) RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libopenaes.so endif ifeq ($(TARGET_USERIMAGES_USE_F2FS), true) @@ -405,7 +405,7 @@ LOCAL_REQUIRED_MODULES += init_second_stage.recovery reboot.recovery plat_servic include $(BUILD_PHONY_PACKAGE) # copy license file for OpenAES -ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS), true) +ifneq ($(TW_EXCLUDE_ENCRYPTED_BACKUPS),) include $(CLEAR_VARS) LOCAL_MODULE := openaes_license LOCAL_MODULE_TAGS := optional From 03989a88a646f623d6cd16cdb0b31faccd84f907 Mon Sep 17 00:00:00 2001 From: Aaron Kling Date: Mon, 18 Apr 2022 21:00:38 -0500 Subject: [PATCH 08/33] Fix copying sepolicy on devices without a vendor partition Current flow creates a vendor folder in the recovery ramdisk, then the build fails when the ramdisk rule tries to create a symlink there. Change-Id: I8bfb77d829c5dc6fcb2701cbfe44ce104058f37f --- prebuilt/Android.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk index 82849438..7a729189 100755 --- a/prebuilt/Android.mk +++ b/prebuilt/Android.mk @@ -392,11 +392,11 @@ LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT) LOCAL_POST_INSTALL_CMD += \ mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/sbin; ln -sf /system/bin/sh $(TARGET_RECOVERY_ROOT_OUT)/sbin/sh && \ mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/system/etc/selinux/ && \ - mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc/selinux/ && \ + mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/$(TARGET_COPY_OUT_VENDOR)/etc/selinux/ && \ cp $(TARGET_OUT_ETC)/selinux/plat_service_contexts $(TARGET_RECOVERY_ROOT_OUT)/system/etc/selinux/plat_service_contexts && \ cp $(TARGET_OUT_ETC)/selinux/plat_hwservice_contexts $(TARGET_RECOVERY_ROOT_OUT)/system/etc/selinux/plat_hwservice_contexts && \ - cp $(TARGET_OUT_VENDOR_ETC)/selinux/vndservice_contexts $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc/selinux/vndservice_contexts && \ - cp $(TARGET_OUT_VENDOR_ETC)/selinux/vendor_hwservice_contexts $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc/selinux/vendor_hwservice_contexts + cp $(TARGET_OUT_VENDOR_ETC)/selinux/vndservice_contexts $(TARGET_RECOVERY_ROOT_OUT)/$(TARGET_COPY_OUT_VENDOR)/etc/selinux/vndservice_contexts && \ + cp $(TARGET_OUT_VENDOR_ETC)/selinux/vendor_hwservice_contexts $(TARGET_RECOVERY_ROOT_OUT)/$(TARGET_COPY_OUT_VENDOR)/etc/selinux/vendor_hwservice_contexts ifeq ($(TARGET_USES_MKE2FS), true) LOCAL_POST_INSTALL_CMD += \ && cp $(TARGET_OUT_ETC)/mke2fs.conf $(TARGET_RECOVERY_ROOT_OUT)/system/etc/mke2fs.conf From 83e0b3327b91febf6b7443831be76c1785b112d4 Mon Sep 17 00:00:00 2001 From: Mohd Faraz Date: Sun, 5 Jun 2022 13:31:47 +0200 Subject: [PATCH 09/33] gui: Handle theme versioning in the specified package Signed-off-by: Mohd Faraz Change-Id: I40d727cd42c778a2c09a72043ce75c7c8b9cfacb --- Android.mk | 6 ------ gui/libguitwrp_defaults.go | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Android.mk b/Android.mk index f27ac4b8..c759b8b0 100755 --- a/Android.mk +++ b/Android.mk @@ -566,12 +566,6 @@ endif LOCAL_REQUIRED_MODULES += $(TWRP_REQUIRED_MODULES) -TW_THEME_VERSION := $(shell grep TW_THEME_VERSION bootable/recovery/variables.h | cut -d ' ' -f 3) - -LOCAL_POST_INSTALL_CMD += \ - sed -i "s/{themeversion}/$(TW_THEME_VERSION)/" $(TARGET_RECOVERY_ROOT_OUT)/twres/splash.xml; \ - sed -i "s/{themeversion}/$(TW_THEME_VERSION)/" $(TARGET_RECOVERY_ROOT_OUT)/twres/ui.xml; - include $(BUILD_EXECUTABLE) # Symlink for file_contexts diff --git a/gui/libguitwrp_defaults.go b/gui/libguitwrp_defaults.go index 4c64f50f..222564c7 100644 --- a/gui/libguitwrp_defaults.go +++ b/gui/libguitwrp_defaults.go @@ -4,6 +4,7 @@ import ( "android/soong/android" "android/soong/cc" "fmt" + "io/ioutil" "os" "path" "strconv" @@ -64,6 +65,31 @@ func copyThemeResources(ctx android.BaseContext, dirs []string, files []string) fileDest := twRes + path.Base(file) copyFile(fileToCopy, fileDest) } + data, err := ioutil.ReadFile(recoveryDir + "variables.h") + if err != nil { + fmt.Println(err) + return + } + version := "0" + for _, line := range strings.Split(string(data), "\n") { + if strings.Contains(line, "TW_THEME_VERSION") { + version = strings.Split(line, " ")[2] + } + } + _files := [2]string{"splash.xml", "ui.xml"} + for _, i := range _files { + data, err = ioutil.ReadFile(twRes + i) + if err != nil { + fmt.Println(err) + return + } + newFile := strings.Replace(string(data), "{themeversion}", version, -1) + err = ioutil.WriteFile(twRes + i, []byte(newFile), 0) + if err != nil { + fmt.Println(err) + return + } + } } func copyCustomTheme(ctx android.BaseContext, customTheme string) { From 608493c07c3a771563291a04b982a4c812b167ae Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Sat, 28 May 2022 20:55:20 -0400 Subject: [PATCH 10/33] Add python prebuilts to build Change-Id: I159b2b07962b89582f99af74e53585dc0bddcb63 (cherry picked from commit 1ef40fc330e88059ac6b53199ab0033c9ad380a8) --- Android.mk | 4 ++++ twrp-functions.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Android.mk b/Android.mk index c759b8b0..c17ddbe8 100755 --- a/Android.mk +++ b/Android.mk @@ -144,6 +144,7 @@ ifeq ($(TW_OEM_BUILD),true) TW_EXCLUDE_TZDATA := true TW_EXCLUDE_NANO := true TW_EXCLUDE_BASH := true + TW_EXCLUDE_PYTHON := true endif ifeq ($(AB_OTA_UPDATER),true) @@ -557,6 +558,9 @@ endif ifneq ($(TW_LOAD_VENDOR_MODULES),) TWRP_REQUIRED_MODULES += libmodprobe endif +ifneq ($(TW_EXCLUDE_PYTHON),true) + TWRP_REQUIRED_MODULES += python3_twrp +endif TWRP_REQUIRED_MODULES += file_contexts_text diff --git a/twrp-functions.cpp b/twrp-functions.cpp index 73399b3d..f4271958 100755 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -1550,7 +1550,7 @@ bool TWFunc::Check_Xml_Format(const std::string filename) { File.close(); // Android Binary Xml start from these bytes if(!buffer.compare(0, abx_hdr.size(), abx_hdr)) - return false; // bad format, not possible to parse + return false; // ABX format - requires conversion } return true; // good format, possible to parse } From 6d158641487477434426e1049922d05d6ee0aceb Mon Sep 17 00:00:00 2001 From: Edward Wu Date: Wed, 27 Apr 2022 00:21:48 +0800 Subject: [PATCH 11/33] extra-languages: zh_TW.xml: Update Chinese(Tranditional) Translations The word usage of the translation strings in the past are in the style of China rather than Taiwan. I'm Taiwanese, who works on Android and Translation projects. Signed-off-by: Edward Wu Change-Id: I48fc712e6dce16a56e8cfcff58554bfe5123779c (cherry picked from commit 2715033a420e5394b3ab36c311da0d849ad34d4a) --- gui/theme/extra-languages/languages/zh_TW.xml | 564 +++++++++--------- 1 file changed, 282 insertions(+), 282 deletions(-) diff --git a/gui/theme/extra-languages/languages/zh_TW.xml b/gui/theme/extra-languages/languages/zh_TW.xml index df120d49..05463d73 100644 --- a/gui/theme/extra-languages/languages/zh_TW.xml +++ b/gui/theme/extra-languages/languages/zh_TW.xml @@ -12,25 +12,25 @@ System - System 鏡像 + System 映像 Vendor - Vendor 鏡像 + Vendor 映像 Boot Recovery Cache Data - Data(不包含存儲) + Data(不包含儲存空間) SDCard - 內置存儲 + 內建儲存空間 SD 卡 - 外置 U 盤 + 外接式隨身碟 Android Secure Dalvik / ART Cache SD-EXT Adopted Data - Adopted 存儲 - 存儲 + 內部儲存(延伸)空間 + 儲存空間 Team Win Recovery Project @@ -43,12 +43,12 @@ 名稱 日期 大小 - 常規 + 一般 選項 備份 時區 螢幕 - 振動 + 震動 語言 安裝 @@ -56,41 +56,41 @@ 備份 恢復 掛載 - 設置 - 高級 - 重啟 + 設定 + 進階 + 重新啟動 檔案 - 導出日誌 + 匯出日誌 選擇類型 - 安裝 Zip 刷機包 + 安裝 ZIP 刷機包 安裝刷機包 - 刷入 Image 鏡像 - 刷入鏡像 + 刷入 Image 映像 + 刷入映像 選擇檔案 目錄 從 %tw_storage_display_name% (%tw_storage_free_size% MB) 中選擇檔案 ADB Sideload 安裝 - 存儲位置 - 存儲位置 + 儲存位置 + 儲存位置 佇列 已選 %tw_zip_queue_count% 個檔案(最多 10 個) 已選 %tw_zip_queue_count% 個,最多 10 個: - 此操作可能會刷入不相容的固件, - 致使您的設備變磚。 - 按返回按鈕取消添加此刷機包。 + 此操作可能會刷入不相容的韌體, + 導致您的設備變磚。 + 按返回按鈕取消增加此刷機包。 按返回按鈕清除刷機包刷入佇列。 目錄: 檔案: Zip 刷機包簽名校驗 安裝完成後注入 TWRP - 安裝完成後重啟 + 安裝完成後重新開機 選項 確認刷入 佇列: 選項: 確認 - 添加更多刷機包 + 增加更多刷機包 清除刷機佇列 正在刷入第 %tw_zip_index% 個,共 %tw_zip_queue_count% 個 正在安裝: %tw_file% @@ -100,12 +100,12 @@ 安裝成功 清除 Cache/Dalvik 清除 Dalvik - 重啟系統 - 選擇目標分區 - 選擇要刷入鏡像的分區: - 目標分區: - 正在刷入鏡像… - 鏡像已刷入。 + 重新開機至系統 + 選擇目標分割區 + 選擇要刷入映像的分割區: + 目標分割區: + 正在刷入映像… + 映像已刷入。 是否清除 Cache 和 Dalvik? 是否清除 Dalvik? 正在清除 Cache 和 Dalvik… @@ -114,66 +114,66 @@ 滑動滑塊確認清除 清除 沒有安裝任何系統! - 您確定要重啟? + 您確定要重新開機? 您確定要關機? - 正在重啟… - 滑動滑塊確認重啟 - 重啟 - 安裝 TWRP 應用? - 您希望安裝官方 TWRP 應用嗎? + 正在重新開機… + 滑動滑塊確認重新開機 + 重新開機 + 安裝 TWRP 應用程式? + 您希望安裝官方 TWRP 應用程式嗎? 該應用可幫您檢查 TWRP 的最新版本。 - 如果 TWRP 應用未安裝時提示我 - 安裝為系統應用 - 正在安裝應用… - 滑動滑塊確認安裝 - 卸載 TWRP 應用 - 確認卸載 TWRP 應用? - 正在卸載 TWRP 應用… - 卸載 TWRP 應用完成 - 滑動滑塊確認刷入 + 如果 TWRP 應用程式未安裝時提示我 + 安裝為系統應用程式 + 正在安裝應用程式… + 滑動滑塊以確認安裝 + 解除安裝 TWRP 應用程式 + 確認解除安裝 TWRP 應用程式? + 正在解除安裝 TWRP 應用程式… + 解除安裝 TWRP 應用程式完成 + 滑動滑塊以確認刷入 確認操作 按返回按鈕取消。 取消 清除 - 恢復出廠設置(雙清) + 恢復出廠設定(雙清) 恢復出廠 - 這將會清空 Data、Cache 分區和 Dalvik 緩存 - (不會清除內置存儲/sdcard) + 這將會清空 Data、Cache 分割區和 Dalvik 快取 + (不會清除內建儲存空間 /sdcard) 在大多數情況下,您只需要 執行此操作即可。 - (不包括用戶/鎖屏) - 正在恢復出廠設置… - 高級清除選項 - 高級清除 - 是否清除 Data 分區加密? - 正在格式化 Data 分區… + (不包括使用者/鎖定螢幕) + 正在恢復出廠設定… + 進階清除選項 + 進階清除 + 是否清除 Data 分割區加密? + 正在格式化 Data 分割區… 滑動滑塊確認格式化 - 格式化 Data 分區 + 格式化 Data 分割區 恢復出廠完成 - 選擇分區 - 是否清除所選的分區? - 正在清除分區… + 選擇分割區 + 是否清除所選的分割區? + 正在清除分割區… 清除完成 - 選擇要清除的分區: - 無效的分區 - 格式化 Data 分區 - 格式化 Data 分區 - 格式化 Data 分區將會清空您安裝的所有 - 軟體、備份、图片、媒體, - 以及對內置存儲所做的加密等。 - 也包括 Adopted 存儲 - 格式化 Data 分區將會清空您安裝的所有軟體、備份、圖片、媒體, - 以及對內置存儲所做的加密等。 - 格式化 Data 分區會清除您的所有軟體 - 備份和媒體數據,無法撤銷。 + 選擇要清除的分割區: + 無效的分割區 + 格式化 Data 分割區 + 格式化 Data 分割區 + 格式化 Data 分割區將會清空您安裝的所有 + 軟體、備份、圖片、媒體, + 以及對內建儲存空間所做的加密等。 + 也包括 內部儲存(延伸)空間 + 格式化 Data 分割區將會清空您安裝的所有軟體、備份、圖片、媒體, + 以及對內建儲存空間所做的加密等。 + 格式化 Data 分割區會清除您的所有軟體 + 備份和媒體數據,無法取消。 執行此操作後將無法恢復。 - 格式化 Data 分區完成 + 格式化 Data 分割區完成 輸入 yes 繼續,按返回按鈕取消。 - 分區名: %tw_partition_name% + 分割區名: %tw_partition_name% 選擇操作 檔案系統選項 - 分區: %tw_partition_name% + 分割區: %tw_partition_name% 掛載位置: %tw_partition_mount_point% 檔案系統: %tw_partition_file_system% 當前:是 @@ -182,7 +182,7 @@ 可移除:否 大小: %tw_partition_size%MB 已用: %tw_partition_used%MB - 空閒: %tw_partition_free%MB + 可用: %tw_partition_free%MB 備份大小: %tw_partition_backup_size%MB 調整檔案系統 調整 @@ -200,9 +200,9 @@ 修復 更改檔案系統 更改 - 要更改的分區: %tw_partition_name% - 分區: %tw_partition_name%>選擇檔案系統 - 一些固件或內核可能不支持 + 要更改的分割區: %tw_partition_name% + 分割區: %tw_partition_name%>選擇檔案系統 + 一些韌體或 Kernel 可能不支援 某些檔案系統,請謹慎! 是否更改 %tw_partition_name% 為: 正在格式化… @@ -213,19 +213,19 @@ 清除加密 滑動滑塊確認恢復出廠 修復或更改檔案系統 - 存儲位置: %tw_storage_display_name% (%tw_storage_free_size% MB) + 儲存位置: %tw_storage_display_name% (%tw_storage_free_size% MB) 備份 確認備份 加密 加密: 名稱: - 選擇要備份的分區: + 選擇要備份的分割區: 儲存位置: - 已禁用 - 設置密碼以啟用 + 已停用 - 設定密碼以啟用 已啟用 啟用壓縮 - 備份時跳過生成 Digest - 在備份之前禁用剩餘空間檢查 + 備份時跳過建立 Digest + 在備份之前停用剩餘空間檢查 當前槽位: %tw_active_slot% 槽位 A 槽位 B @@ -239,10 +239,10 @@ 請輸入密碼: 請再輸入一遍: 密碼不匹配! - 分區: - 已禁用 + 分割區: + 已停用 已啟用 - 設置備份名稱 + 設定備份名稱 進度: 備份完成 恢復 @@ -261,32 +261,32 @@ 加密的備份 - 嘗試解密 正在嘗試解密 備份於 %tw_restore_file_date% - 選擇要恢復的分區: + 選擇要恢復的分割區: 啟用 Digest 校驗備份檔案 恢復完成 滑動滑塊確認恢復 恢復 - 重命名備份 - 是否重命名備份檔案? + 重新命名備份 + 是否重新命名備份檔案? 此操作無法恢復! - 正在重命名… - 重命名完成 - 滑動滑塊確認重命名 - 重命名 + 正在重新命名… + 重新命名完成 + 滑動滑塊確認重新命名 + 重新命名 確認 掛載 - 選擇要掛載的分區: - 掛載 System 分區為只讀 + 選擇要掛載的分割區: + 掛載 System 分割區為只讀 掛載 System 為只讀 - 解密 Data 分區 + 解密 Data 分割區 啟用 MTP 模式 停用 MTP 模式 - 掛載 USB 存儲 - USB 存儲 - 已掛載 USB 存儲 - 請確認解除挂載前先從 + 掛載 USB 儲存空間 + USB 儲存空間 + 已掛載 USB 儲存空間 + 請確認解除掛載前先從 電腦上安全地移除設備! - 卸載 + 解除掛載 系統 關機 Recovery @@ -296,26 +296,26 @@ 正在關機… 滑動滑塊確認關機 關機 - 未修改的 System 分區 - 是否保持系統分區為只讀? - TWRP 可以保持系統分區未修改狀態 + 未修改的 System 分割區 + 是否保持系統分割區為只讀? + TWRP 可以保持系統分割區未修改狀態 使您更容易獲得官方的更新。 - TWRP 將無法禁止原廠固件可能 + TWRP 將無法禁止原廠韌體可能 替換 TWRP 並且不能 Root 您的設備。 安裝刷機包或者通過 adb 操作依然可以 - 修改系統分區。 - TWRP 可以保持系統分區為未修改狀態,使您更容易獲得官方的更新。 - TWRP 將無法禁止原廠固件替換 TWRP,並且不能 Root 您的設備。 - 安裝刷機包或者通過 adb 操作依然可以修改系統分區。 + 修改系統分割區。 + TWRP 可以保持系統分割區為未修改狀態,使您更容易獲得官方的更新。 + TWRP 將無法禁止原廠韌體替換 TWRP,並且不能 Root 您的設備。 + 安裝刷機包或者通過 adb 操作依然可以修改系統分割區。 下次啟動時不再顯示此介面 保持只讀 滑動滑塊允許修改 允許修改 - 設置 - 常規 - 常規 - 常規 - 使用 rm -rf 命令代替格式化 + 設定 + 一般 + 一般 + 一般 + 使用 rm -rf 指令代替格式化 使用 24 小時制 反轉底部按鈕佈局 為測試主題使用模擬操作 @@ -323,12 +323,12 @@ 導航欄按鈕居中 導航欄按鈕左對齊 導航欄按鈕右對齊 - 恢復默認設置 + 恢復預設設定 時區 螢幕 螢幕亮度 - 振動已在本設備上停用 - 振動 + 震動已在本設備上停用 + 震動 語言 時區 選擇時區: @@ -344,19 +344,19 @@ (UTC -4) 大西洋標準時間 (UTC -3) 巴西、阿根廷(布宜諾斯) (UTC -2) 大西洋中部 - (UTC -1) 葡萄牙(亞速爾群島),佛得角 + (UTC -1) 葡萄牙(亞速群島),維德角 (UTC 0) 倫敦、都柏林、里斯本 (UTC +1) 柏林、布魯塞爾、巴黎 - (UTC +2) 雅典、伊斯坦布爾、南非 + (UTC +2) 雅典、伊斯坦堡、南非 (UTC +3) 莫斯科、巴格達 - (UTC +4) 阿布扎比、第比利斯、馬斯喀特 - (UTC +5) 葉卡捷琳堡、伊斯蘭堡 + (UTC +4) 阿布達比、提比里西、馬斯喀特 + (UTC +5) 葉卡捷琳堡、伊斯蘭瑪巴德 (UTC +6) 阿拉木圖、達卡、可倫坡 (UTC +7) 曼谷、河內、雅加達 - (UTC +8) 北京、新加坡、香港 + (UTC +8) 台北、北京、新加坡、香港 (UTC +9) 東京、首爾、雅庫茨克 - (UTC +10) 澳大利亞東部、關島 - (UTC +11) 符拉迪沃斯托克、所羅門群島 + (UTC +10) 澳洲東部、關島 + (UTC +11) 符拉迪沃斯托克、索羅門群島 (UTC +12) 奧克蘭、惠靈頓、斐濟 時間偏差(通常為 0): %tw_time_zone_guioffset% @@ -367,35 +367,35 @@ 使用夏令時 (DST) 當前時區: %tw_time_zone% 當前時區: - 設置時區 + 設定時區 螢幕 螢幕超時 啟用螢幕超時 螢幕超時時間(秒): - 螢幕超時(0=禁用): %tw_screen_timeout_secs% - 螢幕超時設置不可用 + 螢幕超時(0=停用): %tw_screen_timeout_secs% + 螢幕超時設定不可用 螢幕亮度: %tw_brightness_pct%% - 螢幕亮度設置不可用 - 振動 - 按鈕振動 - 鍵盤振動 - 操作振動 - 按鈕振動強度: - 鍵盤振動強度: - 操作振動強度: + 螢幕亮度設定不可用 + 震動 + 按鈕震動 + 鍵盤震動 + 操作震動 + 按鈕震動強度: + 鍵盤震動強度: + 操作震動強度: 選擇語言: 選擇語言 - 設置語言 - 高級選項 - 是否導出日誌到內置存儲? + 設定語言 + 進階選項 + 是否匯出日誌到內建儲存空間? 正在複製… - 日誌導出完成 + 日誌匯出完成 修復 Context - 分區 SD 卡 + 分割區 SD 卡 SD 卡 檔案管理 語言 - 終端命令 + 終端指令 重載主題 HTC Dumlock 注入 TWRP @@ -403,28 +403,28 @@ 正在重新注入 TWRP… TWRP 注入完成 滑動滑塊確認 - SD 卡分區 + SD 卡分割區 您必須選擇一個可移動設備 - 您將會丟失 SD 卡上的所有檔案! + 您將會遺失 SD 卡上的所有檔案! 此操作無法恢復! EXT 大小: Swap 大小: - + 檔案系統: - 滑動滑塊確認分區 - 分區 - 正在對 SD 卡分區… + 滑動滑塊確認分割區 + 分割區 + 正在對 SD 卡分割區… 這將需要幾分鐘的時間。 - 分區完成 + 分割區完成 HTC Dumlock - 恢復原版 Boot 鏡像 - 是否恢復原版 Boot 鏡像? - 正在恢復原版 Boot 鏡像… - 恢復原版 Boot 鏡像完成。 + 恢復原廠 Boot 映像 + 是否恢復原廠 Boot 映像? + 正在恢復原廠 Boot 映像… + 恢復原廠 Boot 映像完成。 重新刷入 Recovery - 是否重新刷入 Recovery 至 Boot 分區? - 正在刷入 Recovery 至 Boot 分區… + 是否重新刷入 Recovery 至 Boot 分割區? + 正在刷入 Recovery 至 Boot 分割區… Recovery 刷入完成 安裝 HTC Dumlock 是否安裝 HTC Dumlock 檔案到系統中? @@ -449,27 +449,27 @@ chmod 刪除 正在刪除 - 重命名 - 重命名檔案 - 重命名檔案夾 - 正在重命名 + 重新命名 + 重新命名檔案 + 重新命名檔案夾 + 正在重新命名 選擇目標目錄 選擇當前目錄 - 重命名 - 設置許可權 + 重新命名 + 設定許可權 許可權: 操作完成 - 解密 Data 分區 + 解密 Data 分割區 請輸入密碼。 密碼錯誤,請重試! 圖案錯誤,請重試! 繪製解鎖圖案 正在嘗試解密 缺少解密 vold 所需的檔案: {1} - 終端命令 - 終端 + 終端機指令 + 終端機 終止 - 選擇運行目錄 + 選擇執行目錄 ADB Sideload 清除 Dalvik Cache 清除 Cache @@ -481,79 +481,79 @@ 修復 Context 注意:很少情況下需要修復 Context。 修復 SELinux Context 可能會導致 - 您的設備無法正常啓動。 + 您的設備無法正常啟動。 滑動滑塊確認修復 修復 Context 正在修復 Context… 修復 Context 完成 - 重啟選項 + 重新開機選項 不,以後再說 - 選擇存儲位置 + 選擇儲存位置 確定 安裝 Recovery Ramdisk - 安裝內核 - 安裝內核 + 安裝 Kernel + 安裝 Kernel 安裝 Recovery - 是否安裝內核? + 是否安裝 Kernel ? 是否安裝 Recovery? - 請先備份現有的鏡像 + 請先備份現有的映像 重新打包 滑動滑塊確認安裝 正在安裝… 安裝完成 - 解包鏡像錯誤。 - 重新打包鏡像錯誤。 + 解包映像錯誤。 + 重新打包映像錯誤。 正在解包 {1}… 正在打包 {1}… - 選擇鏡像 - 修復 Recovery 無限重啟 - 是否修復 Recovery 無限重啟? - 正在修復 Recovery 無限重啟… - Recovery 無限重啟修復完成 - 正在對內核打補丁… - 對內核打補丁時出錯。 - 解密用戶 - 選擇一位要解密的用戶 ID - 選擇用戶 - 備份不包含一些屬於用戶 {1} 的文件,因爲該用戶沒有解密 - 嘗試為用戶 {1} 解密 FBE… - 用戶 {1} 解密成功 - 用戶 {1} 解密失敗 - 請輸入用戶 [%tw_crypto_user_id%] 的密碼 - 請繪製用戶 [%tw_crypto_user_id%] 的解鎖圖案 - 并非所有用戶都被解密! + 選擇映像 + 修復 Recovery 無限重新開機 + 是否修復 Recovery 無限重新開機? + 正在修復 Recovery 無限重新開機… + Recovery 無限重新開機修復完成 + 正在對 Kernel 打補丁… + 對 Kernel 打補丁時出錯。 + 解密使用者 + 選擇一位要解密的使用者 ID + 選擇使用者 + 備份不包含一些屬於使用者 {1} 的文件,因為該使用者沒有解密 + 嘗試為使用者 {1} 解密 FBE… + 使用者 {1} 解密成功 + 使用者 {1} 解密失敗 + 請輸入使用者 [%tw_crypto_user_id%] 的密碼 + 請繪製使用者 [%tw_crypto_user_id%] 的解鎖圖案 + 並非所有使用者都被解密! 備份/還原操作可能會失敗! 仍然繼續 - 多用戶警告 + 多使用者警告 - 內核不支持讀取 SELinux Context。 - 完整 SELinux 支持。 - 無 SELinux 支持(無 libselinux)。 + Kernel 不支援讀取 SELinux Context。 + 完整 SELinux 支援。 + 無 SELinux 支援(無 libselinux)。 MTP 已啟用 - MTP 已崩潰。啟動時不再加載 MTP。 - 已使用默認密碼解密成功。 - 無法使用默認密碼來解密,您可能需要格式化 Data 分區。 - 正在生成 Digest + MTP 已崩潰。啟動時不再載入 MTP。 + 已使用預設密碼解密成功。 + 無法使用預設密碼來解密,您可能需要格式化 Data 分割區。 + 正在建立 Digest - * 正在生成 Digest… - * Digest 已生成。 + * 正在建立 Digest… + * Digest 已建立。 * Digest 錯誤! * 計算 Digest 錯誤。 (當前日期) - (自動生成) - 未找到“{1}”分區。 - 未選擇備份分區。 - * 備份分區總數: {1} + (自動建立) + 未找到“{1}”分割區。 + 未選擇備份分割區。 + * 備份分割區總數: {1} * 備份數據總計: {1}MB * 可用空間: {1}MB - 未找到存儲設備。 + 未找到儲存設備。 記憶體上沒有足夠的空間。 [已開始備份] * 備份檔案夾: {1} 建立備份檔案夾失敗。 檔案平均備份速度: {1}MB/秒 - 鏡像平均備份速度: {1}MB/秒 + 映像平均備份速度: {1}MB/秒 [總計備份 {1}MB] [備份已完成,耗時 {1} 秒] [已開始恢復] @@ -561,67 +561,67 @@ [{1} 恢復完成({2} 秒)] 正在校驗 Digest - 基於用戶設置,已跳過 Digest 檢查。 - 正在計算恢復詳情… + 基於使用者設定,已跳過 Digest 檢查。 + 正在計算恢復資訊… 無法恢復 {1} -- 已掛載為只讀。 - 未找到“{1}”分區。 - 未選擇要恢復的分區。 - 正在恢復 {1} 個分區… + 未找到“{1}”分割區。 + 未選擇要恢復的分割區。 + 正在恢復 {1} 個分割區… 恢復檔案總計 {1}MB 更新系統詳細資訊 [恢復完成,耗時 {1} 秒] 打開出錯:“{1}” ({2}) - 無法通過備份名稱來查找分區:“{1}” - 找不到分區路徑“{1}” - 正在更新分區詳情… + 無法透過備份名稱來尋找分割區:“{1}” + 找不到分割區路徑“{1}” + 正在更新分割區資訊… …完成 正在清除 Dalvik 目錄… 已清除:{1}… -- Dalvik Cache 目錄清除完成! -- Dalvik 目錄清除完成! - 未發現 android secure 分區。 + 未發現 android secure 分割區。 未找到 {1}。 - 清除內置存儲 -- /data/media… + 清除內建儲存空間 -- /data/media… 無法掛載 {1} - 無法掛載內置存儲 - 無法掛載存儲 + 無法掛載內建儲存空間 + 無法掛載儲存 解密數據失敗。 - 此版本不支持加密。 - Data 分區成功解密,新增塊設備:“{1}” - Data 分區已成功解密 + 此版本不支援加密。 + Data 分割區成功解密,新增塊設備:“{1}” + Data 分割區已成功解密 完成。 - 正在給 SD 卡分區… - 未找到需要分區的設備。 + 正在給 SD 卡分割區… + 未找到需要分割區的設備。 EXT+Swap 大小超過 SD 卡容量。 - 正在刪除分區表… - 無法刪除分區表。 - 正在創建 {1} 分區… - 無法創建 {1} 分區。 + 正在刪除分割區表… + 無法刪除分割區表。 + 正在建立 {1} 分割區… + 無法建立 {1} 分割區。 正在將 sd-ext 格式化為 {1}… - 分區完成。 + 分割區完成。 無法打開“{1}”。 MTP 已經啟用 啟用 MTP 失敗 - 不支持 MTP - [開始刷入鏡像] - 刷入鏡像:“{1}” - 未找到“{1}”分區。 - 未選擇刷入分區。 - 選擇刷入的分區太多。 - 指定的刷入分區無效。 - [鏡像刷入完成] + 不支援 MTP + [開始刷入映像] + 刷入映像:“{1}” + 未找到“{1}”分割區。 + 未選擇刷入分割區。 + 選擇刷入的分割區太多。 + 指定的刷入分割區無效。 + [映像刷入完成] 正在清除 {1} {1} 不存在!無法修復! 正在使用 {2} 修復 {1}… 無法修復 {1}。 無法掛載/data,未找到加密 footer。 - 無法創建“{1}”檔案夾 ({2})。 + 無法建立“{1}”檔案夾 ({2})。 掛載“{1}”失敗 ({2}) - 卸載“{1}”失敗 ({2}) + 解除掛載“{1}”失敗 ({2}) 無法更改 {1} 的大小。 在調整大小之前修復 {1}。 無法調整 {1} 的大小。 @@ -629,54 +629,54 @@ “{1}” Digest 校驗失敗。 Digest 匹配“{1}”。 無法解密 Tar 檔案“{1}” - 您可能需要重啟 Recovery 才能使用/data。 + 您可能需要重新開機 Recovery 才能使用/data。 無法格式化並刪除加密。 使用 {2} 格式化 {1}… 無法清除 {1}。 - 無法清除 {1} 分區。 + 無法清除 {1} 分割區。 移除“{1}”下的所有檔案 - 正在清除 Data 分区,跳過清除/data/media… + 正在清除 Data 分割區,跳過清除/data/media… 正在備份 {1}… - 備份的 {1} 分區不包含內置存儲上的任何檔案,例如照片或下載的檔案等等。 + 備份的 {1} 分割區不包含內建儲存空間上的任何檔案,例如照片或下載的檔案等等。 正在備份 “{1}”的備份檔案大小為 0 位元組。 - 警告:此/data備份檔案系統為 {1}!除非把檔案系統格式設置為 {1} 否則可能無法啟動。 + 警告:此/data備份檔案系統為 {1}!除非把檔案系統格式設定為 {1} 否則可能無法啟動。 正在恢復 {1}… 正在恢復 - 無法重新創建 {1} 檔案夾。 - 鏡像大小大於目標設備 + 無法重新建立 {1} 檔案夾。 + 映像大小大於目標設備 正在刷入 {1}… - 備份檔案夾設置為:“{1}” + 備份檔案夾設定為:“{1}” 未找到備份檔案“{1}” - 設置恢復選項:“{1}”: + 設定恢復選項:“{1}”: 跳過校驗 Digest 已開啟 無法使用 OpenRecoveryScript 腳本恢復加密備份。 正在掛載 - 正在卸載 + 正在解除掛載 “{1}”已掛載 - “{1}”已卸載 - 設置“{1}”為“{2}” - 設置“{1}”為空 - 創建目錄 - 創建目錄:“{1}” - 運行命令 + “{1}”已解除掛載 + 設定“{1}”為“{2}” + 設定“{1}”為空 + 建立目錄 + 建立目錄:“{1}” + 執行指令 ADB Sideload 正在開始 ADB sideload… 您需要 1.0.32 或更高版本的 adb 才可以使用。 未提供密碼。 腳本執行完畢 - 正在注入 TWRP 到 Boot 鏡像… + 正在注入 TWRP 到 Boot 映像… 安裝 Zip 刷機包“{1}”時出錯 正在安裝 Zip 刷機包“{1}” - 設置備份選項: + 設定備份選項: 壓縮選項已開啟 - Digest 生成已關閉 + Digest 建立已關閉 備份失敗 備份失敗。正在清理備份檔案夾。 - 運行 Recovery 命令 - Recovery 命令執行完成 - 運行 OpenRecoveryScript 腳本 - 運行 OpenRecoveryScript 腳本完成 + 執行 Recovery 指令 + Recovery 指令執行完成 + 執行 OpenRecoveryScript 腳本 + 執行 OpenRecoveryScript 腳本完成 正在檢測 Digest… Zip 檔案格式無效! 映射檔案“{1}”失敗 @@ -690,27 +690,27 @@ {1} 過程結束,標誌: {2} {1} 過程結束,錯誤: {2} 安裝 HTC Dumlock 到系統… - 正在恢復原版 Boot… + 正在恢復原廠 Boot… 正在重新刷入 Recovery 到 Boot… - 正在運行 {1} 腳本… - 重命名/system 下原版 Recovery 的補丁,避免原廠固件替換 TWRP。 - 分解備份檔案為多個壓縮檔… + 正在執行 {1} 腳本… + 重新命名/system 下原廠 Recovery 的補丁,避免原廠韌體替換 TWRP。 + 拆分備份檔案為多個壓縮檔… 建立備份失敗。 在恢復過程中發生錯誤。 - 拆分線程 ID {1} 到壓縮檔 {2} + 拆分執行緒 ID {1} 到壓縮檔 {2} 已完成 %llu 個,共 %llu 個檔案,進度 %i%% 已完成 %lluMB,共 %lluMB,進度 %i%% - 正在嘗試通過命令行解密 Data 分區或用戶數據。 - 無法加載基本包。 + 正在嘗試通過指令解密 Data 分割區或使用者數據。 + 無法載入基本包。 正在模擬操作… 備份已取消。 正在配置 TWRP… - 此內核無法配置 TWRP。 - 已經導出 Recovery 日誌到 {1}。 + 此 Kernel 無法配置 TWRP。 + 已經匯出 Recovery 日誌到 {1}。 已達到最大刷機包刷入佇列! 已達到最大刷機包刷入佇列! - 截圖已保存到:{1} + 截圖已儲存到:{1} 截圖失敗! 一個或多個刷機包請求清除 Cache -- 正在清除 Cache。 無法清除 android secure @@ -721,33 +721,33 @@ 備份名稱“{1}”中包含無效字元:“{1}” 此設備沒有真實的 SD 卡!正在中止! 取消 ADB Sideload… - 更換檔案系統时出錯。 - 自定義主題和 TWRP 版本不匹配,正使用默認主題。 + 更換檔案系統時出錯。 + 自訂主題和 TWRP 版本不匹配,正使用預設主題。 (上級目錄) - 將會在 %tw_sleep% 秒內重啟 + 將會在 %tw_sleep% 秒內重新開機 ADB 備份錯誤。正在退出…" 無法寫入 adb 控制通道 啟用 TWRP ADB 備份需使用 --twrp 選項 - 分區列表中未發現路徑: {1} - 已導出內核日誌至 {1} - 包含內核日誌 + 分割區列表中未發現路徑: {1} + 已匯出 Kernel 日誌至 {1} + 包含 Kernel 日誌 使用 SHA2 進行散列校驗 更改 Bootloader 啟動槽位至 {1} 錯誤 - 在安裝 Zip 刷機包之前先解除挂載 System - 正在解除挂載 System… - 解除挂載 System 失敗 + 在安裝 Zip 刷機包之前先解除掛載 System + 正在解除掛載 System… + 解除掛載 System 失敗 正在刷入 A/B Zip 刷機包至非活動槽位: {1} - 如需刷入其它的 Zip 刷機包,請重新啓動 Recovery 切換到新槽位。 + 如需刷入其它的 Zip 刷機包,請重新啟動 Recovery 切換到新槽位。 正在解密 Ozip… Ozip 解密完成! Fastboot - 啓用 ADB - 啓用 Fastboot + 啟用 ADB + 啟用 Fastboot 進入 Fastboot 模式… - Android 搶救模式已觸發!您可以嘗試下面的操作: + Android 救援模式已觸發!您可以嘗試下面的操作: 1. 清除 Cache; - 2. 格式化 Data 分區; + 2. 格式化 Data 分割區; 3. 重新刷入您的 ROM。 報告的問題為: From f4af5f1a3fe86de6afe4f2ee798c4a42a5abfd7d Mon Sep 17 00:00:00 2001 From: sekaiacg Date: Wed, 6 Jul 2022 11:19:45 +0800 Subject: [PATCH 12/33] backup_exclusions: exclude /data/extm folder from backup exclude this dir to prevent "error 255" on MIUI Change-Id: I7e31006617775d575cc1f37a0234369a345c372d (cherry picked from commit 05ca8766bff3e0cb22e1d69be56fa8d9f1d9ef19) --- partition.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/partition.cpp b/partition.cpp index f0406205..f767db68 100755 --- a/partition.cpp +++ b/partition.cpp @@ -1242,6 +1242,7 @@ void TWPartition::Setup_Data_Media() { backup_exclusions.add_absolute_dir("/data/vendor/dumpsys"); backup_exclusions.add_absolute_dir("/data/cache"); backup_exclusions.add_absolute_dir("/data/misc/apexdata/com.android.art"); // exclude this dir to prevent "error 255" on AOSP Android 12 + backup_exclusions.add_absolute_dir("/data/extm"); //exclude this dir to prevent "error 255" on MIUI wipe_exclusions.add_absolute_dir(Mount_Point + "/misc/vold"); // adopted storage keys ExcludeAll(Mount_Point + "/system/storage.xml"); } else { From 98ce0f179cc6af6461961e9e617e593fa47ab9cf Mon Sep 17 00:00:00 2001 From: sekaiacg Date: Fri, 24 Jun 2022 11:05:26 +0800 Subject: [PATCH 13/33] mtp: Allow transfer of files larger than 4G Change-Id: I1af0d1ad0f73f1d6adffcd9cbb2f0a526ea3b9d7 (cherry picked from commit 6ab807043fb6ea49b61d1257c514429948f10eb4) --- mtp/ffs/MtpServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtp/ffs/MtpServer.cpp b/mtp/ffs/MtpServer.cpp index 454da251..cacb45eb 100755 --- a/mtp/ffs/MtpServer.cpp +++ b/mtp/ffs/MtpServer.cpp @@ -981,7 +981,7 @@ MtpResponseCode MtpServer::doSendObjectInfo() { if (maxFileSize != 0) { // if mSendObjectFileSize is 0xFFFFFFFF, then all we know is the file size // is >= 0xFFFFFFFF - if (mSendObjectFileSize > maxFileSize || mSendObjectFileSize == 0xFFFFFFFF) + if (mSendObjectFileSize > maxFileSize) return MTP_RESPONSE_OBJECT_TOO_LARGE; } From 948f396cc5da2f8260cd414a71c4546771c7bec0 Mon Sep 17 00:00:00 2001 From: bigbiff Date: Mon, 18 Jul 2022 15:55:03 -0400 Subject: [PATCH 14/33] prebuilt: allow user to move binaries to /vendor/bin/hw in ramdisk Change-Id: Id6c17f2efcb1490d473311f3aa61ba3d652c6607 --- Android.mk | 1 + prebuilt/Android.mk | 14 ++++++++++++++ prebuilt/relink.sh | 1 + 3 files changed, 16 insertions(+) diff --git a/Android.mk b/Android.mk index c17ddbe8..4bc9ea2b 100755 --- a/Android.mk +++ b/Android.mk @@ -415,6 +415,7 @@ LOCAL_C_INCLUDES += system/vold \ TWRP_REQUIRED_MODULES += \ relink_libraries \ relink_binaries \ + relink_vendor_hw_binaries \ twrp_ramdisk \ bc \ dump_image \ diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk index 7a729189..bb7f89ab 100755 --- a/prebuilt/Android.mk +++ b/prebuilt/Android.mk @@ -275,6 +275,9 @@ endif ifneq ($(TW_RECOVERY_ADDITIONAL_RELINK_LIBRARY_FILES),) RECOVERY_LIBRARY_SOURCE_FILES += $(TW_RECOVERY_ADDITIONAL_RELINK_LIBRARY_FILES) endif +ifneq ($(TW_RECOVERY_ADDITIONAL_RELINK_VENDOR_HW_BINARY_FILES),) + RECOVERY_VENDOR_HW_BINARY_FILES += $(TW_RECOVERY_ADDITIONAL_RELINK_VENDOR_HW_BINARY_FILES) +endif ifneq ($(wildcard external/pcre/Android.mk),) RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libpcre.so endif @@ -383,6 +386,17 @@ TARGET_BINARY_RELINK_FILES := $(filter-out bu, $(notdir $(RECOVERY_BINARY_SOURCE LOCAL_REQUIRED_MODULES += $(TARGET_BINARY_RELINK_FILES) include $(BUILD_PHONY_PACKAGE) +include $(CLEAR_VARS) +LOCAL_MODULE := relink_vendor_hw_binaries +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := EXECUTABLES +LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/ +LOCAL_POST_INSTALL_CMD += $(RELINK) $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin/hw $(RECOVERY_VENDOR_HW_BINARY_FILES) +TARGET_VENDOR_BINARY_RELINK_FILES := $(notdir $(RECOVERY_VENDOR_HW_BINARY_FILES)) +LOCAL_REQUIRED_MODULES += $(TARGET_VENDOR_BINARY_RELINK_FILES) +$(warning vendor_hw: $(LOCAL_POST_INSTALL_CMD)) +include $(BUILD_PHONY_PACKAGE) + #build out TWRP ramdisk include $(CLEAR_VARS) LOCAL_MODULE := twrp_ramdisk diff --git a/prebuilt/relink.sh b/prebuilt/relink.sh index 063f445e..59171146 100755 --- a/prebuilt/relink.sh +++ b/prebuilt/relink.sh @@ -12,6 +12,7 @@ process_file() src=$2.tmp fi + mkdir -p $1 cp $src $dst if [[ -e $2.tmp ]]; then rm -f $2.tmp; fi } From a021ac28c727b67da8d7b3e526b68b22cb33c53a Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Fri, 29 Jul 2022 06:34:45 +0800 Subject: [PATCH 15/33] partition: Set default values for system_ext partition Change-Id: Iae69e2887926fc808f6e4b1110a7f562b99119f2 (cherry picked from commit 701e9abe26353f143287897942e367f8245c6f54) --- partition.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/partition.cpp b/partition.cpp index f767db68..9832cfed 100755 --- a/partition.cpp +++ b/partition.cpp @@ -472,6 +472,12 @@ bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, Can_Be_Wiped = false; Mount_Read_Only = true; Make_Dir(PartitionManager.Get_Android_Root_Path(), true); + } else if (Mount_Point == "/system_ext") { + Display_Name = "System_EXT"; + Backup_Name = "System_EXT"; + Backup_Display_Name = Display_Name; + Storage_Name = Display_Name; + Can_Be_Backed_Up = Wipe_Available_in_GUI = Is_Super ? false : true; } else if (Mount_Point == "/product") { Display_Name = "Product"; Backup_Name = "Product"; From bd2268aa017250d6495ea31ee5608cd3c444c809 Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Tue, 26 Jul 2022 01:06:36 +0800 Subject: [PATCH 16/33] partitionmanager: Don't force super volumes to read-only Note: This won't make super volumes default to read-write. It depends on fstab flags. Change-Id: I7b08e090e45d1ff58f571f5b4ea55dd24ac9249d (cherry picked from commit 47075559a7c878fa150abe7a48159d20e475f148) --- partitionmanager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/partitionmanager.cpp b/partitionmanager.cpp index b24beb3e..8043a075 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -3416,7 +3416,6 @@ bool TWPartitionManager::Prepare_Super_Volume(TWPartition* twrpPart) { twrpPart->Set_Block_Device(fstabEntry.blk_device); twrpPart->Update_Size(true); - twrpPart->Change_Mount_Read_Only(true); twrpPart->Set_Can_Be_Backed_Up(false); twrpPart->Set_Can_Be_Wiped(false); LOGINFO("Symlinking %s => /dev/block/bootdevice/by-name/%s \n", fstabEntry.blk_device.c_str(), bare_partition_name.c_str()); From f29cf9e84e40a906b779fc1529b9e61c1138c57a Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Thu, 28 Jul 2022 03:19:20 +0800 Subject: [PATCH 17/33] partitionmanager: Unlock every block partitions during setup For example, Super volumes are read-only by default. Change-Id: I0fc144842e42177d715c968bd1ee79e1406dae59 (cherry picked from commit d63fcaa879adc8f4be6ca2de3967e767c7542877) --- partitionmanager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 8043a075..eb7b6043 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -303,6 +303,8 @@ void TWPartitionManager::Setup_Fstab_Partitions(bool Display_Error) { Prepare_Super_Volume((*iter)); } + Unlock_Block_Partitions(); + //Setup Apex before decryption TWPartition* sys = PartitionManager.Find_Partition_By_Path(PartitionManager.Get_Android_Root_Path()); TWPartition* ven = PartitionManager.Find_Partition_By_Path("/vendor"); @@ -2834,8 +2836,6 @@ bool TWPartitionManager::Flash_Image(string& path, string& filename) { full_filename = path + "/" + filename; - Unlock_Block_Partitions(); - gui_msg("image_flash_start=[IMAGE FLASH STARTED]"); gui_msg(Msg("img_to_flash=Image to flash: '{1}'")(full_filename)); @@ -3550,7 +3550,7 @@ void TWPartitionManager::Unlock_Block_Partitions() { continue; } if (ioctl(fd, BLKROSET, &OFF) == -1) { - LOGERR("Unable to unlock %s for flashing: %s\n", block_device.c_str()); + LOGERR("Unable to unlock %s: %s\n", block_device.c_str()); continue; } close(fd); From 1e9626e798c5ad1abd98dafac6fa215bb1258f6a Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Thu, 28 Jul 2022 01:21:34 +0800 Subject: [PATCH 18/33] partition: Don't force system partitions to read-only Let's follow fstab flags. Change-Id: I9c8d8c9a998df242256e820065716558dc56b908 (cherry picked from commit c49e34af4721f637edb850acbe1e94fc1ac9edd5) --- partition.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/partition.cpp b/partition.cpp index 9832cfed..315a159a 100755 --- a/partition.cpp +++ b/partition.cpp @@ -470,7 +470,6 @@ bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, Wipe_Available_in_GUI = false; Can_Be_Backed_Up = false; Can_Be_Wiped = false; - Mount_Read_Only = true; Make_Dir(PartitionManager.Get_Android_Root_Path(), true); } else if (Mount_Point == "/system_ext") { Display_Name = "System_EXT"; @@ -484,14 +483,12 @@ bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, Backup_Display_Name = Display_Name; Storage_Name = Display_Name; Can_Be_Backed_Up = Wipe_Available_in_GUI = Is_Super ? false : true; - Mount_Read_Only = true; } else if (Mount_Point == "/odm") { Display_Name = "ODM"; Backup_Name = "ODM"; Backup_Display_Name = Display_Name; Storage_Name = Display_Name; Can_Be_Backed_Up = Wipe_Available_in_GUI = Is_Super ? false : true; - Mount_Read_Only = true; } else if (Mount_Point == "/data") { Display_Name = "Data"; Backup_Display_Name = Display_Name; @@ -538,7 +535,6 @@ bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, Display_Name = "Vendor"; Backup_Display_Name = Display_Name; Storage_Name = Display_Name; - Mount_Read_Only = true; } #ifdef TW_EXTERNAL_STORAGE_PATH if (Mount_Point == EXPAND(TW_EXTERNAL_STORAGE_PATH)) { From 322eb029ac7fb2ca5319b4c802a3ab6005d08042 Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Thu, 21 Jul 2022 14:25:53 +0800 Subject: [PATCH 19/33] gui: rapidxml: Bail out if detecting ABX header The parser is supposed to parse plain XMLs, ABX format is not yet supported. Continuing to parse ABX XMLs would be spamming /tmp/recovery.log until triggering OOM. Change-Id: I5c01045d6efef0b2ac497b40d78410c2b75d30d0 (cherry picked from commit 0a352091b39cb62f919af0fbed1097194d3188bf) --- gui/rapidxml.hpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gui/rapidxml.hpp b/gui/rapidxml.hpp index 33a88601..f47807d3 100644 --- a/gui/rapidxml.hpp +++ b/gui/rapidxml.hpp @@ -1390,7 +1390,15 @@ namespace rapidxml // Parse BOM, if any parse_bom(text); - + + // Abort if it's ABX format + if (text[0] == Ch('A') && + text[1] == Ch('B') && + text[2] == Ch('X')) { + RAPIDXML_PARSE_ERROR("ABX Format Unsupported by RapidXML", text); + return; + } + // Parse children while (1) { From 1f79000a71f203f508d64022c24f61c62a08a9c8 Mon Sep 17 00:00:00 2001 From: Captain Throwback Date: Wed, 3 Aug 2022 16:47:54 -0400 Subject: [PATCH 20/33] python: do not include by default Native solution for ABX xml conversion will be used, so python isn't necessary Use TW_INCLUDE_PYTHON := true to add to build if desired to use in TWRP Change-Id: Ibe5cbabb6c7260966d933218f08d24e96e0b8a63 (cherry picked from commit 73ab9725661bcaafed88b70f16da200cd599e7d3) --- Android.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Android.mk b/Android.mk index 4bc9ea2b..84dc6bec 100755 --- a/Android.mk +++ b/Android.mk @@ -144,7 +144,6 @@ ifeq ($(TW_OEM_BUILD),true) TW_EXCLUDE_TZDATA := true TW_EXCLUDE_NANO := true TW_EXCLUDE_BASH := true - TW_EXCLUDE_PYTHON := true endif ifeq ($(AB_OTA_UPDATER),true) @@ -559,7 +558,7 @@ endif ifneq ($(TW_LOAD_VENDOR_MODULES),) TWRP_REQUIRED_MODULES += libmodprobe endif -ifneq ($(TW_EXCLUDE_PYTHON),true) +ifeq ($(TW_INCLUDE_PYTHON),true) TWRP_REQUIRED_MODULES += python3_twrp endif From 808344f4eda06095d77ceca02315efc593c51f5f Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Thu, 28 Jul 2022 04:07:04 +0800 Subject: [PATCH 21/33] partitionmanager: Only create logical partition symlink when it doesn't exist Legacy devices might have symlinks to real partitions in this folder. Change-Id: I4d3360ff1022eabbd4f6ae7688d8bb7306ae9777 (cherry picked from commit 928234b2b704555073ab03eb6a051fa9c9fd2a86) --- partitionmanager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/partitionmanager.cpp b/partitionmanager.cpp index eb7b6043..743e9285 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -3418,8 +3418,10 @@ bool TWPartitionManager::Prepare_Super_Volume(TWPartition* twrpPart) { twrpPart->Update_Size(true); twrpPart->Set_Can_Be_Backed_Up(false); twrpPart->Set_Can_Be_Wiped(false); - LOGINFO("Symlinking %s => /dev/block/bootdevice/by-name/%s \n", fstabEntry.blk_device.c_str(), bare_partition_name.c_str()); - symlink(fstabEntry.blk_device.c_str(), ("/dev/block/bootdevice/by-name/" + bare_partition_name).c_str()); + if (access(("/dev/block/bootdevice/by-name/" + bare_partition_name).c_str(), F_OK) == -1) { + LOGINFO("Symlinking %s => /dev/block/bootdevice/by-name/%s \n", fstabEntry.blk_device.c_str(), bare_partition_name.c_str()); + symlink(fstabEntry.blk_device.c_str(), ("/dev/block/bootdevice/by-name/" + bare_partition_name).c_str()); + } return true; } From 09badaed48e57c3fadc63922b77e5087666a54c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yilli=C3=A9?= Date: Mon, 11 Jul 2022 14:30:26 +0500 Subject: [PATCH 22/33] gui : Add an option to specify a custom x-axis value for status bar items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The var TW_CUSTOM_CLOCK_POS, TW_CUSTOM_CPU_POS and TW_CUSTOM_BATTERY_POS can be used to specify a custom position for the clock, cpu temperature and battery percentage on the x-axis. - The value can either be a whole number refering to the starting position of that specific item on the x-axis or it can be 'left', 'right' or 'center' which will try to automatically calculate such a value that items appear to be left , right or center aligned respectively. - Incase of TW_NO_CPU_TEMP being set to true, the CPU_POS var can be used for the TWRP version text that takes the place of the cpu temp. One of the use-cases of this var is when the status bar items overlap with the camera cutout. In that case, instead of specifiying an offset for the whole gui on y-axis, the status bar items can be offset along the x-axis only. Signed-off-by: Yillié Change-Id: Ic01d301731822a598b0ca8adb2280c4d01a3622f Signed-off-by: Mohd Faraz --- gui/libguitwrp_defaults.go | 73 +++++++++++++++++++++++++++++++++ gui/theme/landscape_hdpi/ui.xml | 57 +++++++++++++++++++++++++ gui/theme/landscape_mdpi/ui.xml | 57 +++++++++++++++++++++++++ gui/theme/portrait_hdpi/ui.xml | 57 +++++++++++++++++++++++++ gui/theme/portrait_mdpi/ui.xml | 57 +++++++++++++++++++++++++ gui/theme/watch_mdpi/ui.xml | 57 +++++++++++++++++++++++++ 6 files changed, 358 insertions(+) diff --git a/gui/libguitwrp_defaults.go b/gui/libguitwrp_defaults.go index 222564c7..4ba6491f 100644 --- a/gui/libguitwrp_defaults.go +++ b/gui/libguitwrp_defaults.go @@ -76,14 +76,87 @@ func copyThemeResources(ctx android.BaseContext, dirs []string, files []string) version = strings.Split(line, " ")[2] } } + + _props := [3]string{"TW_CUSTOM_BATTERY_POS", "TW_CUSTOM_CPU_POS", "TW_CUSTOM_CLOCK_POS" } + props := [3]string{"0", "0", "0"} + for i, item := range _props { + if getMakeVars(ctx, item) != "" { + props[i] = strings.Trim(getMakeVars(ctx, item), "\"") + } + } + _files := [2]string{"splash.xml", "ui.xml"} for _, i := range _files { + var fontsize int = 0 + var width int = 0 + data, err = ioutil.ReadFile(twRes + i) if err != nil { fmt.Println(err) return } + newFile := strings.Replace(string(data), "{themeversion}", version, -1) + + // Custom position for status bar items - start + if i == "ui.xml" { + + for _, line := range strings.Split(string(data), "\n") { + if strings.Contains(line, "name=\"font_m\"") { + fontsize, err = strconv.Atoi(strings.Split(line, "\"")[5]) + if err != nil { + fmt.Println(err) + return + } + } + if strings.Contains(line, "resolution") { + width, err = strconv.Atoi(strings.Split(line, "\"")[1]) + if err != nil { + fmt.Println(err) + return + } + } + } + + var cpusize int = (fontsize * 5) + (width/100) + var clocksize int = (fontsize * 4) + (width/100) + var batterysize int = (fontsize * 6) - (width/100) + var pos_clock_24 string = props[2] + for j := 0; j < len(props); j++ { + if props[j] == "left" { + props[j] = strconv.Itoa(width/50) + if _props[j] == "TW_CUSTOM_CLOCK_POS" { + pos_clock_24 = props[j] + } + } else if props[j] == "center" { + if _props[j] == "TW_CUSTOM_BATTERY_POS" { + props[j] = strconv.Itoa( (width/2) - (batterysize*43/100) ) + } else if _props[j] == "TW_CUSTOM_CLOCK_POS" { + pos := (width/2) - (clocksize*45/100) + props[j] = strconv.Itoa(pos) + pos_clock_24 = strconv.Itoa( pos * 31/30 ) + } else if _props[j] == "TW_CUSTOM_CPU_POS" { + props[j] = strconv.Itoa( (width/2) - (cpusize*41/100) ) + } + } else if props[j] == "right" { + if _props[j] == "TW_CUSTOM_BATTERY_POS" { + props[j] = strconv.Itoa( width - batterysize ) + } else if _props[j] == "TW_CUSTOM_CLOCK_POS" { + props[j] = strconv.Itoa(width - clocksize) + pos_clock_24 = props[j] + } else if _props[j] == "TW_CUSTOM_CPU_POS" { + props[j] = strconv.Itoa( width - cpusize ) + } + } + } + + newFile = strings.Replace(newFile, "{battery_pos}", props[0], -1) + newFile = strings.Replace(newFile, "{cpu_pos}", props[1], -1) + newFile = strings.Replace(newFile, "{clock_12_pos}", props[2], -1) + newFile = strings.Replace(newFile, "{clock_24_pos}", pos_clock_24, -1) + } + // Custom position for status bar items - end + err = ioutil.WriteFile(twRes + i, []byte(newFile), 0) if err != nil { fmt.Println(err) diff --git a/gui/theme/landscape_hdpi/ui.xml b/gui/theme/landscape_hdpi/ui.xml index bd055bd5..5f29e096 100755 --- a/gui/theme/landscape_hdpi/ui.xml +++ b/gui/theme/landscape_hdpi/ui.xml @@ -226,6 +226,10 @@ + + + + @@ -267,6 +271,7 @@ + %tw_version% @@ -274,12 +279,15 @@ + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + %tw_time% @@ -290,12 +298,61 @@ + {@battery_pct=Battery: %tw_battery%} + + + + + + + + %tw_version% + + + + + + + + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + + + + + + + %tw_time% + + + + + + + + %tw_time% + + + + + + + + + + + + {@battery_pct=Battery: %tw_battery%} + + + + diff --git a/gui/theme/landscape_mdpi/ui.xml b/gui/theme/landscape_mdpi/ui.xml index 9ab8863d..e6c58b25 100755 --- a/gui/theme/landscape_mdpi/ui.xml +++ b/gui/theme/landscape_mdpi/ui.xml @@ -226,6 +226,10 @@ + + + + @@ -267,6 +271,7 @@ + %tw_version% @@ -274,12 +279,15 @@ + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + %tw_time% @@ -290,12 +298,61 @@ + {@battery_pct=Battery: %tw_battery%} + + + + + + + + %tw_version% + + + + + + + + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + + + + + + + %tw_time% + + + + + + + + %tw_time% + + + + + + + + + + + + {@battery_pct=Battery: %tw_battery%} + + + + diff --git a/gui/theme/portrait_hdpi/ui.xml b/gui/theme/portrait_hdpi/ui.xml index f7d21da3..7c4d2aa0 100755 --- a/gui/theme/portrait_hdpi/ui.xml +++ b/gui/theme/portrait_hdpi/ui.xml @@ -223,6 +223,10 @@ + + + + @@ -264,6 +268,7 @@ + %tw_version% @@ -271,12 +276,15 @@ + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + %tw_time% @@ -287,12 +295,61 @@ + {@battery_pct=Battery: %tw_battery%} + + + + + + + + %tw_version% + + + + + + + + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + + + + + + + %tw_time% + + + + + + + + %tw_time% + + + + + + + + + + + + {@battery_pct=Battery: %tw_battery%} + + + + diff --git a/gui/theme/portrait_mdpi/ui.xml b/gui/theme/portrait_mdpi/ui.xml index 9189df0c..4566dc7d 100755 --- a/gui/theme/portrait_mdpi/ui.xml +++ b/gui/theme/portrait_mdpi/ui.xml @@ -223,6 +223,10 @@ + + + + @@ -264,6 +268,7 @@ + %tw_version% @@ -271,12 +276,15 @@ + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + %tw_time% @@ -287,12 +295,61 @@ + {@battery_pct=Battery: %tw_battery%} + + + + + + + + %tw_version% + + + + + + + + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + + + + + + + %tw_time% + + + + + + + + %tw_time% + + + + + + + + + + + + {@battery_pct=Battery: %tw_battery%} + + + + diff --git a/gui/theme/watch_mdpi/ui.xml b/gui/theme/watch_mdpi/ui.xml index ed7ac825..24a4d466 100644 --- a/gui/theme/watch_mdpi/ui.xml +++ b/gui/theme/watch_mdpi/ui.xml @@ -182,6 +182,10 @@ + + + + @@ -203,6 +207,7 @@ + {@twrp_watch_header=TWRP %tw_version%} @@ -210,12 +215,15 @@ + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + %tw_time% @@ -226,12 +234,61 @@ + {@battery_pct=Battery: %tw_battery%} + + + + + + + + {@twrp_watch_header=TWRP %tw_version%} + + + + + + + + {@cpu_temp=CPU: %tw_cpu_temp% °C} + + + + + + + + %tw_time% + + + + + + + + %tw_time% + + + + + + + + + + + + {@battery_pct=Battery: %tw_battery%} + + + + From fcbaf814f3d46e21ac7ffa77f4883228468c1d2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yilli=C3=A9?= Date: Mon, 11 Jul 2022 14:30:43 +0500 Subject: [PATCH 23/33] gui : Allow changing vertical alignment of status bar icons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - If the var TW_STATUS_ICONS_ALIGN can be set to: 1) 'center' or '2' to center-align the icons/text (vertically) 2) 'bottom' or '3' to bottom-align the icons/text (vertically) ( Value calculated by utilizing statusbar height & size of font_m ). - If set to anything else or not set at all, it falls back to twrp's old behaviour of top-aligning the status bar icons. Change-Id: I1b292221f3c34bbac20233595fbc0958d4aa4cc1 Signed-off-by: Yillié Signed-off-by: Mohd Faraz --- gui/libguitwrp_defaults.go | 7 +++++++ gui/theme/landscape_hdpi/ui.xml | 5 ++++- gui/theme/landscape_mdpi/ui.xml | 5 ++++- gui/theme/portrait_hdpi/ui.xml | 5 ++++- gui/theme/portrait_mdpi/ui.xml | 5 ++++- gui/theme/watch_mdpi/ui.xml | 5 ++++- 6 files changed, 27 insertions(+), 5 deletions(-) diff --git a/gui/libguitwrp_defaults.go b/gui/libguitwrp_defaults.go index 4ba6491f..290be250 100644 --- a/gui/libguitwrp_defaults.go +++ b/gui/libguitwrp_defaults.go @@ -150,10 +150,17 @@ func copyThemeResources(ctx android.BaseContext, dirs []string, files []string) } } + alignProp := "%status_topalign_header_y%" + if strings.Trim(getMakeVars(ctx, "TW_STATUS_ICONS_ALIGN"), "\"") == "center" || strings.Trim(getMakeVars(ctx, "TW_STATUS_ICONS_ALIGN"), "\"") == "2" { + alignProp = "%status_centeralign_header_y%" + } else if strings.Trim(getMakeVars(ctx, "TW_STATUS_ICONS_ALIGN"), "\"") == "bottom" || strings.Trim(getMakeVars(ctx, "TW_STATUS_ICONS_ALIGN"), "\"") == "3" { + alignProp = "%status_bottomalign_header_y%" + } newFile = strings.Replace(newFile, "{battery_pos}", props[0], -1) newFile = strings.Replace(newFile, "{cpu_pos}", props[1], -1) newFile = strings.Replace(newFile, "{clock_12_pos}", props[2], -1) newFile = strings.Replace(newFile, "{clock_24_pos}", pos_clock_24, -1) + newFile = strings.Replace(newFile, "{statusicons_align}", alignProp, -1) } // Custom position for status bar items - end diff --git a/gui/theme/landscape_hdpi/ui.xml b/gui/theme/landscape_hdpi/ui.xml index 5f29e096..a71387f3 100755 --- a/gui/theme/landscape_hdpi/ui.xml +++ b/gui/theme/landscape_hdpi/ui.xml @@ -119,7 +119,10 @@ - + + + + diff --git a/gui/theme/landscape_mdpi/ui.xml b/gui/theme/landscape_mdpi/ui.xml index e6c58b25..dadfbb9f 100755 --- a/gui/theme/landscape_mdpi/ui.xml +++ b/gui/theme/landscape_mdpi/ui.xml @@ -119,7 +119,10 @@ - + + + + diff --git a/gui/theme/portrait_hdpi/ui.xml b/gui/theme/portrait_hdpi/ui.xml index 7c4d2aa0..104c3f66 100755 --- a/gui/theme/portrait_hdpi/ui.xml +++ b/gui/theme/portrait_hdpi/ui.xml @@ -113,7 +113,10 @@ - + + + + diff --git a/gui/theme/portrait_mdpi/ui.xml b/gui/theme/portrait_mdpi/ui.xml index 4566dc7d..d81a9a9a 100755 --- a/gui/theme/portrait_mdpi/ui.xml +++ b/gui/theme/portrait_mdpi/ui.xml @@ -113,7 +113,10 @@ - + + + + diff --git a/gui/theme/watch_mdpi/ui.xml b/gui/theme/watch_mdpi/ui.xml index 24a4d466..83966396 100644 --- a/gui/theme/watch_mdpi/ui.xml +++ b/gui/theme/watch_mdpi/ui.xml @@ -96,7 +96,10 @@ - + + + + From 8c5088d5fc2f5a8bbc0a0735e5c0368800ab324f Mon Sep 17 00:00:00 2001 From: Darth9 Date: Tue, 9 Aug 2022 12:54:40 +0100 Subject: [PATCH 24/33] backup: support exclusion of user-defined directories from backups Example: TW_BACKUP_EXCLUSIONS := /data/fonts,/data/blah,/data/geewhiz Change-Id: I99e690eb0879281b1149e60ff430b6b3e7dd93c2 (cherry picked from commit cc683e7a3deefb96ece49b07bf88648087a7ccaf) --- Android.mk | 3 +++ partition.cpp | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/Android.mk b/Android.mk index 84dc6bec..0d2708d4 100755 --- a/Android.mk +++ b/Android.mk @@ -408,6 +408,9 @@ endif ifneq ($(TARGET_OTA_ASSERT_DEVICE),) LOCAL_CFLAGS += -DTARGET_OTA_ASSERT_DEVICE='"$(TARGET_OTA_ASSERT_DEVICE)"' endif +ifneq ($(TW_BACKUP_EXCLUSIONS),) + LOCAL_CFLAGS += -DTW_BACKUP_EXCLUSIONS='"$(TW_BACKUP_EXCLUSIONS)"' +endif LOCAL_C_INCLUDES += system/vold \ diff --git a/partition.cpp b/partition.cpp index 315a159a..4854fbee 100755 --- a/partition.cpp +++ b/partition.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include "cutils/properties.h" @@ -1247,6 +1248,19 @@ void TWPartition::Setup_Data_Media() { backup_exclusions.add_absolute_dir("/data/extm"); //exclude this dir to prevent "error 255" on MIUI wipe_exclusions.add_absolute_dir(Mount_Point + "/misc/vold"); // adopted storage keys ExcludeAll(Mount_Point + "/system/storage.xml"); + + // board-customisable exclusions + #ifdef TW_BACKUP_EXCLUSIONS + std::vector user_extra_exclusions = TWFunc::Split_String(TW_BACKUP_EXCLUSIONS, ","); + std::string s1; + for (const std::string& extra_x : user_extra_exclusions) { + s1 = android::base::Trim(extra_x); + if (!s1.empty()) { + backup_exclusions.add_absolute_dir(s1); + LOGINFO("Adding user-defined path '%s' to the backup exclusions\n", s1.c_str()); + } + } + #endif } else { int i; string path; From 22ad8ac54d4edada7735764c5e69e883e695486c Mon Sep 17 00:00:00 2001 From: kacskrz Date: Fri, 19 Aug 2022 09:10:04 +0200 Subject: [PATCH 25/33] Update Polish translation Change-Id: Id38f86ff7be92d5ca61a5f2e7bdf2a299e53d305 --- gui/theme/common/languages/pl.xml | 143 ++++++++++++++++++++++++++++-- 1 file changed, 137 insertions(+), 6 deletions(-) diff --git a/gui/theme/common/languages/pl.xml b/gui/theme/common/languages/pl.xml index 697a7c41..469b0372 100644 --- a/gui/theme/common/languages/pl.xml +++ b/gui/theme/common/languages/pl.xml @@ -19,6 +19,7 @@ Recovery Cache Data + Data (bez pamięci wewn.) Karta SD Pamięć Wewnętrzna Karta Micro SD @@ -29,6 +30,7 @@ SD-EXT Adopted Data Adopted Storage + Pamięć Projekt Team Win Recovery @@ -97,6 +99,7 @@ Instalacja nieudana Instalacja zakończona pomyślnie Wyczyść Cache/Dalvik + Wyczyść Dalvik Uruchom System Wybierz partycję docelową Wybierz partycję do zainstalowania obrazu: @@ -104,8 +107,10 @@ Instalowanie obrazu... Obraz zainstalowany Wyczyścić Cache & Dalvik? + Wyczyścić Dalvik? Czyszczenie Cache & Dalvik... Czyszczenie Cache & Dalvik zakończone + Czyszczenie Dalvik zakończone Przesuń, aby wyczyścić Wyczyść Brak zainstalowanego systemu! Jesteś @@ -114,6 +119,17 @@ Restartowanie... Przesuń, aby zrestartować Zrestartuj + Zainstaluj aplikację TWRP + Czy chcesz zainstalować oficjalną aplikację TWRP? + Aplikacja może sprawdzać dostępność nowych wydań TWRP. + Informuj o możliwości instalacji aplikacji TWRP, jeśli jej nie zainstalowano + Zainstaluj jako systemową + Instalowanie aplikacji... + Przesuń, aby zainstalować aplikację TWRP + Odinstaluj aplikację TWRP z systemu + Odinstalować aplikację TWRP z systemu? + Dezinstalacja aplikacji TWRP z systemu... + Dezinstalacja aplikacji TWRP ukończona Przesuń, aby zainstalować Potwierdź czynność Naciśnij wstecz, aby anulować. @@ -125,6 +141,7 @@ (nie czyści pamięci wewnętrznej) W większości przypadków jest to jedyne czyszczenie jakiego potrzebujesz. + (nie czyści użytkowników/ekranu blokady) Przywracanie ustawień fabrycznych... Zaawansowane czyszczenie Zaaw. czyszczenie @@ -208,7 +225,13 @@ włączone Włącz kompresję Pomiń generowanie Digest kopii zapasowej - Wyłącz sprawdzanie wolnego miejsca + Wyłącz sprawdzanie wolnego miejsca + Pomiń sprawdzanie Digest przed instalacją pliku zip + Obecny slot: %tw_active_slot% + Slot A + Slot B + Zmiana slotu uruchamiania + Zmiana slotu uruchamiania ukończona Odśwież rozmiary Przesuń, aby wykonać kopię Dodaj datę @@ -294,6 +317,7 @@ Główne Główne Używaj rm -rf zamiast formatowania + Automatycznie wgrywaj TWRP po wgraniu ROM-u Użyj 24-godzinnego zegara Odwrócony układ paska nawigacji Symuluj akcje do testowania motywów @@ -305,6 +329,7 @@ Strefa czasowa Ekran Jasność ekranu + Wibracje są wyłączone na tym urządzeniu Wibracje Język Strefa czasowa @@ -365,8 +390,8 @@ Wybierz język Zaawansowane Skopiować log na kartę SD? - Kopiowanie pliku log na kartę SD... - Kopiowanie pliku log zakończone + Kopiowanie pliku log na kartę SD... + Kopiowanie pliku log zakończone Uprawnienia Partycjonowanie Karta SD @@ -436,12 +461,15 @@ Ustaw uprawnienia Uprawnienia: Działanie na plikach zakończone + Otwórz tu terminal + Edytuj plik Deszyfrowanie danych Wprowadź hasło. Hasło nieprawidłowe, spróbuj ponownie! Wzór nieprawidłowy, spróbuj ponownie! Wprowadź wzór. Próbuję rozszyfrować + Brakuje plików niezbędnych do zdeszyfrowania vold: {1} Polecenia Terminala Terminal ZABIJ @@ -466,6 +494,48 @@ Nie instaluj Wybierz pamięć OK + Instaluj Ramdisk Recovery + Instaluj Kernel + Instalacja Kernel + Instalacja Recovery + Zainstalować Kernel? + Zainstalować Recovery? + Najpierw wykonaj kopię obecnego obrazu + Przepakuj + Przesuń, aby zainstalować + Instalacja... + Instalacja ukończona + Błąd przy rozpakowywaniu obrazu. + Błąd przy przepakowywaniu obrazu. + pliki ramdisku zostały zmodyfikowane, nie można utworzyć ramdisku do wgrania, uruchom twrp w trybie fastboot i ponów tę operację lub użyj opcji Instaluj Ramdisk Recovery. + nie udało się utworzyć ramdisku do wgrania. + Rozpakowywanie {1}... + Przepakowywanie {1}... + Wybierz obraz + Jeśli urządzenie zostało przedtem zrootowane, root zniknie i trzeba będzie zainstalować go ponownie. + Wgraj Obecne TWRP + Wgrać obecne TWRP? + Wgrywanie TWRP... + Ukończono wgrywanie TWRP + Napraw Bootloop Recovery + Naprawić bootloop recovery? + Naprawianie bootloopa Recovery... + Ukończono naprawianie bootloopa Recovery + Patchowanie kernela... + Błąd przy patchowaniu kernela. + Deszyfruj użytkowników + Wybierz ID użytkownika do zdeszyfrowania + Wybierz użytkownika + Kopia zapasowa nie będzie zawierać pewnych plików użytkownika {1}, ponieważ nie jest on odszyfrowany. + Próba zdeszyfrowania FBE dla użytkownika {1}... + Pomyślnie zdeszyfrowano użytkownika {1} + Nie udało się zdeszyfrować użytkownika {1} + Wprowadź hasło dla użytkownika [%tw_crypto_user_id%] + Wprowadź wzór dla użytkownika [%tw_crypto_user_id%] + Nie wszyscy użytkownicy są zdeszyfrowani! + Operacje tworzenia kopii zapasowej lub jej przywrócenia mogą się nie powieść! + Kontynuuj mimo to + Ostrzeżenie dot. wielu użytkowników Kernel nie posiada obsługi odczytu uprawnień SELinux. @@ -519,6 +589,7 @@ ...ukończono Czyszczenie katalogów Dalvik Cache... Wyczyszczono: {1}... + -- Czyszczenie katalogów Dalvik Cache zakończone! -- Czyszczenie Dalvik Cache zakończone! Nie znaleziono partycji android_secure. Nie można zlokalizować {1}. @@ -529,6 +600,7 @@ Niepowodzenie rozszyfrowywania danych. Brak obsługi crypto w tej kompilacji. Dane pomyślnie rozszyfrowane, nowe urządzenie blokowe: '{1}' + Dane pomyślnie rozszyfrowane Ukończono. Partycjonowanie Karty SD... Nie można zlokalizować urządzenia do partycjonowania. @@ -568,7 +640,7 @@ Digest nie pasuje do '{1}'. Digest matched for '{1}'. Nie udało się odszyfrować pliku tar '{1}' - Może być konieczne ponowne uruchomienie recovery, aby móc ponownie użyć /date. + Może być konieczne ponowne uruchomienie recovery, aby móc ponownie użyć /data. Nie można sformatować, aby usunąć szyfrowanie. Formatowanie {1} przy użyciu {2}... Nie można wyczyścić {1}. @@ -576,6 +648,7 @@ Usuwanie wszystkich plików w '{1}' Czyszczenie Data bez /data/media ... Tworzenie kopii zapasowej {1}... + Kopie zapasowe {1} nie zawierają plików z pamięci wewnętrznej, takich jak zdjęcia czy pobrane elementy. Tworzenie kopii zapasowej Rozmiar kopii zapasowej '{1}' to 0 bajtów. UWAGA: Ta kopia /data została wykonana w sytemie plików {1}! Kopia może się nie uruchomić jeśli nie wrócisz do {1}. @@ -617,6 +690,7 @@ Ukończono Skrypt OpenRecovery Nie można znaleźć '{1}' w pliku zip. Sprawdzanie pliku Digest... + Nieprawidłowy format pliku zip! Nieudane mapowanie pliku '{1}' Weryfikowanie sygnatury pliku zip... Niewłaściwa sygnatura pliku zip! @@ -639,7 +713,7 @@ %llu z %llu plików, %i%% %lluMB z %lluMB, %i%% - Próba odszyfrowania partycji danych poprzez linię poleceń. + Próba odszyfrowania partycji danych poprzez linię poleceń. Nie udało się załadować pakietów podstawowych. Symulowanie działań... Anulowano wykonywanie kopii zapasowej @@ -662,6 +736,63 @@ Niepowodzenie zmiany systemu plików. Wersja niestandardowego motywu nie zgadza się z wersją TWRP. Użyto domyślnego motywu. (Cofnij) - Ponowne uruchomienie za 5 sekund + Ponowne uruchomienie za %tw_sleep% sekund + Błąd z ADB Backup. Kończenie..." + Nie można zapisać do kanału kontroli adb + parametr --twrp jest wymagany, aby włączyć kopię zapasową adb twrp + ścieżka: {1} nieznaleziona na liście partycji + Skopiowano log kernela do {1} + Skopiowano logcat do {1} + Skopiuj log kernela + Skopiuj logcat + Użyj SHA2 do haszowania + Błąd przy zmienianiu slotu bootowania bootloadera na {1} + Odmontuj /system przed instalacją pliku ZIP + Odmontowywanie /system... + Błąd przy odmontowywaniu /system + Wgrywanie pliku zip A/B do nieaktywnego slotu: {1} + Aby wgrać dodatkowe pliki zip, uruchom ponownie recovery w celu przejścia na zaktualizowany slot. + Wgraj na oba sloty + Rozpoczynanie deszyfrowania Ozip... + Deszyfrowanie Ozip zakończone! + Fastboot + Włącz ADB + Włącz Fastboot + Jesteś w trybie Fastboot... + TWRP nie utworzy ponownie katalogu /data/media na urządzeniu z FBE. Uruchom swój ROM, aby utworzyć /data/media + + Wywołano Android Rescue Party! Co może pomóc? Spróbuj: + 1. wyczyścić cache i/lub + 2. sformatować partycję /data i/lub + 3. wgrać ROM z czyszczeniem danych. + Zgłoszony problem: + Nie można uzyskać domyślnego kontekstu dla {1} -- Android może się nie uruchomić. + Zmień folder TWRP + Zmienianie folderu TWRP + Folder TWRP zmieniony na + Folder o tej nazwie już istnieje! + Odmapuj urządzenia Super + Odmapować wszystkie urządzenia Super? + Odmapowanie urządzeń Super... + Odmapowano wszystkie urządzenia Super + Odmapować wszystkie urządzenia Super? + Odmapowywanie urządzeń Super... + Odmapowano wszystkie urządzenia Super + Urządzenia na partycji /super mogą nie zostać zamontowane do momentu ponownego uruchomienia recovery. + Połącz migawki + Połączyć migawki? + Łączenie migawek... + Złączono migawki + Przywrócić z włączonym PIN-em/hasłem? + Przywrócić z włączonym wzorem? + Przywrócić z włączonym PIN-em? + Kontynuować przywracanie? + Włączony PIN/hasło + PIN/hasło powinny być wyłączone przed rozpoczęciem przywracania + PIN jest włączony + PIN powinien być wyłączony przed rozpoczęciem przywracania + Wzór jest włączony + Wzór powinien być wyłączony przed rozpoczęciem przywracania + Po pierwszym uruchomieniu Androida zaleca się jednorazowo ponownie uruchomić urządzenie. From 061bcf10212f330dea9f133e8271d60e44ccd7fe Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Sun, 14 Aug 2022 05:57:16 +0800 Subject: [PATCH 26/33] Enable reboot to fastbootd if TW_INCLUDE_FASTBOOTD is set Change-Id: I599841d7dab28c51700e9c5f445654263edf3336 (cherry picked from commit 97be4321d42d1efa01a981e25c686c19f037fb5a) --- Android.mk | 3 +++ data.cpp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/Android.mk b/Android.mk index 0d2708d4..a0603515 100755 --- a/Android.mk +++ b/Android.mk @@ -411,6 +411,9 @@ endif ifneq ($(TW_BACKUP_EXCLUSIONS),) LOCAL_CFLAGS += -DTW_BACKUP_EXCLUSIONS='"$(TW_BACKUP_EXCLUSIONS)"' endif +ifeq ($(TW_INCLUDE_FASTBOOTD), true) + LOCAL_CFLAGS += -DTW_INCLUDE_FASTBOOTD +endif LOCAL_C_INCLUDES += system/vold \ diff --git a/data.cpp b/data.cpp index 7661d69e..4e32dc4b 100755 --- a/data.cpp +++ b/data.cpp @@ -719,6 +719,10 @@ void DataManager::SetDefaultValues() printf("TW_HAS_EDL_MODE := true\n"); mConst.SetValue(TW_EDL_MODE, "1"); #endif +#ifdef TW_INCLUDE_FASTBOOTD + printf("TW_INCLUDE_FASTBOOTD := true\n"); + mConst.SetValue(TW_FASTBOOT_MODE, "1"); +#endif #ifdef PRODUCT_USE_DYNAMIC_PARTITIONS printf("PRODUCT_USE_DYNAMIC_PARTITIONS := true\n"); mConst.SetValue(TW_FASTBOOT_MODE, "1"); From 77f38b5d376ed61409cda4315a6caf498039fff0 Mon Sep 17 00:00:00 2001 From: bigbiff Date: Thu, 25 Aug 2022 18:32:11 -0400 Subject: [PATCH 27/33] flashing: unlock block partitions before installing a zip Change-Id: I48b3db34116a9097a9206162468bc009993ef7d1 (cherry picked from commit d56818f5af1807d388657ba60b0900c79bcbc05b) --- twrpinstall/twinstall.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/twrpinstall/twinstall.cpp b/twrpinstall/twinstall.cpp index 7975a978..6805a2f0 100755 --- a/twrpinstall/twinstall.cpp +++ b/twrpinstall/twinstall.cpp @@ -342,6 +342,7 @@ int TWinstall_zip(const char* path, int* wipe_cache, bool check_for_digest) { if (!system_mount_state) PartitionManager.UnMount_By_Path(PartitionManager.Get_Android_Root_Path(), false); if (android::base::GetBoolProperty("ro.virtual_ab.enabled", false)) { + PartitionManager.Unlock_Block_Partitions(); PartitionManager.Prepare_All_Super_Volumes(); gui_warn("mount_vab_partitions=Devices on super may not mount until rebooting recovery."); } From 5a0a3aeed5c522995944d50c1d944e6515fc06d3 Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Thu, 28 Jul 2022 03:45:22 +0800 Subject: [PATCH 28/33] partition: Mount partition as RO when updating size So that read-only partitions can also get mounted. For example, Super volumes are RO when setting up. Change-Id: I736a738963ba208cfdeaadc05c47d45b1bb7bf3e (cherry picked from commit b52a4815d5c3a5be1fe56968f4480c788d2eaab2) --- partition.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/partition.cpp b/partition.cpp index 4854fbee..294046b5 100755 --- a/partition.cpp +++ b/partition.cpp @@ -2982,36 +2982,39 @@ bool TWPartition::Restore_Image(PartitionSettings *part_settings) { } bool TWPartition::Update_Size(bool Display_Error) { - bool ret = false, Was_Already_Mounted = false; + bool ret = false, Was_Already_Mounted = false, ro = false; Find_Actual_Block_Device(); if (Actual_Block_Device.empty()) return false; + ro = Mount_Read_Only; + Mount_Read_Only = true; + if (!Can_Be_Mounted && !Is_Encrypted) { if (TWFunc::Path_Exists(Actual_Block_Device) && Find_Partition_Size()) { Used = Size; Backup_Size = Size; - return true; + goto success; } - return false; + goto fail; } Was_Already_Mounted = Is_Mounted(); if (Removable || Is_Encrypted) { if (!Mount(false)) - return true; + goto success; } else if (!Mount(Display_Error)) - return false; + goto fail; ret = Get_Size_Via_statfs(Display_Error); if (!ret || Size == 0) { if (!Get_Size_Via_df(Display_Error)) { if (!Was_Already_Mounted) UnMount(false); - return false; + goto fail; } } @@ -3025,7 +3028,7 @@ bool TWPartition::Update_Size(bool Display_Error) { } else { if (!Was_Already_Mounted) UnMount(false); - return false; + goto fail; } } else if (Has_Android_Secure) { if (Mount(Display_Error)) @@ -3033,12 +3036,17 @@ bool TWPartition::Update_Size(bool Display_Error) { else { if (!Was_Already_Mounted) UnMount(false); - return false; + goto fail; } } if (!Was_Already_Mounted) UnMount(false); +success: + Mount_Read_Only = ro; return true; +fail: + Mount_Read_Only = ro; + return false; } bool TWPartition::Find_Wildcard_Block_Devices(const string& Device) { From bdb5d2ada54e672ec1d9283d1e65205353640c9a Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Wed, 20 Jul 2022 06:42:18 +0800 Subject: [PATCH 29/33] Make "Unmap Super Devices" option available to A-only devices Change-Id: Ib3aed724b2e98f66387bdca240b0b4f719054594 (cherry picked from commit 2136fc5b91963fc21e782614ce6cfd55ca065eb9) --- data.cpp | 5 ++--- gui/theme/common/landscape.xml | 2 +- gui/theme/common/portrait.xml | 2 +- gui/theme/common/watch.xml | 2 +- partitionmanager.cpp | 4 +++- variables.h | 1 + 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/data.cpp b/data.cpp index 4e32dc4b..96e4b5e8 100755 --- a/data.cpp +++ b/data.cpp @@ -818,11 +818,10 @@ void DataManager::SetDefaultValues() mData.SetValue("tw_sleep", "5"); mData.SetValue("tw_enable_fastboot", "0"); - if (android::base::GetBoolProperty("ro.virtual_ab.enabled", false)) - mConst.SetValue("tw_virtual_ab.enabled", "1"); + mConst.SetValue(TW_VIRTUAL_AB_ENABLED, "1"); else - mConst.SetValue("tw_virtual_ab.enabled", "0"); + mConst.SetValue(TW_VIRTUAL_AB_ENABLED, "0"); // Brightness handling string findbright; #ifdef TW_BRIGHTNESS_PATH diff --git a/gui/theme/common/landscape.xml b/gui/theme/common/landscape.xml index 9fb85707..c0d14d89 100755 --- a/gui/theme/common/landscape.xml +++ b/gui/theme/common/landscape.xml @@ -3856,7 +3856,7 @@ - + tw_back=advanced tw_action=unmapsuperdevices diff --git a/gui/theme/common/portrait.xml b/gui/theme/common/portrait.xml index db8ea38d..1e3d0f83 100755 --- a/gui/theme/common/portrait.xml +++ b/gui/theme/common/portrait.xml @@ -3979,7 +3979,7 @@ - + tw_back=advanced tw_action=unmapsuperdevices diff --git a/gui/theme/common/watch.xml b/gui/theme/common/watch.xml index f82c2d8c..7d9888da 100755 --- a/gui/theme/common/watch.xml +++ b/gui/theme/common/watch.xml @@ -4466,7 +4466,7 @@ - + tw_back=advanced tw_action=unmapsuperdevices diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 743e9285..5aee83f9 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -3573,7 +3573,9 @@ bool TWPartitionManager::Unmap_Super_Devices() { if ((*iter)->Is_Super) { TWPartition *part = *iter; std::string bare_partition_name = Get_Bare_Partition_Name((*iter)->Get_Mount_Point()); - std::string blk_device_partition = bare_partition_name + PartitionManager.Get_Active_Slot_Suffix(); + std::string blk_device_partition = bare_partition_name; + if (DataManager::GetStrValue(TW_VIRTUAL_AB_ENABLED) == "1") + blk_device_partition.append(PartitionManager.Get_Active_Slot_Suffix()); (*iter)->UnMount(false); LOGINFO("removing dynamic partition: %s\n", blk_device_partition.c_str()); destroyed = DestroyLogicalPartition(blk_device_partition); diff --git a/variables.h b/variables.h index 8ae34696..cc6977cd 100755 --- a/variables.h +++ b/variables.h @@ -147,6 +147,7 @@ #define TW_NO_SHA2 "tw_no_sha2" #define TW_UNMOUNT_SYSTEM "tw_unmount_system" #define TW_IS_SUPER "tw_is_super" +#define TW_VIRTUAL_AB_ENABLED "tw_virtual_ab.enabled" #define TW_AUTO_REFLASHTWRP_VAR "tw_auto_reflashtwrp" // Theme versioning From d976629141919ec3e9b1ef0b56c41e3f5b1847e8 Mon Sep 17 00:00:00 2001 From: Darth9 Date: Fri, 26 Aug 2022 09:03:33 +0100 Subject: [PATCH 30/33] Unblock partitions before reflashing current TWRP Change-Id: Idf54f302824cfbddb5d5be50b676dbc58435ef51 (cherry picked from commit 5c4a0aa453927a51e6ac740243ca0786893c7c5e) --- twrpRepacker.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/twrpRepacker.cpp b/twrpRepacker.cpp index 6ac2ce90..1da19e26 100755 --- a/twrpRepacker.cpp +++ b/twrpRepacker.cpp @@ -270,6 +270,7 @@ if (!TWFunc::Path_Exists("/ramdisk-files.txt")) { LOGERR("can not find ramdisk-files.txt"); return false; } + PartitionManager.Unlock_Block_Partitions(); Repack_Options_struct Repack_Options; Repack_Options.Disable_Verity = false; Repack_Options.Disable_Force_Encrypt = false; From b0ef519320b757915ddbf1269be4af82f64b3457 Mon Sep 17 00:00:00 2001 From: Tommaso Fonda Date: Thu, 29 Sep 2022 15:10:29 +0200 Subject: [PATCH 31/33] minuitwrp: Fix typo in compiler flags * This obviously causes a build error if TARGET_RECOVERY_OVERSCAN_PERCENT is set to some value in the BoardConfig. Change-Id: I9d34ba158a1249e58304369918408fb388be8c5c (cherry picked from commit 3b494b7a7f6efd3b8f9016540b74815ea6e9df64) --- minuitwrp/libminuitwrp_defaults.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minuitwrp/libminuitwrp_defaults.go b/minuitwrp/libminuitwrp_defaults.go index 2f82c6eb..59e5cebf 100644 --- a/minuitwrp/libminuitwrp_defaults.go +++ b/minuitwrp/libminuitwrp_defaults.go @@ -116,7 +116,7 @@ func globalFlags(ctx android.BaseContext) []string { } if getMakeVars(ctx, "TARGET_RECOVERY_OVERSCAN_PERCENT") != "" { - cflags = append(cflags, "-DDOVERSCAN_PERCENT="+getMakeVars(ctx, "TARGET_RECOVERY_OVERSCAN_PERCENT")) + cflags = append(cflags, "-DOVERSCAN_PERCENT="+getMakeVars(ctx, "TARGET_RECOVERY_OVERSCAN_PERCENT")) } else { cflags = append(cflags, "-DOVERSCAN_PERCENT=0") } From d1b9a233e044f58fbc53d33ea5e25823438e48f2 Mon Sep 17 00:00:00 2001 From: bigbiff Date: Sat, 1 Oct 2022 12:54:28 -0400 Subject: [PATCH 32/33] release: twrp 3.7.0 a11 Change-Id: Ia1f37b6cfb4eea02b513b7b158f32f55dc5216ac --- variables.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variables.h b/variables.h index cc6977cd..4769dc71 100755 --- a/variables.h +++ b/variables.h @@ -17,7 +17,7 @@ #ifndef _VARIABLES_HEADER_ #define _VARIABLES_HEADER_ -#define TW_MAIN_VERSION_STR "3.6.2_11" +#define TW_MAIN_VERSION_STR "3.7.0_11" #define TW_VERSION_STR TW_MAIN_VERSION_STR TW_DEVICE_VERSION #define TW_SETTINGS_FILE ".twrps" #define TW_RECOVERY_NAME "TWRP" From 11b4b788471a4f6a436896fc08fe1b217f5453d5 Mon Sep 17 00:00:00 2001 From: kacskrz Date: Mon, 24 Oct 2022 13:10:33 +0200 Subject: [PATCH 33/33] Update Czech translation (by VMach3) Change-Id: Ia9585f4f2f196fda3aaabf748737482867739611 --- gui/theme/common/languages/cz.xml | 415 +++++++++++++++++++++--------- 1 file changed, 289 insertions(+), 126 deletions(-) diff --git a/gui/theme/common/languages/cz.xml b/gui/theme/common/languages/cz.xml index e15b2a72..5194704c 100644 --- a/gui/theme/common/languages/cz.xml +++ b/gui/theme/common/languages/cz.xml @@ -1,31 +1,38 @@ - + - Czech + Čeština + - + + Systém - Obraz systému - Dodavatel - Obrázek dodavatela + Systém + Vendor + Vendor Boot Recovery Cache Data + Data (bez úložiště) SD karta Interní úložiště Mikro SD karta USB OTG Android Secure Dalvik / ART Cache + SD-EXT - Přijaté data - Přijaté úložiště + Připojená data + Připojené úložiště + Úložiště + + Team Win Recovery Project TWRP %tw_version% CPU: %tw_cpu_temp% °C @@ -43,6 +50,7 @@ OBRAZOVKA VIBRACE JAZYK + Instalovat Vymazat Zálohovat @@ -54,10 +62,10 @@ Soubory Kopírovat log Vyberte typ - Instalovat Zip - Instalovat Zip - Instalovat obraz - Instalovat obraz + Instalovat ZIP + Instalovat ZIP + Instalovat IMG + Instalovat IMG Vybrat soubor Složky Vyberte soubor z: %tw_storage_display_name% (%tw_storage_free_size% MB) @@ -70,43 +78,58 @@ Soubor %tw_zip_queue_count% z 10: Tato operace může nainstalovat nekompatibilní software a znefunkčnit zařízení. - Stlačte Nazpět pro zrušení přidání zip. + Stlačte Nazpět pro zrušení přidání ZIPu. Stlačte Nazpět pro vyčištění seznamu. Adresář: Soubor: - Verifikace podpisu zip + Verifikace podpisu ZIPu Vložit TWRP po instalaci + Po dokončení instalace restartovat Nastavení - Potvrdit flash + Potvrdit instalaci Řada: Nastavení: Potvrdit - Přidat víc Zip - Vyčistit seznam Zip - Nainstaluj Zip %tw_zip_index% z %tw_zip_queue_count% - Instalace Zip: %tw_file% + Přidat víc ZIPů + Vyčistit seznam ZIPů + Instalace ZIPu %tw_zip_index% z %tw_zip_queue_count% + Instalace ZIPu: %tw_file% Neúspěšné Úspěšné Instalace selhala Instalace se podařila Vymazat cache/dalvik + Vymazat Dalvik Restartovat systém Vyberte cílový oddíl Vyberte cílový oddíl pro zápis obrazu: Cílový oddíl: - Zapisování obrazu... - Obraz zapsaný - Smazat cache & dalvik? + Zapisování IMG... + IMG zapsaný + Smazat cache & dalvik? + Vymazat Dalvik? Mazání cache & dalvik... Vymazání cache & dalvik dokončeno + Vymazaní Dalvik hotovo Potáhnout pro vymazání Vymazání - Není nainstalovaný OS! Jste si - si jistý, že chcete restart? + Není nainstalovaný OS! Jste + si jistý, že chcete restartovat? si jistý, že chcete vypnout zařízení? Restartování... - Potáhnout pro restart + Potáhnout pro restartování Restart + Přejete si nainstalovat apku Official TWRP App? + Aplikace může zkontrolovat nové verze TWRP. + Instalovat TWRP apku? + Vyzvat k instalaci TWRP apky, pokud není nainstalována + Nainstalovat jako systémovou aplikaci + Instalace aplikace... + Potáhnout pro instalaci TWRP apky + Odinstalovat TWRP apku ze systému + TWRP apka odinstalována + Odinstalovat TWRP apku ze systému? + Odinstalovávání TWRP apky ze systému... Potáhnout pro potvrzení zápisu Potvrdit akci Pro zrušení stlačte tlačítko nazpět. @@ -115,17 +138,18 @@ Tovární nastavení Tovární nastavení Vymazat Data, Cache a Dalvik - (nezahrnuje vnitřní paměť) + (nezahrnuje vnitřní úložiště) Většinou je potřebné jen vymazaní. + (nezahrnuje uživatelé/zámek obrazovky) Tovární nastavení... Rozšířené vymazání Rozšířené vymazání Vymazat šifrovaní z Data? Formátuji Data... - Swipe pro volbu Formátovat Data + Potáhnout pro volbu Formátovat Data Formátovat Data - Tovární nastavení ukončené + Tovární nastavení dokončeno Vyberte oddíly Vymazat vybraný(é) oddíl(y)? Vymazávání oddílu(ů)... @@ -136,23 +160,24 @@ Formátovat Data Formátování Data vymaže všechny aplikace, zálohy, fotky, videa, hudbu - a vymaže enkrypci vnitřní paměťi. - Zahrnuje adoptovanou paměť + a odstraní šifrovaní úložiště. + Zahrnuje připojenou paměť Formátování Data vymaže všechny aplikace, zálohy, fotografie, videa, hudbu - a vymaže enkrypci vnitřní paměťi. + a odstraní šifrovaní úložiště. Formátování Data vymaže všechny aplikace, zálohy a hudbu. Tento proces je nevratný. Toto je nevratné. Formátování Data je hotové + Napiš \"yes\" pro pokračování. Stlač nazpět pro zrušení. Možnosti pro: %tw_partition_name% Vyber akci Nastavení souborového systému Oddíly: %tw_partition_name% - Mount point: %tw_partition_mount_point% + Připojit část: %tw_partition_mount_point% Souborový systém: %tw_partition_file_system% - Přítomný: Ano - Přítomný: Ne + Současný: Ano + Současný: Ne Vyměnitelný: Ano Vyměnitelný: Ne Velikost: %tw_partition_size%MB @@ -170,7 +195,7 @@ Oprava Opravit %tw_partition_name%? Opravování... - Oprava ukončená + Oprava dokončena Potáhnout pro opravu Oprava Změnit souborový systém @@ -196,11 +221,17 @@ Název: Vybrat oddíly do zálohy: Paměť: - zakázané - pro povolení zadejte heslo - povolené + zakázáno - pro povolení zadejte heslo + povoleno Povolit kompresi Vynechat generovaní Digest během zálohy - Nekontrolovat volné místo + Nekontrolovat volné místo + Přeskočit Digest kontrolu před instalováním ZIPu + Aktuální slot: %tw_active_slot% + Slot A + Slot B + Změna spouštěcího slotu + Změna spouštěcího slotu hotova Obnovit velikosti Potáhnout pro zálohu Připojit datum @@ -210,17 +241,17 @@ Zopakujte heslo: Hesla se nezhodují! Oddíly: - Zakázané - Povolené + Zakázáno + Povoleno Pojmenování zálohy - Příběh: + Průběh: Zálohovaní je dokončeno Obnova Vyberte zálohu Vyberte zálohu z %tw_storage_display_name% (%tw_storage_free_size% MB) Vyberte balíček pro obnovu: Šifrovaná záloha - Heslo je nesprávne, zkuste to znova! + Heslo není správné, zkuste to znova! Smazat zálohu Smazat zálohu? Toto je nevratné! @@ -239,7 +270,7 @@ Přejmenovat zálohu Přejmenovat zálohu? Toto je nevratné! - Přejmenovávaní zálohy... + Přejmenovávání zálohy... Přejmenování zálohy dokončeno Potáhnutím přejmenovat Přejmenovat @@ -248,12 +279,12 @@ Vybrat oddíly pro připojení: Připojit oddíly v režimu čtení Připojit systém v režimu na čtení - Dekryptovat Data + Dešifrovat Data Zakázat MTP Povolit MTP - Připoj. ukl. prostor USB - Ukládací prostor USB - Ukládací prostor USB připojený + Připoj. ulož. prostor USB + Uložný prostor USB + Uložný prostor USB připojen Ujistěte se, že jste zařízení odebrali z počítače před odpojením! Odpojit @@ -262,7 +293,7 @@ Recovery Bootloader Stáhnout - EDL + Edl Vypínání... Potáhnout pro vypnutí Vypnout @@ -270,13 +301,13 @@ Ponechat Systém v režimu na čtení? TWRP může ponechat váš systémový oddíl nezměněný což zjednoduší instalaci oficiálních aktualizací. - TWRP nezabrání tuctové ROMky + TWRP nezabrání tovární ROMce přepsat TWRP a nebude nabízet rootování zařízení. - Instalovaní Zip nebo operace přes adb můžu stále + Instalovaní ZIPu nebo operace přes ADB mohou stále modifikovat systémový oddíl. TWRP může ponechat váš systémový oddíl nezměněný což zjednoduší instalaci oficiálních aktualizací. - TWRP nezabrání tuctové ROMce přepsat TWRP a nebude nabízet rootování zařízení. - Instalování Zip nebo operace přes adb můžou stále modifikovat systémový oddíl. + TWRP nezabrání tovární ROMce přepsat TWRP a nebude nabízet rootování zařízení. + Instalování ZIPu nebo operace přes ADB mohou stále modifikovat systémový oddíl. Nikdy víc nezobrazovat tuto obrazovku po startu Ponechat v režimu na čtení Potáhnout pro povolení změn @@ -286,9 +317,10 @@ Všeobecné Všeobecné Použít rm -rf namísto naformátování + Automaticky obnovit TWRP po instalaci ROM Používat 24-hodin Převrácené uspořádaní lišty - Simulovat akce pro testovaní téma + Simulovat akce pro testovaní tématu Simulovat neúspěchy akcí Centrovat tlačítka navigace Zarovnat tlačítka navigace vlevo @@ -297,10 +329,13 @@ Časové pásmo Obrazovka Jas obrazovky + Vibrace jsou pro toto zařízení deaktivovány Vibrovat Jazyk Časové pásmo Vyberte časové pásmo: + (UTC -11) Samoa, Midwayské ostrovy (UTC -10) Havaj (UTC -9) Aljaška @@ -313,7 +348,7 @@ (UTC -2) Středoatlantický čas (UTC -1) Azory, Cape Verde (UTC 0) Greenwichský čas, Londýn, Dublin, Lisabon - (UTC +1) Stredoevropský čas, Praha, Berlín, Brusel, Paříž + (UTC +1) Středoevropský čas, Praha, Berlín, Brusel, Paříž (UTC +2) Atény, Istanbul, Minsk, Káhira (UTC +3) Moskva, Bagdád, Teherán (UTC +4) Abu Dhabi, Tbilisi, Muscat @@ -344,10 +379,10 @@ Jas: %tw_brightness_pct%% Nastavení jasu nedostupné Vibrovat - Vibrovat při stláčení + Vibrovat při stlačení Vibrovat při psaní Vibrovat při akci - Vibrovat při stláčení: + Vibrovat při stlačení: Vibrovat při psaní: Vibrovat při akci: Výběr jazyka: @@ -355,14 +390,15 @@ Nastavit jazyk Rozšířené Kopírovat log na SD kartu? - Kopírování logu na SD kartu... - Kopírování logu dokončeno + Kopírování logu na SD kartu... + Kopírování logu dokončeno + Oprava kontextů Rozdělit SD kartu SD karta Souborový manažer Jazyk Terminál - Načítat téma + Načíst téma HTC Dumlock Vložit TWRP Znova vložit TWRP? @@ -371,7 +407,7 @@ Potáhnout pro potvrzení Rozdělit SD kartu Musíte zvolit odstranitelné zařízení - Přijdete o všechny soubory na vložené SD kartě! + Příjdete o všechny soubory na vložené SD kartě! Toto je nevratná akce! Velikost EXT: Velikost Swap: @@ -380,18 +416,18 @@ Souborový systém: Potáhnutím rozdělit Rozdělení - Dělím SD kartu... + Rozdělování SD karty... Toto potrvá několik minut. - Rozdělení kompletní + Rozdělení dokončeno HTC Dumlock - Onbovit původní boot - Obnovit původní obraz boot? - Obnovování původního bootu... - Obnova původního bootu dokončená - Přepsání recovery - Přepsat recovery při startu? - Přepisování recovery při startu... - Přepsání recovery při startu dokončeno + Onbovit původní Boot + Obnovit původní Boot? + Obnovování původního Bootu... + Obnova původního Bootu dokončená + Přepsání Recovery + Přepsat Recovery při startu? + Přepisování Recovery při startu... + Přepsání Recovery při startu dokončeno Instalovat HTC Dumlock Instalovat soubory HTC Dumlock do ROM? Instalace HTC Dumlock... @@ -403,8 +439,8 @@ Adresář Soubor Zvolte akci - Zvolené %tw_fm_type%: - Kopíruj + Zvoleno %tw_fm_type%: + Kopírovat Kopírovat soubor Kopírovat adresář Kopírování @@ -424,27 +460,84 @@ Přejmenovat Nastavit práva Práva: - Operace na souboru dokončená + Operace se souborem dokončena + Zde otevřít Terminal + Upravit soubor Dešifrovat data Zadejte heslo. + Heslo selhalo, zkuste to znovu! + Vzor selhal, zkuste to znovu! Zadejte vzor. Pokus o dešifrování + Chybí soubory nutné pro dešifrování: {1} Příkaz terminálu Terminál ZABÍT Navigovat do počátečního adresáře ADB Sideload - Vymazat dalvik cache - Vymazat cache + Vymazat Dalvik Cache + Vymazat Cache Potáhnout pro spuštění sideload Start ADB Sideload Použití: adb sideload název.zip - ADB Sideload dokončený + ADB Sideload dokončeno + Oprava kontextů + Poznámka: Oprava kontextů je zřídka nutná. + Oprava SELinux kontextů může způsobit + problémy se správným spuštěním zařízení. + Oprava kontextů + Potáhnout pro opravu kontextů + Oprava kontextů... + Oprava kontextů hotova Restart Neinstalovat Vyberte úložiště OK + Instalovat Recovery Ramdisk + Instalovat Kernel + Instalovat Kernel? + Instalovat Kernel + Instalovat Recovery? + Instalovat Recovery + Nejprve zálohujte existující IMG + Přebalit + Potáhnout pro potvrzení instalace + Instalování... + Instalace hotova + Chyba při rozbalování IMG. + Chyba při přebalení IMG. + soubory ramdisku byly upraveny, nelze vytvořit ramdisk pro instalaci, spusťte twrp fastboot a zkuste tuto možnost znovu nebo použijte možnost Instalovat Recovery Ramdisk. + Nepodařilo se vytvořit ramdisk k instalováním. + Rozbalování {1}... + Přebalování {1}... + Vybrat IMG + Pokud bylo zařízení dříve rootováno, pak byl root přepsán a bude nutné jej znovu nainstalovat. + Instalace aktualního TWRP + Instalovat aktualní TWRP? + Instalování TWRP... + Instalace TWRP dokončena + Opravit Recovery bootloop + Opravit Recovery bootloop? + Oprava Recovery bootloopu... + Oprava Recovery bootloopu hotova + Záplatování Kernelu... + Chyba záplatování Kernelu. + Dešifrování uživatelů + Zvolte ID uživatele pro dešifrování + Vyberte uživatele + Záloha nezahrnuje některé soubory uživatele {1}, protože uživatel není dešifrován. + Pokus o dešifrování FBE uživatele {1}... + Dešifrování uživatele {1} hotovo + Dešifrování uživatele {1} se nezdařilo + Zadejte heslo pro uživatele [%tw_crypto_user_id%] + Zadejte vzor pro uživatele [%tw_crypto_user_id%] + Nebyli dešifrováni všichni uživatelé! + Operace Záloha/Obnova mohou selhat! + Přesto pokračovat + Multiuživatel varování + + Kernel nemá podporu pro čtení obsahu SELinux. Plná podpora SELinux. Bez podpory SELinux (chybí libselinux). @@ -453,14 +546,15 @@ Úspešně dešifrované s přednastaveným heslem. Nelze dešifrovat s přednastaveným heslem. Možná budete muset naformátovat Data. Generuje se Digest + *Generuje se Digest... - *Digest vygenerované. + *Digest vygenerován. * chyba Digest! * chyba při výpočtu Digest. (Aktuální datum) - (Generovat automaticky) + (Vytvořit automaticky) Nelze najít oddíl \'{1}\' pro výpočet zálohy. - Žádné oddíly vybrané na zálohování. + Nejsou vybrány žádné oddíly na zálohování. * Počet oddílů označených na zálohování: {1} * Konečná velikost zálohy: {1}MB * Zůstatek místa: {1}MB @@ -475,25 +569,29 @@ [ZÁLOHA DOKONČENÁ ZA {1} SEKUND] [ZAČÁTEK OBNOVY] Obnovit adresář: \'{1}\' + + [{1} hotovo ({2} sekund)] Kontrolování Digest Vynechání kontroly Digest na základě uživatelského nastavení. Počítání detailů obnovy... Nelze obnovit {1} -- připojené jen na čtení. Nelze najít oddíl \'{1}\' pro obnovu. - Žádné oddíly nebyly vybrané pro obnovu. + Žádné oddíly nebyly vybrány pro obnovu. Obnova {1} oddílů... - Velikost obnovy je spolu {1}MB + Celková velikost obnovy je {1}MB Obnovování detailů systému [OBNOVA DOKONČENÁ ZA {1} SEKUND] - Chyba při otvírání: \'{1}\' ({2}) + + Chyba při otevírání: \'{1}\' ({2}) Nelze najít oddíl podle názvu zálohy: \'{1}\' Nelze najít oddíl na cestě \'{1}\' Obnova detailů oddílů... ...hotovo - Vymazávání adresářů dalvik cache... + Vymazávání adresářů Dalvik Cache... Vyčištěné: {1}... - -- Vyčištění adresáře Dalvik cache bylo dokončeno! - Žádné zabezpečené android oddíly nebyly nalezeny. + -- Vymazání Dalvik Cache adresáře hotovo! + -- Vyčištění adresáře Dalvik Cache bylo dokončeno! + Žádné Android Secure oddíly nebyly nalezeny. {1} nelze najít. Vymazávání interního úložiště -- /data/media... {1} nelze připojit @@ -501,11 +599,12 @@ Nelze připojit úložiště Nelze dešifrovat data. Tato verze byla zkompilovaná bez podpory šifrování. - Data byly úspěšne dešifrované, nový block device: \'{1}\' + Data byla úspěšně dešifrována, nový blok zařízení: \'{1}\' + Data byla úspěšně dešifrována Hotovo. - Dělení SD karty... + Rozdělování SD karty... Nelze najít zařízení na rozdělení. - Velikost EXT + Swap je větší jako velikost SD karty. + Velikost EXT + Swap je větší než velikost SD karty. Vymazávání tabulky rozdělení... Nelze vymazat tabulku rozdělení. Vytváření oddílu {1}... @@ -516,29 +615,32 @@ MTP je už povolené Nelze povolit MTP Podpora MTP není zahrnutá - [ZÁPIS OBRAZU SPUŠTĚNÝ] - Obraz na zápis: \'{1}\' + [ZÁPIS IMG SPUŠTĚN] + IMG na zápis: \'{1}\' Nelze najít oddíl \'{1}\' pro zápis. Na zápis nebyly zvolené žádné oddíly. - Na zápis je zvolených příliš mnoho oddílů. + Na zápis je zvoleno příliš mnoho oddílů. Zvolený oddíl je nesprávný pro zápis. - [ZÁPIS OBRAZU DOKONČENÝ] + [ZÁPIS IMG DOKONČEN] Mazání {1} {1} neexistuje! Oprava nemožná! Oprava {1} pomocí {2}... Nelze opravit {1}. Nelze připojit /data a nelze najít parametry šifrování. + Adresář \'{1}\' nelze vytvořit ({2}). + Nelze připojit \'{1}\' ({2}) + Nelze odpojit \'{1}\' ({2}) Nelze natáhnout {1}. Opravování {1} před natáhnutím. Nelze natáhnout {1}. Soubor Digest se nenašel pro \'{1}\'. Prosím zvolte Vypnout kontrolu Digest během obnovy. Digest neodpovídá souboru \'{1}\'. - Digest matched for '{1}'. - Nelze dešifrovat soubor tar \'{1}\' - Měli by jste restartovat recovery aby jste mohli znova používat /data. + Digest pasuje k '{1}'. + Nelze dešifrovat soubor TAR \'{1}\' + Měli by jste restartovat Recovery aby jste mohli znova používat /data. Nelze formátovat pro zrušení šifrování. Formátování {1} použitím {2}... Nelze vymazat {1}. @@ -546,13 +648,14 @@ Vymazání všech souborů v \'{1}\' Vymazaní Data bez vymazání /data/media... Zálohování {1}... + Záloha {1} nezahrnuje žádné soubory interního úložiště, jako jsou obrázky, hudba nebo stažené soubory. Zálohování Velikost zálohy pro \'{1}\' je 0 bajtů. - UPOZORNĚNÍ: Tato záloha /data byla vytvořená pomocí systému souborů {1}! Záloha nebude bootovat pokud se nezmění nazpět na {1}. + UPOZORNĚNÍ: Tato záloha /data byla vytvořená pomocí systému souborů {1}! Záloha nebude spustitelná pokud se nezmění nazpět na {1}. Obnovování {1}... Obnovování Nelze vytvořit adresář {1}. - Velikost obrazu je větší než cílové zařízení + Velikost IMG je větší než cílové zařízení Zapisování {1}... Adresář záloh nastavený na: \'{1}\' Zálohu \'{1}\' nelze najít @@ -570,65 +673,125 @@ Spouštění příkazu ADB Sideload Spouštění funkce ADB sideload... - pro použití sideload na toto zařízení potřebujete ADB 1.0.32 nebo novší. - Heslo nebylo poskytnuté. + pro použití sideload na tomto zařízení potřebujete ADB 1.0.32 nebo novější. + Heslo nebylo poskytnuto. Vykonávání skriptu dokončeno - Vkládání TWRP do obrazu boot... - Chyba při instalaci zip souboru \'{1}\' - Instalace zip souboru \'{1}\' + Vkládání TWRP do boot.img... + Chyba při instalaci ZIP souboru \'{1}\' + Instalace ZIP souboru \'{1}\' Nastavení možností zálohy: - Komprese zapnutá - Generovaní Digest vypnuté + Komprese je zapnutá + Vytváření Digest vypnuté Zálohování selhalo Zálohování selhalo. Čistění adresáře záloh. - Spouštění příkazů recovery - Příkazy recovery dokončeno + Spouštění příkazů Recovery + Příkazy Recovery dokončeny Spouštění OpenRecoveryScript - OpenRecoveryScript dokončený - Nelze nájít \'{1}\' v souboru zip. + OpenRecoveryScript dokončen Kontrola Digest souboru... + Neplatný formát ZIP souboru! Nelze namapovat soubor \'{1}\' - Ověřování podpisu zip souboru... - Ověřování podpisu zip souboru selhalo! - Podpis souboru zip úspešně ověřený. - Soubor zip je poškozený! + Ověřování podpisu ZIP souboru... + Ověřování podpisu ZIP souboru selhalo! + Podpis souboru ZIP úspešně ověřen. + Soubor ZIP je poškozený! Vynechání kontroly Digest: soubor s Digest nenalezen - Digest nesedí - Digest sedí + Digest nesouhlasí + Digest souhlasí Proces {1} skončil se signálem: {2} Proces {1} skončil s CHYBOU: {2} Instalování HTC Dumlock do systému... - Obnovování původního bootu... - Zapisování recovery do bootu... - Běh skriptu {1}... - Přejmenovaný tuctový recovery soubor v /systém pro zabránění přepsání TWRP tuctovou ROM. + Obnovování původního Bootu... + Zapisování Recovery do Bootu... + Provádění skriptu {1}... + Přejmenování souboru s tovární Recovery v /systém pro zabránění přepsání TWRP tovární ROM. Rozdělení zálohy do více archívů... Chyba při vytváření zálohy. Chyba během procesu obnovy. Rozdělení ID vlákna {1} do archívu {2} + %llu z %llu souborů, %i%% %lluMB z %lluMB, %i%% - Pokus o dešifrování datového oddílu přez příkazový řádek. + Pokus o dešifrování datového oddílu přes příkazový řádek. Nepodařilo se načíst základní balíčky. Simulování akcí... Zálohování přerušeno Konfigurování TWRP... Nelze konfigurovat TWRP s tímto jádrem. Recovery log zkopírovaný do {1}. - Dosažený maximální počet zip v seznamu! - Dosažený minimální počet zip v seznamu! + Dosažený maximální počet ZIPů v seznamu! + Dosažený minimální počet ZIPů v seznamu! Snímek obrazovky byl uložen do {1} Nelze udělat snímek obrazovky! - Jeden nebo víc zip souborů vyžádalo smazaní cache -- Vymazání cache nyní. - Nelze vymazat android secure - Nelze vymazat dalvik - (Generovat automaticky) + Jeden nebo více ZIP souborů vyžádalo smazaní Cache -- Vymazat Cache nyní. + Nelze vymazat Android Secure + Nelze vymazat Dalvik + (Vytvořit automaticky) (Aktuální datum) Název zálohy je příliš dlouhý. Název zálohy \'{1}\' obsahuje neplatný znak: \'{1}\' Toto zařízení nemá skutečnou SD kartu! Přerušuji! Ruším ADB sideload... Chyba při změně souborového systému. - Téma vlastní verze nesedí s verzí TWRP. Použije se tuctové téma. + Téma vlastní verze nesedí s verzí TWRP. Použije se výchozí téma. + (O úroveň výš) + Restartování do %tw_sleep% sekund(s) + Chyba při ADB zálohování. Ukončuji..." + Nelze zapisovat na ovládací kanál ADB + --nutné pro povolení TWRP ADB zálohování + cesta: {1} nebyl nalezen v seznamu oddílů + Log kernelu zkopírován do {1} + Zkopírován logcat do {1} + Zahrnout Log kernelu + Zahrnout Logcat + Pro hashování použijte SHA2 + Chyba při změně spouštěcího slotu bootloaderu na {1} + Opojit Systém před instalací ZIPu + Odpojování Systému... + Odpojení Systému se nezdařilo + Instalace A/B ZIPu do neaktivního slotu: {1} + Chcete-li instalovat další ZIPy, restartujte TWRP a přepněte na aktualizovaný slot. + Instalace do obou slotů + Spouštění Ozip dešifrování... + Ozip dešifrování dokončeno! + Fastboot + Povolit ADB + Povolit Fastboot + Přepínání do Fastboot režimu... + TWRP znovu nevytvoří /data/media na zařízení FBE. Restartujte do své rom a vytvořte /data/media + + Spouštění záchrany (Android Rescue Party)! Možné řešení? Buď: + 1. Smazat Cache, a/nebo + 2. Formátovat Data, a/nebo + 3. Čistá instalace ROM. + Hlášeny problem je: + Nelze získat výchozí kontext pro {1} -- Android se nemusí spustit. + TWRP složka změněna na + Změna TWRP složky + Měnění TWRP složky + Složka s tímto názvem již existuje! + Zrušit mapování super zařízení + Zrušit mapování všech super zařízení? + Rušení mapování super zařízení... + Zrušena mapování všech super zařízení + Rušení mapování super zařízení... + Zrušena mapování všech super zařízení + Zrušit mapování všech super zařízení? + Zařízení se super oddílem se mohou připojit až po obnovení restartem. + Sloučit snímky? + Sloučit snímky + Slučování snímků... + Sloučené snímky + Obnovit, přesto že je vzor povolen? + Obnovit, přesto že je kód PIN povolen? + Obnovit, přesto že je kód PIN/heslo povoleno? + Pokračovat v obnovení? + Vzor je povolen + Vzor by měl být před obnovením vypnut + Kód PIN je povolen + PIN by měl být před obnovením vypnut + PIN/heslo je povoleno + PIN/heslo by mělo být před obnovením vypnuto + Po prvním spuštění se doporučuje jednou restartovat Android.