[Android] Android.mk 이해하기, 빌드 환경 설정, Android.bp로 변환
2020. 5. 18. 09:59
■ Android.mk를 Android.bp로 변환하는 방법
■ Android.bp에 Jni 빌드 포함하는 방법
Android.bp
android_app {
name: "XXXService",
...
jni_libs: ["AAAJni"],
}
cc_library_shared {
name: "AAAJni",
shared_libs : [
"liblog",
],
header_libs: ["jni_headers"],
srcs: [
"cpp/**/*.cpp"
]
}
■ Android.mk 기본 이해
LOCAL_PATH := $(call my-dir)
이 변수는 개발 트리에 있는 소스 파일의 위치 나타냄.
빌드 시스템이 제공하는 매크로 함수 my-dir는 현재 디렉터리의 경로 반환.
즉 Android.mk 파일 자체를 포함한 디렉터리 경로임.
include $(CLEAR_VARS)
이 변수는 LOCAL_MODUE, LOCAL_SRC_FILES 및 LOCAL_STATIC_LIBRARIES와 같은 여러 LOCAL_xxx변수를 자동 삭제하는 GNU Makefile.
LOCAL_PATH는 삭제하지 않음.
LOCAL_MODULE := hello-jni
이 변수는 빌드하려는 모듈 이름을 저장.
앱에서 모듈당 한 번씩 이 변수 사용.
이름에 알맞은 접두사와 접미사를 자동으로 추가하여 so파일의 라이브러리 생성.
위의 예시에서는 libhello-jni.so라는 라이브러리 생성.
만약 libfoo.c인 소스 파일은 계속 libfoo.so라는 공유 객체 파일을 생성.
LOCAL_SRC_FILES := hello-jni.c
소스파일 열거. 공백으로 여러 파일을 구분.
이 변수에 모듈에 빌드할 C 또는 C++ 소스 파일의 목록을 포함해야함.
include $(BUILD_SHARED_LIBRARY)
위 행은 시스템이 모든 것을 하나로 연결하게 도와줌.
이 변수는 가장 최근의 include 이후로 LOCAL_XXX 변수에 정의한 모든 정보를 수집하는 GNU Makefile 스크립트를 가리킴.
이 스크립트에 따라 빌드할 대상과 그 방법이 결정됨.
LOCAL-CFLAGS
이 선택적 변수는 C 및 C__ 소스 파일을 빌드 할 때 빌드 시스템에 전달하도록 할 컴파일러 플래그 설정.
매크로 정의나 컴파일 옵션을 추가로 지정할 떄 유용하게 쓰임.
C++용 플래그만 지정하려면 LOCAL_CPPFLAGS를 사용.
Android.mk 파일의 최적화/디버깅 수준을 변경하지 않는 것이 좋음.
참고
Android Develoopers > NDK > 가이드 > Android.mk
https://developer.android.com/ndk/guides/android_mk?hl=ko
'Android' 카테고리의 다른 글
Android.bp 파일이란? (0) | 2021.02.18 |
---|---|
[Android Studio] Bundle값 출력 (0) | 2021.01.22 |
Junit4 Annotation 목록들 (0) | 2020.12.10 |
[Android Studio] Broadcast Receiver란? (0) | 2020.05.05 |
[Android Studio] EditText, Plain Text에 Placeholder(안내문) 삽입하기 (0) | 2020.03.23 |