Android13 通过OTA升级更新系统默认设置
2024-09-22 / 龙之叶   

系统进行OTA升级时更改默认设置的详细步骤

在进行系统的OTA(Over-The-Air)升级过程中,如果需要对系统默认设置进行更改,以确保升级后的系统能够应用新的默认配置,那么需要执行一系列关键步骤。以下是详细的操作指南:

修改设备Overlay资源

首先,需要定位到设备特定的Overlay资源文件。这些资源文件通常包含了针对特定设备或品牌定制的UI元素和默认设置。
根据需要,对这些Overlay资源进行相应的修改,以反映新的默认设置。

更新defaults.xml文件

接下来,需要进入frameworks/base/packages/SettingsProvider/res/values/目录。
找到defaults.xml文件,并使用文本编辑器打开。
在该文件中,找到需要更改的默认设置项,并更新其值以匹配新的默认配置。
保存并关闭文件。

更新SettingsProvider.java中的SETTINGS_VERSION

然后,需要进入frameworks/base/packages/SettingsProvider/目录。
找到并打开SettingsProvider.java文件。
在该文件中,定位到SETTINGS_VERSION的定义。这个常量用于标识当前系统默认设置的版本。
每当默认设置有重大更改时,都应该递增这个版本的数值。
更新SETTINGS_VERSION的值,以确保系统能够识别并应用新的默认设置。
保存并关闭文件。

示例

修改默认值(双击电源键打开相机功能默认关闭)

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index 5cb4c404e09..c1e220b614a 100755
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -82,7 +82,9 @@
<integer name="def_max_sound_trigger_detection_service_ops_per_day" translatable="false">1000</integer>
<integer name="def_sound_trigger_detection_service_op_timeout" translatable="false">15000</integer>

+ <!-- Create by yeruilai 2024-10-11 10:19:02 Double click the power button to start the camera -->
+ <integer name="def_camera_double_tap">1</integer>
+
</resources>

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 53eef230cac..a3c96455cfa 100755
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2448,8 +2448,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
@@ -2457,6 +2462,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
+
+ // Create by yeruilai 2024-10-11 10:19:02 Double click the power button to start the camera
+ loadIntegerSetting(stmt,Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, R.integer.def_camera_double_tap);
} finally {
if (stmt != null) stmt.close();
}

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 4694f965905..b13e42287c8 100644
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -3653,7 +3653,9 @@ public class SettingsProvider extends ContentProvider {
}

private final class UpgradeController {
- private static final int SETTINGS_VERSION = 210;
+ // Create by yeruilai 2024-10-14 11:47:55 Update default value
+ // private static final int SETTINGS_VERSION = 210;
+ private static final int SETTINGS_VERSION = 211;

private final int mUserId;

@@ -5549,6 +5551,11 @@ public class SettingsProvider extends ContentProvider {
// removed now that feature is enabled for everyone
currentVersion = 210;
}
+ // Create by yeruilai 2024-10-14 11:47:55 Update default value
+ if (currentVersion == 210) {
+ // removed now that feature is enabled for everyone
+ currentVersion = 211;
+ }

// vXXX: Add new settings above this point.

注意事项:

如果在OTA升级过程中忽略了更新SettingsProvider.java中的SETTINGS_VERSION,那么即使defaults.xml和设备Overlay资源已经被更新,升级后的系统也可能不会应用这些新的默认设置。
因此,为了确保升级后的系统能够正确应用新的默认配置,务必按照上述步骤操作,并特别注意SETTINGS_VERSION的更新

本文链接:
http://longzhiye.top/2024/09/22/2024-09-22/