시스템 속성은 build.prop 전역 사전에 저장된 문자열 키-값 쌍입니다. 시스템 속성은 사용하기 쉽고 성능 오버헤드가 낮은 시스템 전체 리소스입니다. 시스템 속성을 사용하면 시스템 속성이 여러 프로세스에서 공유되는 경우에도 프로세스 간 통신(IPC)을 사용할 필요가 없습니다. 그러나 시스템 속성은 전역 변수와 유사하며 잘못 사용하면 위험할 수 있습니다. 시스템 속성을 잘못 사용하면 보안이 취약해지거나 사용자가 앱에 액세스할 수 없게 되는 등의 문제가 발생할 수 있습니다. 시스템 속성을 사용하여 구성 정보를 저장하기 전에 다른 구성 옵션을 고려하세요.
구성의 정보 소스가 기기의 하드웨어 구성요소에서 비롯된 경우 하드웨어의 HAL은 해당 구성요소의 정보를 제공해야 합니다. 구성에 액세스하기 위해 기존 HAL에서 새 HAL 메서드를 정의합니다. HAL 개발에 관한 자세한 내용은 HAL용 AIDL을 참고하세요.
시스템 구성 XML 파일
구성 데이터가 정적이지만 복잡한 경우(구조화된 경우) 구성 데이터에 XML이나 기타 유사한 형식을 사용하는 것이 좋습니다. 파일 스키마가 안정적으로 유지되는지 확인합니다. XML 파일의 경우 xsd_config를 사용하여 스키마를 안정적으로 유지하고 자동 생성된 XML 파서를 활용할 수 있습니다.
리소스 오버레이
리소스 오버레이를 사용하여 제품을 맞춤설정할 수 있습니다. 리소스 오버레이에는 두 가지 유형이 있습니다.
표준 리소스 오버레이: 빌드 시간에 제품을 맞춤설정하는 데 사용됩니다. 표준 리소스 오버레이에 관한 자세한 내용은 리소스 오버레이로 빌드 맞춤설정을 참고하세요.
런타임 리소스 오버레이(RRO): 런타임에 타겟 패키지의 리소스 값을 변경하는 데 사용됩니다. 예를 들어 시스템 이미지에 설치된 앱은 리소스 값에 따라 동작을 변경할 수 있습니다. 빌드 시간에 리소스 값을 하드코딩하는 대신 다른 파티션에 설치된 RRO가 런타임에 앱의 리소스 값을 변경할 수 있습니다. RRO에 관한 자세한 내용은 런타임에 앱 리소스의 값 변경을 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Configuration overview\n\nAOSP offers the following options for storing configuration information on a\ndevice:\n\n- System properties\n- Hardware abstraction layer (HAL) properties\n- System config XML files\n- Resource overlays (static and runtime)\n\nSystem properties\n-----------------\n\n*System properties* are string key/value pairs stored in the `build.prop`\nglobal dictionary. System properties are system-wide resources that are easy to\nuse and have a low performance overhead. When using system properties, you don't\nneed to use interprocess communication (IPC) even if a system property is shared\nacross multiple processes. However, system properties are similar to global\nvariables and can be harmful when misused. The misuse of system properties can\nresult in issues such as security vulnerabilities and apps becoming inaccessible\nto users. Before using system properties to store configuration information,\nconsider the other configuration options.\n\nFor further information on system properties, see\n[Add system properties](/docs/core/architecture/configuration/add-system-properties)\n| **Note:** Previous to Android 10, AOSP used a ConfigStore HAL to store system properties. ConfigStore HAL is deprecated and should no longer be used. For information on the ConfigStore HAL, refer to [ConfigStore HAL](/docs/core/architecture/configuration/archive).\n\nHAL properties\n--------------\n\nWhen the source of truth for a configuration is from a hardware component on a\ndevice, the HAL for the hardware must provide the information for that\ncomponent. Define a new HAL method in the existing HAL for accessing the\nconfiguration. For further information on developing a HAL, see\n[AIDL for HALs](/docs/core/architecture/aidl/aidl-hals).\n| **Note:** Don't configure the HAL to use system properties as a side-channel communication mechanism for HALs.\n\nSystem config XML files\n-----------------------\n\nWhen the configuration data is static but complicated (structured), consider\nusing XML or other such formats for the configuration data. Ensure that the\nfile schema remains stable. For XML files, you can use\n[`xsd_config`](/docs/core/architecture/config-file-schema-api#config-build-rule)\nto keep the schema stable, and to take advantage of an autogenerated XML\nparser.\n\nResource overlay\n----------------\n\nYou can use resource overlays to customize a product. There are two types of\nresource overlays:\n\n- *Standard resource overlay* used to customize a product at build time. Foris\n information on standard resource overlays, see\n [Customizing the build with resource overlays](/docs/setup/create/new-device#use-resource-overlays).\n\n- *Runtime resource overlay (RRO)* is used to change the resource values\n of a target package at runtime. For example, an app installed on the system\n image might change its behavior based upon the value of a resource. Rather than\n hardcoding the resource value at build time, an RRO installed on a different\n partition can change the values of the app's resources at runtime. For more\n information on RROs, see\n [Change the value of an app's resources at runtime](/docs/core/runtime/rros)."]]