01 C++ Android NDK [Vsual Studio] -Basic Common Sence
IDE : Visual Studio 2019
Language : C++
Operate : Android
What is NDK? : from Developer.com
The Android NDK is a toolset that lets you implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can help you reuse code libraries written in those languages.
java로 구현하기에 복잡한기능이나 성능향상이 기대 되는 부분을 C나 C++ 언어로 작성하거나 이미 구현된 프로그램을 java에서 사용할 수 있도록 JDK에서 제공하는 것이 JNI(Java Native Interface)이다.
NDK를 사용하면 다음과 같은 이점을 가질 수 있다.
1. 기존에 C로 만들어진 대규모 코드를 JAVA에서 다시 만들 필요없이 재사용이 가능하다.
2. 시스템 디바이스 접근과 JAVA성능을 넘어선 작업이 필요할때 유용하다.
3. 속도 및 성능을 향상시킬 수 있다.
이러한 이점때문에 NDK는 주로 영상처리, 게임, 신호처리, 물리 시뮬레이션 등에 사용된다.
NDK를 활용한 Adroid 개발 방법
1. Android Studio 를 이용 ( Java & C++)
2. Visual Studio 를 이용 (Only C++)
3. 리눅스 환경에서 이용 ( Java & C++)
여기에서는 visual Studio 에서 NDK를 이용해 Android를 개발해 보겠다
How it works?
- 네이티브 공유 라이브러리: NDK는 개발자의 C/C++ 소스 코드에서 이러한 라이브러리 또는 .so파일을 빌드한다.
- 네이티브 정적 라이브러리: NDK는 정적 라이브러리나 .a 파일을 빌드할 수도 있는데, 이들을 다른 라이브러리로 링크할 수 있다.
- 자바 네이티브 인터페이스(JNI): JNI는 자바 및 C++ 구성 요소의 상호 통신 채널 역할을 하는 인터페이스이다.
- 애플리케이션 바이너리 인터페이스(ABI): ABI는 앱의 기계어 코드가 런타임에 시스템과 어떻게 상호작용할지를 정확히 정의한다. NDK는 이러한 정의에 대해 .so 파일을 빌드한다. 다양한 ABI가 각기 다른 아키텍처에 대응된다.
- 매니페스트: 자바 구성 요소가 없는 앱을 작성 중인 경우, 반드시 매니페스트에서 NativeActivity 클래스를 선언해야 한다. 네이티브 액티비티 및 애플리케이션의 "native_activity.h 인터페이스 사용" 제목 아래에서 이 방법의 자세한 설명을 제공했다.
Development flow
- 어떤 부분을 자바로 구현하고 어떤 부분을 네이티브 코드로 구현할지 결정해 앱을 디자인한다.
- 필자는 NativeActivity 코드로만 된 앱을 만들것이다
다른 Android 프로젝트의 경우와 마찬가지로 Android 앱 프로젝트를 만든다.
Referance Video:
Visual-C++-----Step1 Create a project & Figure out the structure of project
Android(C++) NDK [Vsual Studio] -
간단 용어 정리
JNI(Java Native Interface): : 돌아가기
The JNI is a native programming interface. It allows Java code that runs inside a Java Virtual Machine (VM) to interoperate with applications and libraries written in other programming languages, such as C, C++, and assembly.
library.a & library.so : 돌아가기
library.a 는 라이브러리의 정적 버전으로 정적링크되는 버전이다. 최종파일안에 생성된다.
library.so.version 은 공유 라이브러리 버전으로 윈도우즈에 dll과 비슷하다고 생각하시면 되겠다. 프로그램 실행후 필요할 때 불려진다.
같이 디렉터리 안에 같은 이름으로 존재한다면 동적라이브러리가 우선시되어 링킹된다.
'my_lesson > _Android' 카테고리의 다른 글
an_03 (0) | 2020.12.16 |
---|---|
02 Android(C++) NDK [Vsual Studio] - Starting (0) | 2020.12.16 |
Android Apps - Linux_Android Studio 설치 Guide (0) | 2017.07.08 |
Android apps - Image (0) | 2017.07.08 |
Android Apps - Errors (0) | 2017.05.24 |
댓글