| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- fprintf
- DMA
- intents
- HDR
- fscanf
- 젠킨스
- context
- activities
- context switch
- gparted
- 멀티프로세싱
- 속도저하
- 프레임버퍼
- memcmp
- 소캣
- interrupt handler
- pagefile.sys
- jenkins
- 문자형 디바이스 파일
- layouts
- makefile
- Shared Folder
- interrupt context
- ubuntu
- sprintf
- sscanf
- 디스크립터
- usb2.0
- 환경 변수
- 디스크 축소
- Today
- Total
목록분류 전체보기 (78)
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..
설치 이후 간단하게 테스트를 해보기 위해 Github 상에 있는 Jenkinsfile을 동작시켜보는 방법을 써보겠습니다.Jenkinsfile 작성pipeline { agent any stages { stage('Hello') { steps { echo 'Hello World' } } }}간단하게 콘솔에 문자열을 출력하는 Jenkinsfile입니다.프로젝트 Github에 푸쉬Github에 나의 프로젝트와 Jenkinsfile을 함께 푸쉬하였습니다.Jenkinsfile의 위치는 프로젝트 루트디렉토리에 위치시켰습니다. Jenkins에게 Jenkinsfile이 어디에 위치하고 있는 알려줘야 합니다.필요한 ..
Jenkins 설치 방법아래 링크를 따라 Jenkins를 설치하였고 설치 과정중에 마주한 에러들을 아래 첨부해놨습니다. https://myminju.tistory.com/115 Ubuntu에 Jenkins 설치하기 (23.3.28 서명키 업데이트)설치 환경 NHN Cloud Ubuntu 20.04 LTS Jenkins 2.397 ⚠️ 주의 ! 2023년 3월 28일부터 Linux 설치 패키지에 대한 새로운 레포지토리 서명 키를 사용합니다. Jenkins 2.397 설치하기 전에 새 서명 키로 설치해야 합myminju.tistory.com Error: Jenkins 설치 시 필요한 패키지 설치docker-desktop : PreDepends: init-system-helpers (>= 1.54~) but ..
Jenkins는 CI/CD 파이프라인을 구축하고 관리하는데 사용됩니다.위에 그림을 보면, jenkins는 개발자가 코드를 버전관리 툴에 업로드 하거나, 주기적으로(trigger) 빌드부터 테스팅, 배포까지 과정을 자동화하는 도구입니다. CI/CD란?CI는 Continuous Integration의 약자, 지속적 통합을 의미합니다.변경 사항을 지속적으로 감지하고 빌드 및 테스트를 자동적으로 진행합니다. 이 과정에서 코드가 통합되는 것이 CI입니다. CD는 Continuous Delivery의 약자, 지속적 배포라는 의미를 가지고 있습니다.개발자가 코드를 수정하거나 주기적으로 자동으로 빌드, 테스트, 배포를 수행할 수 있게 도와줍니다. Jenkins를 사용하여 자동화를 함으로써 효율적으로 개발 또는 코드 관..
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에..