Android/Android
(작성중) [Android] AIDL 플랫폼 빌드 예제 - (1) 간단하게 AIDL만 빌드
2026. 1. 30. 01:00반응형
vendor/mycompany/interfaces/myinterface/
├── Android.bp
└── aidl/
└── com/
└── example/
└── IMyService.aidl
Android.bp
aidl_interface {
name: "com.example.myservice",
vendor_available: true,
srcs: ["aidl/com/example/*.aidl"],
// path 대신 local_include_dir를 사용합니다.
local_include_dir: "aidl",
stability: "vintf",
owner: "mycompany",
backend: {
java: { enabled: true },
ndk: { enabled: true },
},
}
IMyService.aidl
package com.example;
@VintfStability
interface IMyService {
/**
* 간단한 숫자 합산 예제
*/
int addNumbers(int a, int b);
/**
* 서비스 상태 확인
*/
String getStatus();
}
빌드 명령어
m com.example.myservice-freeze-api
참고
m com.example.myservice-update-api
1. 개별 인터페이스 빌드 (확인용)
작성한 Android.bp가 문법적으로 맞는지, AIDL 파일에 오류가 없는지 확인하려면 아래 명령어를 사용합니다.
Bash
# 전체 빌드 환경 초기화 (AOSP 루트에서 실행)
source build/envsetup.sh
lunch <your_target_device_combo>
# 특정 AIDL 인터페이스만 빌드
# m <모듈이름>-<백엔드>
m com.example.myservice-V1-ndk
m com.example.myservice-V1-java
참고: 이름 뒤에 -V1-ndk 처럼 버전과 백엔드 명칭이 붙습니다. 첫 빌드 시 버전을 명시하지 않았다면 보통 V1이 기본값입니다.
2. 다른 모듈에서 참조하기 (실제 사용)
보통 AIDL만 따로 빌드하기보다는, 이를 사용하는 **서비스(Server)**나 클라이언트(Client) 모듈의 Android.bp에 의존성을 추가하여 함께 빌드합니다.
C++ (NDK) 서비스의 경우
코드 스니펫
cc_binary {
name: "my_service_daemon",
vendor: true,
srcs: ["main.cpp"],
shared_libs: [
"libbinder_ndk",
"com.example.myservice-V1-ndk", // 생성된 NDK 라이브러리 추가
],
}
Java 앱/서비스의 경우
코드 스니펫
android_app {
name: "MyClientApp",
platform_apis: true,
static_libs: [
"com.example.myservice-V1-java", // 생성된 Java 라이브러리 추가
],
}
3. 유용한 빌드 팁
- 인터페이스 업데이트 시: AIDL 파일을 수정했다면 빌드 시스템이 변경 사항을 감지합니다. 하지만 stability: "vintf"가 설정된 경우, 나중에 인터페이스를 고정(frozen: true)하게 되면 API 변경 시 m update-api 명령어를 통해 API 덤프를 업데이트해야 할 수도 있습니다.
- 출력물 확인: 빌드된 결과물(.so 파일이나 .jar 파일)은 아래 경로 근처에서 찾아볼 수 있습니다.
- out/soong/.intermediates/<경로>/com.example.myservice-V1-ndk/
반응형
'Android > Android' 카테고리의 다른 글
| [Android] AOSP 환경에서 빌드 예제 (0) | 2026.01.26 |
|---|---|
| (작성중) [Android] Android.mk와 AIDL (0) | 2026.01.21 |
| [Android] te 파일에 대해 (Sepolicy) (0) | 2026.01.21 |
| [Android] Android AIDL 통신 (작성중) (0) | 2026.01.19 |
| [Android] Android ACTs (0) | 2025.08.19 |
