분류 전체보기 298

[빌드-기능 출시 플래그] 빌드 플래그 선언 및 사용

빌드 플래그는 빌드 시간 상수이며 런타임 중에 변경할 수 없습니다. 이러한 플래그는 다음과 같이 aconfig 플래그를 사용할 수 없는 상황에서 사용됩니다.빌드에 선택적으로 포함하려는 사전 컴파일되거나 사전 빌드된 코드가 있습니다.빌드 시스템 자체를 변경하려고 합니다.코드 크기를 관리하기 위해 종속 항목에 플래그를 배치하려고 합니다.기능 출시를 관리하려고 하는데 시스템에서 aconfig 플래그를 사용할 수 있게 되기 전에 플래그의 값을 확인해야 합니다.   1.  빌드 플래그 선언  빌드 플래그는 textproto 파일에 선언됩니다. 빌드 플래그를 선언하는 방법은 다음과 같습니다.WORKING_DIRECTORY/build/release/flag_declarations/까지 경로 안내RELEASE_MY_F..

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] 런타임 시 플래그 값 변경

Android를 빌드한 후 aconfig 플래그 값을 변경할 수 있는지 확인합니다.참고: 런타임에는 aconfig 읽기-쓰기 플래그의 값만 변경할 수 있습니다.런타임 시 aconfig 플래그 값을 변경하려면 다음 단계를 따르세요.  기기가 실행 중이고 개발 머신에 연결되어 있는지 확인합니다.플래그의 현재 설정을 확인합니다.adb shell aflags list | grep package.flagname플래그가 사용 설정되어 있고 코드가 실행 중인 경우 4단계를 계속하여 플래그를 사용 중지합니다. 플래그가 사용 중지된 경우 6단계로 건너뛰어 코드를 사용 설정합니다.코드를 사용 중지합니다. 명령줄에서 다음을 실행합니다.  adb shell aflags disable your.full.flag.name예를 들..

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] 기능 실행 플래그 값 설정

기본적으로 모든 기능 출시 플래그는 READ_WRITE이며 DISABLED로 설정됩니다. 기능을 테스트하려면 먼저 플래그의 플래그 값 파일을 만들어 빌드에 사용되는 기본값을 재정의해야 합니다. 플래그 값 파일에서 개별 플래그의 상태 (ENABLED 또는 DISABLED)와 권한(READ_WRITE 또는 READ_ONLY)을 설정합니다.출시 구성은 특정 Android 빌드의 모든 플래그 값 파일 (특정 기능 사용 설정 및 사용 중지됨)이 포함된 디렉터리입니다.AOSP는 trunk_staging와 같은 몇 가지 출시 구성과 함께 제공됩니다. 출시 구성 디렉터리는 WORKING_DIRECTORY/build/release/aconfig/에 있습니다.참고: 이 페이지에서는 출시 구성의 작동 방식을 설명하기 위한 ..

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] 기능 출시 플래그로 코드 변경사항 래핑

다음 예는 코드 변경사항을 플래그로 래핑하는 방법을 보여줍니다.   if (Flags.myNewFlag()) {    // execute untested code  } else {    // continue as though untested code isn't present  }이전 예에서 aconfig 도구는 플래그 값을 확인하는 데 사용되는 mynewFlag라는 메서드를 생성했습니다. true이면 새 코드가 실행됩니다. false인 경우 흐름이 정상적으로 계속됩니다.

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] aconfig 플래그 선언

Java, C, C++, Rust 코드에서 aconfig 플래그를 사용할 수 있습니다. AOSP 빌드 시스템은 각 플래그 값에 액세스하는 데 사용할 수 있는 언어별 메서드 라이브러리를 생성하는 데 사용되는 aconfig라는 도구를 실행합니다. 라이브러리를 생성하려면 먼저 플래그를 선언하고 빌드에 추가해야 합니다.   1.  Java의 aconfig 플래그 선언 Java의 aconfig 플래그를 선언하려면 다음을 실행합니다.새 코드가 있는 디렉터리에서 확장자가 .aconfig인 파일을 만듭니다(예: my_new_aconfig_flag_declarations.aconfig). aconfig 파일은 표준 스키마를 따르는 텍스트 proto 파일입니다.다음과 유사한 플래그 선언을 추가합니다.package: "co..

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] 플래그 사용 및 유형 확인

