안녕하세요
이제 배우고 있는 왕초보입니다.
여기저기서 개념이 안서서 애먹고 있습니다.
먼저 저는 NDK를 사용한 순수 Native Programming을 공부하고 있습니다.
(사실 회사에서 이게 필요해서 하는데 ㅠㅠ 어려워요)
책 보면서 하고 있는데
<< Hellojni를 >>
=============================
1. ndk-build
2. so?/app? 기기에 설치
--> ant install <===== 잘 동작안함( 책의 예제 하려니 build.xml이 없다고 안되네요 ㅠㅠ )
3. 기기 연결
--> adb shell
4. 기기상의 app 실행
--> am start ~~
=============================
이렇게 이해 하면서 책을 보는데
<< 질문 >>
----------------------------------------------------------------------------------------------------
질문0> ndk build는 됬습니다. so 파일만 있는데 타겟에 올려야 하는데 어떻게 해야 하나요?
(ant install가 일단 동작안함)
( 예제 소스라 이클립스 없이 콘솔에서 ndk build OK 만 본 상태입니다.)
질문1> ant가 스크립트 이던데 이놈이 하는일이 기기/에뮬에 so 혹은 apk를 설치하나요? 개념이 ㅠㅠ
질문1.1> so 파일과 apk파일은 다른가요? 같은건가? ㅠㅠ
질문2> ant가 스크립트라 저는 잘 동작안하던데 ant없이 동일한 동작을 하려면 어떻게 해야 하나요? ant가 진리인가요?
예를 들면 ndk-build는 사실 gcc 동작시키는 스크립트이듯
질문3> 일반적인 빌드와 install 디버깅 환경이 어떻게 되시나요?
예, 다들 ndk build를 쓰시며? ant로 install하시며? gdb를 쓰시나요?
질문4> gdb를 이클립스에 연동하는것이 가능? 효율? 적인가요?
----------------------------------------------------------------------------------------------------
정말 두서없는 질문이었습니다.
아 멀 좀 알아야 질문을 ㅠㅠ
짧을 말씀이라도 다 도움이 되니 부탁드릴게요
새해 복 많이 받으세요 ~~
참고로 저도 ndk 를 사용하지만,
ant 는 거의 사용하지 않았고,
디버깅도 logcat 을 사용할 뿐, gdb 는 거의 사용하지 않습니다.
2번정도 써본 기억 ㅋ
답변들 감사합니다 금방 올려주셔서 잘 이해는 안가지만 든든합니다.
질문을 올리고 보니 정작 중요한 제 문제를 못올려서 다시 올렸어요
질문> 예제를 이클립스 없이 ndk-build 만 ok된 상태입니다.
so 파일만 있는데(ant 가 안되는 상태입니다)
기기에 올려서 볼려면 어떻해야 하나요?
질문1.1> 이클립스로 프로젝트를 꼭 생성해야 하나요?
질문1.2> 루팅폰이 있어야 하나요?
질문> 예제를 이클립스 없이 ndk-build 만 ok된 상태입니다.
so 파일만 있는데(ant 가 안되는 상태입니다)
기기에 올려서 볼려면 어떻해야 하나요?
- jni 폴더가 프로젝트 폴더 안에 있으면, ndk-build 끝나면 자동으로 lib/armeabi/~~.so 파일이 생성됩니다.
만약, eclipse 가 프로젝트로 설정되어 있고, 윈도우 환경에서 USB 드라이버 연결 완료, 타겟 기기도 디버깅설정완료 되어 있으면, Run
버튼 하나면 자동으로 apk 생성되어서 기기에 올라가요
질문1.1> 이클립스로 프로젝트를 꼭 생성해야 하나요?
- 위에서 말했듯이 컴파일, apk 생성, 테스트 하려면 eclipse 설치 및 프로젝트 로 관리가 편합니다.
질문1.2> 루팅폰이 있어야 하나요?
- ndk-build & so 적용 , apk 올리는데 루팅폰 필요없습니다.




so 파일은 라이브러리 파일 입니다.
일단 ndkbuild 커멘드를 실행 하시게 되면 so 파일이 생성 되고 자동으로 bin 폴더에서 참조하도록 만듭니다.
1> ant로 스크립트를 짜서 apk 빌드가 가능 합니다.
1.1> 다릅니다. apk는 안드로이드 os에서 동작이 가능하도록 만들어 놓은 프로그램 (실제로는 압축파일에 가깝습니다만)이라 볼 수 있고 so파일은 c나 c++로 작성한 코드를 호출하여 사용할 수있게 만든 라이브러리 입니다.
2> ant 같은 경우 빌드가 조금 복잡해 보일 수 있습니다. 하지만 여러 마켓에 올리는 apk의 경우 일괄 처리로 해결할 수 있기 때문에 상황에 맞게 사용하시는 것이 좋겠죠.
주로 이클립스 설치하고 adt 이용하여 빌드를 하는 것이 간단하고 안드로이드 개발에는 일반적인 방법이라 생각됩니다.
3> ndk를 사용하시는 경우 맥 os 나 리눅스를 사용하시는 경우도 있고 윈도우 환경에 Cygwin을 이용하는 경우도 있습니다.
제 경우에는 윈도우 환경에 Cygwin을 제일 자주 접한거 같습니다.
4> 안드로이드 개발시에 앱단의 경우에는 logcat이라는 로거를 통해 로그를 보고 디버깅을 할 수 있습니다.
ndk의 경우에는 저같은 경우엔 log를 logcat으로 뽑아서 상태확인 및 디버깅 작업을 하여 gdb는 사용해본적은 없습니다.
그래서 효율적인지는 잘 모르겠습니다.
새해 복많이 받으세요.
[출처] Android NDK 설치하기|작성자 날랜손깔