Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- fscanf
- interrupt context
- usb2.0
- activities
- sscanf
- 디스크 축소
- 속도저하
- 문자형 디바이스 파일
- context
- fprintf
- context switch
- sprintf
- ubuntu
- pagefile.sys
- DMA
- gparted
- jenkins
- makefile
- HDR
- intents
- 환경 변수
- interrupt handler
- memcmp
- 소캣
- layouts
- 멀티프로세싱
- 디스크립터
- 젠킨스
- 프레임버퍼
- Shared Folder
Archives
- Today
- Total
do{학습}while
AOSP) 안드로이드 시스템 내 SDK 생성 본문
AOSP 환경에서 간단한 SDK를 만들어보겠습니다.
해당 SDK는 안드로이드 시스템에서 베터리 상태를 확인하는 라이브러리를 구성해보겠습니다.
빌드 환경 설정, 타겟을 설정, 시스템 전체 빌드
source ./build/envsetup.sh
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
m
디렉토리 구성
frameworks/
└── base/
└── libs/
└── batteryutils/
├── Android.bp
└── src/
└── com/
└── example/
└── batteryutils/
└── BatteryUtils.java
frameworks/base/libs은 안드로이드 프레임워크에서 사용하는 라이브러리입니다. 이 디렉토리에는 안드로이드 시스템과 다양한 기능을 지원하는 공통 라이브러리들이 포함되어 있습니다.
저는 해당 디렉토리에 SDK(라이브러리)를 생성하기 위한 디렉토리를 만들어 보겠습니다.
빌드 스크립트(Android.bp)
java_library {
name: "batteryutils",
srcs: ["src/**/*.java"],
//특정 하나의 파일을 포함시키고 싶을땐
//srcs: ["src/com/example/batterytutils/BatteryUtils.java"]
}
해당 디렉토리는 자바 라이브러리를 만들기 위한 빌드 스크립트입니다.
코드를 보면 모듈 타입이 java_library입니다. 해당 타입은 자바 코드를 빌드하여 라이브러리(.jar)를 생성하기 위한 모듈 타입니다. 그렇게 생성된 파일은
라이브러리 이름은 "battaryutils"이고 빌드 후에 "batteryutils.jar" 파일이 생성되게 됩니다.
scrs 속성의 값이 "src/**/*.java"입니다. 해석하자면 src 디렉토리 하위에 모든 .java 파일들을 빌드에 포함시키겠다는 의미입니다.
라이브러리 소스 코드
package com.example.batteryutils;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
public class BatteryUtils {
// 배터리 상태를 반환하는 메서드
public static int getBatteryLevel(Context context) {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
return (int) ((level / (float) scale) * 100);
}
}
베터리 상태를 정수로 반환하는 코드를 작성하였습니다.
빌드
cd framework/base/libs/batterytutils
mm
빌드할 모듈 디렉토리로 이동 후에 현재 디렉토리 기준으로 빌드를 진행하는 명령어인 mm을 실행해줍니다.


aosp 환경에서 SDK를 만들어 보았습니다.
out/target/product/<product_name>/obj/JAVA_LIBRARIES/<모듈이름>_intermediates에 정상적으로 java 라이브러리가 생성되었습니다.
'AOSP' 카테고리의 다른 글
| AOSP) Android.bp 작성하는 법 (0) | 2024.09.05 |
|---|---|
| AOSP) 모바일 앱을 위한 SDK 개발해보기 (2) | 2024.09.02 |
| AOSP) 빌드 시스템 [3] : 빌드 중, 빌드 끝 (0) | 2024.08.29 |
| AOSP) 빌드 시스템 [2] : Product, Board, Module 정보 전달 (0) | 2024.08.28 |
| AOSP) 빌드 시스템[1] : Build System (0) | 2024.08.27 |