device/sample
폴더의 안드로이드 소스에는 overlays
이라는 폴더가 있습니다. 예를 들어 같은 오버레이 폴더가 표시됩니다. cyanogen mods.Android 소스 오버레이는 어떻게 작동합니까?
이 오버레이 폴더 란 무엇입니까? 어떻게 작동합니까? 그것은 무엇을 위해 사용됩니까? 그것에 대해 더 자세히 읽을 수있는 곳은 어디입니까? 사전 예를 들어
device/sample
폴더의 안드로이드 소스에는 overlays
이라는 폴더가 있습니다. 예를 들어 같은 오버레이 폴더가 표시됩니다. cyanogen mods.Android 소스 오버레이는 어떻게 작동합니까?
이 오버레이 폴더 란 무엇입니까? 어떻게 작동합니까? 그것은 무엇을 위해 사용됩니까? 그것에 대해 더 자세히 읽을 수있는 곳은 어디입니까? 사전 예를 들어
, 당신은 당신의 장치에 안드로이드 소스의 일부 파일을 수정할 상상의
덕분에 (예를 들어, 당신은 실행기 리소스에 추가 문자열을 추가 할). Android의 실제 소스는 수정하지 않는 것이 좋습니다.
대신 Android의 실제 파일 시스템 경로 레이아웃을 모방 한 오버레이를 만들고 변경된 파일을 배치하십시오. Laucher의 문자열의 경우, 경로에 해당하는 디렉토리를 생성합니다. packages/apps/Launcher2/res/values
수정 된 파일을 넣습니다. strings.xml
따라서 장치를 빌드하면이 파일이 대체됩니다.
오버레이는 리소스 파일을 사용자 정의하는 방법으로 소스 파일에는 사용할 수 없습니다.
문자열 단위로 대체합니다. 즉, 오버레이 파일에없는 문자열의 경우 원래 문자열의 해당 문자열이 사용됩니다. brief documentation에서
:
안드로이드 빌드 시스템은 빌드시에 제품을 사용자 정의 할 자원 오버레이를 사용합니다. 리소스 오버레이는 기본값 위에 적용되는 리소스 파일을 지정합니다. 리소스 오버레이를 사용하려면 프로젝트 빌드 파일을 수정하여 PRODUCT_PACKAGE_OVERLAYS를 최상위 디렉토리와 관련된 경로로 설정하십시오. 이 경로는 빌드 시스템이 자원을 검색 할 때 현재 루트와 함께 검색되는 섀도우 루트가됩니다.
가장 일반적으로 사용자 정의 된 설정은 frameworks/base/core/res/res/config.xml 파일에 포함되어 있습니다.
좋아요, 이것은 리소스에만 해당되며 Java 소스는 아닙니다 pressume? –
Java에 대해서도 추측하지만 아직 확인하지 않았습니다. – Yury
내가 수집 할 수 있었던 것부터, Java 소스 파일이 아닌 자원에서만 작동합니다. 따라서 유용성은 제한된 IMO입니다. @Yury : Java 소스 또는 더 읽을 수있는 참조와 함께 사용하는 예가 있습니까? –