Android SDK와 NDK의 가장 큰 차이는 "어떤 언어와 목적을 사용하느냐"입니다.
간단히 말하면:
SDK (Software Development Kit) → 안드로이드 앱을 만드는 기본 개발 도구 (Java/Kotlin 중심)
NDK (Native Development Kit) → C/C++ 같은 네이티브 언어를 사용하여 고성능 처리를 하기 위한 개발 도구
입니다.
1. Android SDK
일반적인 안드로이드 앱 개발에 사용하는 도구입니다.
구조:
Android 앱
|
├── Kotlin
└── Java
|
↓
Android SDK
|
↓
Android Framework
사용 분야:
화면(UI) 제작
버튼, 화면 이동
데이터 저장(SQLite)
네트워크 통신
센서 사용
카메라 사용
위치 정보
알림
앱 관리
예:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
이런 일반 앱 코드는 SDK 영역입니다.
2. Android NDK
NDK는 C/C++ 코드를 안드로이드 앱 안에서 실행하기 위한 도구입니다.
구조:
Android 앱
Kotlin / Java
|
|
JNI
|
↓
C / C++ (NDK)
|
↓
Native Library (.so)
사용 분야:
3D 게임 엔진
영상 처리
이미지 처리
AI 연산
음성 처리
고속 계산
하드웨어 제어
예:
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_test_MainActivity_add(
JNIEnv *env,
jobject obj,
jint a,
jint b)
{
return a + b;
}
이런 코드는 NDK 영역입니다.
SDK와 NDK 비교
구분 Android SDK Android NDK
주 언어 Kotlin, Java C, C++
목적 일반 앱 개발 고성능 처리
난이도 비교적 쉬움 어려움
메모리 관리 JVM이 관리 직접 관리
속도 충분히 빠름 매우 빠름
사용 빈도 대부분 앱 특정 분야
예를 들어 농업 앱을 만든다면
선생님께서 생각하시는:
작물 데이터 관리
CSV 읽기
SQLite 저장
병해충 조회
화면 표시
이런 앱은:
Kotlin + Android SDK
|
↓
SQLite / CSV / UI
이면 충분합니다.
하지만:
드론 영상 분석
잎 사진으로 병해충 AI 판별
실시간 영상 처리
같은 기능이 들어가면:
Android SDK
+
Android NDK(C++)
+
AI 라이브러리
구조가 될 수 있습니다.
비유하면:
SDK = 자동차 운전석과 일반 조작 장치
NDK = 엔진 내부를 직접 튜닝하는 기술
이라고 볼 수 있습니다.
따라서 현재 선생님이 개발하시는 작물 데이터 조회 앱, CSV·SQLite 기반 앱은 SDK 중심으로 개발하는 것이 맞고, 나중에 영상 분석이나 AI 기능을 넣을 때 NDK를 검토하는 방향이 적합합니다.