Android NDK (Native Development Kit) 란 무엇입니까?


답변:


93

NDK (Native Development Kit)는 Android 기기 용 C / C ++로 프로그래밍 할 수있는 도구입니다. SDK ( "컴패니언 도구"로 설명 됨)와 통합하기위한 것이며 프로젝트의 성능이 중요한 부분에만 사용됩니다. 자세한 내용은 여기 를 참조하십시오.


11
@YoushaAleayoub-Android 기기에서 Java로 작성된 코드는 Java 바이트 코드를 해석하는 시스템 제공 프로그램 인 Java Virtual Machine에서 실행됩니다. C / C ++로 작성된 코드는 CPU에서 직접 실행되는 기계 명령어로 컴파일됩니다. 후자의 코드는 CPU에 고유하기 때문에 "네이티브"코드라고합니다. CPU마다 다른 네이티브 코드 명령어가 필요합니다. 따라서 NDK를 사용할 때 단일 하드웨어 유형 또는 광범위한 CPU에 대한 코드를 생성 할 수있는 옵션이 있으며, 모든 CPU는 애플리케이션의 .apk 파일에 패키징됩니다.
Ted Hopp

따라서 Android에서 OpenCV를 사용하려면 C ++ 버전을 사용하는 것이 더 낫습니까?
user8663682

@ user8663682- Android 버전을 사용하는 것이 좋습니다 . 여전히 NDK를 사용해야하지만 Android 앱에 기능을 노출하는 모든 작업은 이미 완료되었습니다.
Ted Hopp

56

NDK는 애플리케이션 성능을 향상시킬 수 있습니다. 이는 일반적으로 많은 프로세서 바인딩 응용 프로그램에 해당됩니다. 많은 멀티미디어 응용 프로그램과 비디오 게임은 프로세서 집약적 인 작업에 네이티브 코드를 사용합니다. 성능 향상은 세 가지 소스에서 올 수 있습니다. 첫째, 네이티브 코드는 바이너리 코드로 컴파일되어 OS에서 직접 실행되는 반면, Java 코드는 Java 바이트 코드로 변환되고 Dalvik VM (가상 머신)에 의해 해석됩니다 . Android 2.2 이상 에서는 프로그램이 실행되는 동안 Java 바이트 코드를 분석하고 최적화하기 위해 JIT (Just-In-Time) 컴파일러가 Dalvik VM에 추가됩니다 (예 : JIT는 바이트 코드의 일부를 다음으로 컴파일 할 수 있습니다. 실행 전 바이너리 코드). 그러나 대부분의 경우 네이티브 코드는 여전히 Java 코드보다 빠르게 실행됩니다.

Java 코드는 Android의 Dalvik VM에서 실행됩니다. Dalvik VM은 하드웨어 리소스 (메모리 공간, 프로세서 속도 등)가 제한된 시스템을 위해 특별히 설계되었습니다.

NDK의 성능 향상을위한 두 번째 소스는 네이티브 코드를 통해 개발자가 SIMD (Single Instruction Multiple Data) 기술인 NEON과 같이 Android SDK에서 액세스 할 수없는 일부 프로세서 기능을 사용 하여 여러 데이터 요소를 처리 할 수 ​​있다는 것입니다. 병행하여. 특정 코딩 작업의 한 가지 예는 비디오 프레임 또는 사진의 색상 변환입니다. 1920x1280 픽셀의 사진을 RGB 색상 공간에서 YCbCr 색상 공간으로 변환한다고 가정합니다. 순진한 접근 방식은 모든 픽셀 (즉, 2 백만 픽셀 이상)에 변환 공식을 적용하는 것입니다. NEON을 사용하면 한 번에 여러 픽셀을 처리하여 처리 시간을 줄일 수 있습니다.

세 번째 측면은 데스크톱 소프트웨어 개발의 일반적인 관행 인 어셈블리 수준에서 중요한 코드를 최적화 할 수 있다는 것입니다.

