| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 27 | 28 | 29 | 30 | 31 |
- interrupt context
- ubuntu
- Shared Folder
- 소캣
- interrupt handler
- fscanf
- gparted
- HDR
- activities
- intents
- 프레임버퍼
- 젠킨스
- sscanf
- DMA
- sprintf
- pagefile.sys
- 속도저하
- fprintf
- layouts
- jenkins
- 환경 변수
- 멀티프로세싱
- memcmp
- 디스크 축소
- context
- 디스크립터
- context switch
- usb2.0
- 문자형 디바이스 파일
- makefile
- Today
- Total
목록AOSP (16)
do{학습}while
AOSP 환경에서 간단한 SDK를 만들어보겠습니다. 해당 SDK는 안드로이드 시스템에서 베터리 상태를 확인하는 라이브러리를 구성해보겠습니다. 빌드 환경 설정, 타겟을 설정, 시스템 전체 빌드source ./build/envsetup.sh lunch aosp_cf_x86_64_phone-trunk_staging-userdebugm 디렉토리 구성frameworks/└── base/ └── libs/ └── batteryutils/ ├── Android.bp └── src/ └── com/ └── example/ └── batteryutils/ ..
이전에 AOSP 빌드 시스템에 대해서 설명하면서 Android.bp를 언급한적이 있습니다. AOSP 빌드 스크립트 중 하나인 Android.bp를 자세히 알아보고 빌드스크립트를 어떤 방식으로 작성하는지 알아보겠습니다. Android.bp의 기본적인 구조 { : , : , ...} 기본적으로 Android.bp는 빌드 타입을 정하여 빌드 목적을 정하고 key:value 형태로 빌드 속성들을 설정해줄 수 있습니다.빌드 타입빌드 타입은 모듈의 유형을 정의합니다. 정의된 빌드 타입에 따라 출력 파일의 타입도 결정되게 됩니다.빌드 타입을 나열하면..package프로젝트나 특정 디렉토리 내의 라이선스 정보를 지정하고 관리Android.bp 파일에서 package 모듈 타입은 Makefile에서의 i..
SDK란SDK는 Software Development Kit의 약어로서 소프트웨어를 개발을 위한 도구입니다. SDK는 프레임워크, 라이브러리, API와 같이 누군가 이미 구현이 되어 있어 편리하게 기능을 이용할 수 있는 도구입니다. 음 예를 들어보자면, 비동기 처리를 구현하기 위해서 직접 구현을이 가능하겠지만 구현하기까지 많은 시간이 소요가 될 것 입니다. 그래서 개발자들은 이러한 수고를 덜기 위해 RxJava와 같이 이미 다른 개발자들이 구현하여 재사용을 할 수 있는 코드를 가져와 프로그램을 짤때 이용하게 됩니다. SDK 생성해보기프로젝트 생성앱 상에서 SDK 사용 테스트를 진행하기 위해 프로젝트를 생성해줍니다.SDK(라이브러리 모듈) 생성file -> New -> Create New ModuleAnd..
Intermediates위치: /out/*intermediates Intermediates는 빌드 과정에서 생성되는 중간 파일들이 저장되는 디렉토리입니다. 빌드 결과물을 저장하는 out 디렉토리 내부에 숨김 디렉토리로 된 Intermediates 디렉토리가 존재하는 것을 확인할 수 있다.Intermediates 디렉토리 내부에는 빌드 과정에서 생성되는 임시 파일들이 저장됩니다. 예를 들어 컴파일된 클래스 파일, 리소스 파일 등과 같은 파일들이 Intermediates 디렉토리에 저장됩니다. 그렇게 해당 디렉토리에 저장함으로써 다음 빌드 시 수정이 되어 다시 빌드가 필요한 파일들만 빌드하면되어 빌드를 효율적으로 빌드 할 수 있습니다.output위치: /out/target/product/ 빌드 과정에서 생성..
Product description각 제품들의 makefile(Single Product .mk)이전에 lunch 명령어를 공부할때 lunch 명령어의 인자로 product_name을 전달했습니다.시스템에서 lunch 명령어로 전달된 product_name은 빌드할 제품을 지정하는 중요한 역할을 하며, 이를 통해 어떤 Product.mk 파일을 참조할지 결정됩니다. 각 Product makefile에는 어떤 내용이 있을까?product_name: 제품의 이름product_device: 디바이스의 이름product_brand: 브랜드 이름product_model: 모델명그 밖에 빌드 조건(MODULE_BUILD_FROM_SOURCE, PRODUCT_USE_DYNAMIC_PARTITIONS 등..)Andro..
위 그림은 상위 레벨의 빌드 시스템 구조를 표현한 그림입니다.빌드 순서위에 그림을 보면빌드 환경 설정(./envsetup.sh)을 하고 빌드할 타겟을 결정(lunch)Product, Board, Module 정보를 로드main.mk(빌드 규칙을 설정, 컴파일, 링크, 실행파일 또는 라이브러리 생성)을 실행 시스템 이미지, 부팅 이미지 생성최종 결과물 출력 디렉토리에 저장Build ConfigurationCore(main.mk)main.mk를 실행함으로써 설정(빌드를 위한 초기화 작업, 전역변수 선언), 정의(매크로, 함수, 규칙), 주요 빌드 규칙 정의, 빌드 클린 규칙 정의가 이루어집니다.Configurationconfig.mk(build/make/core/config.mk)에 의거하여 다양한 빌드를 ..
Makefile과, Soong이 AOSP에서 사용하는 빌드 도구 입니다. 이 두 빌드 도구는 AOSP 내의 소스코드를 컴파일하고 패키징하여 최종적으로 실행 가능한 안드로이드 이미지를 생성하는 역할을 합니다.Makefile ( Android.mk )Makefile은 전통적인 빌드 도구 입니다. 안드로이드 7 버전까지 Makefile로 빌드를 진행하였습니다. Makefile은 타겟(target)과 규칙(rules)와 같은 요소로 이루어져있습니다. 그리고 Makefile은 의존성 관리를 통해 변경된 파일들만 다시 컴파일하게 설계가 되어 있어 빌드 시간을 단축할 수 있습니다.하지만 Makefile의 복잡성, Makefile의 빌드 속도의 한계, Soong의 직관적이고 가독성 높은 구문으로 인해 Makefile에..
"source build/envsetup.sh" 명령어를 실행하여 안드로이드 소스코드로 작업할 수 있는 명령어를 불러 올 수 있습니다. "hmm" 명령어를 실행하면 활성화된 명령어들의 목록을 확인할 수 있습니다.명령어 종류launchlaunch 명령어는 빌드할 타겟을 선택하는 명령어입니다. launch -product_name : 빌드할 디바이스의 이름build_variant : 특정 디바이스 빌드를 어떻게 구성할지 정의build_variant 타입eng(Engineering) : 모든 디버깅 기능 활성화, 코드 최적화 적게 진행, 가장 많은 로그 메시지, 테스트 기능 포함userdebug : 디버깅 기능 추가, 일반 사용자 빌드와 비슷한 성능 및 최적화, 디버깅 목적으로 주로 사용u..
ADB(Android Debug Bridge)는 안드로이드 디바이스와 컴퓨터를 연결해 다양한 작업을 수행할 수 있는 명령어 도구입니다. ADB는 주로 개발자들이 앱을 디버그하거나 안드로이드 시스템을 제어하는 데 사용합니다. 몇 가지 주요 ADB 명령어와 그 설명을 정리해봤습니다.명령어adb rootadb를 사용하여 디바이스의 루트 사용자 권한으로 명령을 실행할 수 있도록 하는 명령어입니다.adb unroot루트 사용자 권한을 해제하는 명령어 입니다.adb remount시스템 파티션을 읽기-쓰기 모드로 마운트하는 명령어참고: 경우에 따라 재부팅을 해야 시스템 파티션 읽기-쓰기 모드기 적용이 된다.adb sync안드로이드 디바이스와 호스트 컴퓨터 간 특정 디렉토리나 파일을 동기화하는 데 사용되는 명렁어입니다..
Settings 앱의 리소스 파일을 수정하고 빌드하여 앱 내의 텍스트를 변경해보도록 하겠습니다. 1. "Network & internet" 섹션의 텍스트 변경 Settings 앱의 리소스 파일을 수정하여 앱의 텍스트를 수정할 수 있습니다. 리소스파일 위치: packages/apps/Settings/res/values/strings.xml strings.xml 파일 내에는 다양한 UI 요소에 사용되는 문자열 리소스가 정의되어 있습니다."Network & internet" 섹션의 제목을 변경하려면Network & internetHello AOSPname 속성값 "network_dashboard_title" 식별자를 통해 문자열을 참조할 수 있고 Network & internet 섹션의 제목을 수정할..