# 配置 `property-vault` 屬性

屬性 (`property-vault`) 提供在系統中儲存和共用以字串形式儲存的鍵值對的功能。任何軟體元件都可共用特定鍵的任何值，任何其他處理序都可使用相同的鍵存取該值。`property-vault` 允許您定義在重新啟動後持續存在的屬性。元件可使用 `property-vault` 共用特定資訊，這些資訊可能與裝置上的任何其他模組相關。這些鍵值對可透過命令列介面（CLI）存取。

備註

`property-vault` 只在 `custom` 變體中支援。

## 在 Qualcomm 裝置上使用 CLI 來配置屬性

- 若要在 Qualcomm 裝置上使用 CLI 設定屬性，請使用以下命令：

setprop "my-key" "my-value"
        Copy to clipboard
- 若要透過 CLI 存取屬性，請使用以下命令：

getprop "my-key"
        Copy to clipboard

    先前指令的結果的輸出：

my-value
        Copy to clipboard
- 若要在裝置上使用 CLI 設定屬性並使其在重啟後持續存在，請使用以下命令：

setprop "persist.my-key" "my-value"
        Copy to clipboard

備註

要使屬性在重啟後持續存在，屬性鍵必須以 `persist` 開頭。

## 使用 Qualcomm Linux C/C++ 原始碼檔案中的屬性

要在 C/C++ 原始碼模組中使用這些屬性，請執行以下步驟：

1. 要在程式中使用屬性，例如在 `example-recipe.bb` 中，新增對 `property-vault` 的相依性：

DEPENDS += "glib-2.0 property-vault"
        RDEPENDS:${PN} += "property-vault"
        Copy to clipboard
2. 更改建置配置檔案：

    1. 如果您正在使用 `autotools`：

        `configure.ac`

...
            
            PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes, AC_MSG_ERROR(GLib >= 2.16 is required))
            GLIB_CFLAGS="$GLIB_CFLAGS"
            GLIB_LIBS="$GLIB_LIBS"
            AC_SUBST(GLIB_CFLAGS)
            AC_SUBST(GLIB_LIBS)
            
            AC_CONFIG_FILES([Makefile])
            ...
            Copy to clipboard

        `Makefile.am`

root_sbindir       = "/sbin"
            root_sbin_PROGRAMS = property-test
            
            property_test_SOURCES  = source.c
            property_test_CFLAGS = @GLIB_CFLAGS@
            property_test_LDFLAGS = @GLIB_LIBS@ -lpropertyvault
            Copy to clipboard
    2. 如果您正在使用 `cmake`：

        `CMakeList.txt`

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -lpthread -lrt -lm -lglib-2.0 -ldl -latomic")
            target_link_libraries (your-lib-name propertyvault)
            Copy to clipboard
3. 修改原始碼檔案以 `get` 和 `set` 屬性：

    `source.c`

#include "properties.h"
        
        int main() {
              // set a property
              property_set("my-key", "my-value");
        
              // get a property
              char paramstr[PROP_VALUE_MAX];
              // value gets stored in paramstr
              property_get("my-key", paramstr, "default-val");

              // set a property which has to persist across reboots
              property_set("persist.my-key", "my-value");
        
              // get a persisted property
              property_get("my-key", paramstr, "default-val");
        
              return 0;
        }
        Copy to clipboard

備註

屬性鍵名稱最長可以是 64 個字元，而屬性值最長可以是 92 個字元，這是由 `properties.h` 中的 `PROP_NAME_MAX` 和 `PROP_VALUE_MAX` 定義的。
4. 在主機電腦上建置該配方，並將其作為映像的一部分納入，以燒錄到裝置上。

Last Published: Dec 23, 2025

[Previous Topic
使用 Qualcomm Linux 設定 Kubernetes](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/setup_kubernetes_with_qualcomm_linux.md) [Next Topic
永久分割磁碟](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/persist_partition.md)