불리

NDK는 Android SDK에서 사용할 수있는 많은 API에 직접 액세스 할 수 없으며 NDK로 개발하면 항상 애플리케이션이 더 복잡해집니다.


19

Android NDK는 애플리케이션 개발자가 네이티브 (C / C ++) 코드를 사용하여 앱의 성능이 중요한 부분을 빌드 할 수 있도록하는 Android SDK와 함께 만 사용되는 동반 도구입니다.

이를 통해 기존 코드를 재사용하고 속도를 높일 수 있습니다.

아래 링크를 통해 이동하십시오.

링크 -1

링크 -2

링크 -3


8

안드로이드 NDK는 받는 동반자 도구입니다 안드로이드 SDK 는 네이티브 코드에서 응용 프로그램의 성능이 중요한 부분을 구축 할 수 있습니다. C 또는 C ++로 프로그래밍 할 때 활동을 빌드하고, 사용자 입력을 처리하고, 하드웨어 센서를 사용하고, 애플리케이션 리소스에 액세스하는 등의 작업을 수행 할 수있는 헤더 및 라이브러리 를 제공합니다 . 네이티브 코드를 작성하는 경우 애플리케이션은 여전히 ​​.apk 파일로 패키징되고 기기의 가상 머신 내부에서 실행됩니다. 기본적인 Android 애플리케이션 모델은 변경되지 않습니다.

다음 링크도 질문에 대한 답변입니다.

NDK 란 무엇입니까?

네이티브 코드로 개발해야하는 경우

NDK 다운로드

NDK 앱을 빌드하는 방법

NDK로 작업하는 방법

Android NDK를위한 10 가지 팁


3

Android NDK는 Android 애플리케이션에 네이티브 코드를 사용하는 구성 요소를 포함 할 수있는 도구 세트입니다.

Android 애플리케이션은 Dalvik 가상 머신에서 실행됩니다. NDK를 사용하면 C 및 C ++와 같은 네이티브 코드 언어를 사용하여 애플리케이션의 일부를 구현할 수 있습니다. 이는 기존 코드를 재사용하고 경우에 따라 속도를 증가시키는 형태로 특정 클래스의 애플리케이션에 이점을 제공 할 수 있습니다.

출처 : http://developer.android.com/sdk/ndk/overview.html

Android NDK는 네이티브 코드로 앱의 성능에 중요한 부분을 빌드 할 수있는 Android SDK의 동반 도구입니다. C 또는 C ++로 프로그래밍 할 때 활동을 빌드하고, 사용자 입력을 처리하고, 하드웨어 센서를 사용하고, 애플리케이션 리소스에 액세스하는 등의 작업을 수행 할 수있는 헤더 및 라이브러리를 제공합니다. 네이티브 코드를 작성하는 경우 애플리케이션은 여전히 ​​.apk 파일로 패키징되고 기기의 가상 머신 내부에서 실행됩니다. 기본적인 Android 애플리케이션 모델은 변경되지 않습니다.

출처 : http://developer.android.com/sdk/ndk/index.html


3

NDK는 애플리케이션에 대한 C / C ++ 코드를 작성할 수있는 도구 세트 일뿐입니다. 예를 들어 앱에 중요한 기능 / 성능을 추가하고이를 C / C ++로 작성한 다음 Eclipse 또는 기타 IDE는 C / C ++ 작성을 허용하지 않으며이 경우 NDK를 사용하고 앱에 통합해야합니다.



2

Android NDK (네이티브 개발 키트)

Android NDK (Native Development Kit)는 네이티브 코드로 컴파일되는 C / C ++로 코드를 작성하는 개발자입니다.

왜 그것을 사용해야합니까?

소스 코드는 CPU 용 기계 코드로 직접 컴파일되며 (Java와 같이 중간 언어가 아닌) 개발자는 최고의 성능을 얻을 수 있습니다.

어떻게 사용할 수 있습니까?

여기 최고의 튜토리얼

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.