기능 실행 플래그는 안정적인 코드 브랜치를 보장하기 위한 방법으로 Google에서 사용합니다. 이러한 플래그는 특정 유형의 AOSP 기여에도 필요합니다. 기능 출시 플래그를 구현하기 전에 변경에 플래그가 필요한지 결정합니다. 플래그가 필요한 경우 사용할 플래그의 유형을 결정해야 합니다    1.  플래그 사용 확인 기능 실행 플래그를 사용할 시기를 결정하려면 다음 가이드라인을 따르세요.새 기능을 추가하거나 특히 복잡한 버그를 수정하는 등 AOSP 코드베이스가 불안정해질 수 있는 변경사항을 적용하는 경우 기능 출시 플래그를 사용하세요.반대로 코드베이스의 불안정성을 유발하지 않는 코드 변경(예: 주석 수정)을 하는 경우에는 기능 출시 플래그를 사용할 필요가 없습니다.    2.  플래그 유형 확인 플래그에는..

Android OS/: : AOSP 2025.02.27

[빌드-기능 출시 플래그] 기능 출시 플래그란?

1.  기능 출시 플래그 개요   AOSP에 코드를 추가할 때는 기능 출시 플래그를 사용하여 테스트되지 않은 코드를 테스트된 코드와 격리합니다. 기능 출시 플래그를 사용 설정하여 코드를 실행하고 테스트합니다. 반대로 기능 출시 플래그를 사용 중지하여 테스트되지 않은 코드가 실행되지 않도록 합니다.기능 출시 플래그는 주로 다음 두 가지 방법으로 사용됩니다.AOSP에 기여하는 경우 변경사항 검토자가 기능이 제대로 테스트될 수 있도록 기능 출시 플래그를 구현하도록 요청할 수 있습니다. 브랜치에 관한 자세한 내용은 출시 수명 주기를 참고하세요.Google은 기능 출시 플래그를 사용하여 외부 개발 브랜치(기본)와 출시 브랜치가 모든 사용자에게 안정적일 수 있도록 합니다. 회사에서 AOSP의 미러를 유지하고 해당 ..

Android OS/: : AOSP 2025.02.27

[빌드] Android 빌드

Android 빌드 bookmark_border다음 안내에 따라 Android 빌드를 시작합니다.환경 설정다음과 같이 envsetup.sh 스크립트로 환경을 초기화합니다. source build/envsetup.sh또는 . build/envsetup.sh기기 타겟 선택을 위한 lunch 및 번들되지 않은 앱(예: 참조 TV 앱) 빌드를 위한 tapas를 비롯한 관련 명령어 설명은 platform/build/envsetup.sh의 스크립트를 참고하세요.repo sync를 실행한 후에는 이 명령어를 매번 다시 실행하여 스크립트의 변경사항을 가져와야 합니다. source를 .(점 하나)로 대체하면 사용되는 문자를 줄일 수 있으며 문서에서는 짧은 형식이 더 많이 사용됩니다.envsetup.sh 스크립트는 이 실..

Android OS/: : AOSP 2025.02.27

[빌드 환경 구축]

중요: MacOS에서 플랫폼 개발은 2021년 6월 22일부터 지원되지 않습니다.경고: Python 2 지원 종료에 설명된 대로 Python 2 지원은 2020년 1월 1일에 종료되었습니다. 모든 주요 Linux 배포판에서 Python 2 패키지 지원이 중단됩니다. 모든 스크립트를 Python 3로 이전하는 것이 좋습니다.참고: AOSP는 Python 2 및 Python 3 패키지의 자체 사본과 함께 제공되므로 소스 트리에 포함된 버전(예: SEPolicy)을 사용할 수 있습니다. Google에서는 Android 소스 트리의 모든 스크립트를 Python 3로 이전하므로 삽입된 Python 2 사본이 지원 중단될 수도 있습니다.자세한 내용은 Python 2 코드를 Python 3로 포팅과 Python 2 ..

Android OS/: : AOSP 2025.02.27

[빌드-개요] 특수 모듈

일부 특수 모듈 그룹에는 고유한 특성이 있습니다.기본 모듈기본 모듈을 사용하여 여러 모듈에서 동일한 속성을 반복할 수 있습니다. 예: cc_defaults { name: "gzip_defaults", shared_libs: ["libz"], stl: "none",}cc_binary { name: "gzip", defaults: ["gzip_defaults"], srcs: ["src/test/minigzip.c"],}사전 빌드된 모듈일부 사전 빌드된 모듈 유형은 소스 기반의 모듈과 동일한 이름을 가질 수 있습니다. 예를 들어 같은 이름의 cc_binary가 이미 있는 경우 foo라는 이름의 cc_prebuilt_binary가 있을 수 있습니다. 이를 통해 개발자는 최종 제품..

Android OS/: : AOSP 2025.02.27