NDK : javah 문제(.h 안만들어질때 Could not find~)

Posted by ITPangPang
2016. 7. 14. 00:14 안드로이드(android)/알아두면 좋은것


NDK : javah 문제

(.h 안만들어질때 Could not find~)


ㆍ 요즘 안드로이드 스튜디오로 OpenCV를 써야되서

    NDK부터 차근차근 하는데 정말 오류가 많이 난다..


ㆍ 저는 데스크탑 2대, 노트북1대로 정확히 같은경로로

    똑같이 개발환경 구축해봤는데 정말 다 똑같이 했는데도

    데스크탑 1대가 정말 말썽을 부렸습니다.



그 말썽 부렸던 부분중 아주 간단한 문제가

.h파일이 안만들어질때였는데

(뒤에 나올 오류에 비하면 이정도는..)


다른 피씨에서는

대충

static{
System.loadLibrary("hello");
}
public native String hello();


여기까지 하고 jni 폴더 만들고

MainActivity에서 우클릭해서

javah 누르면 알아서 jni폴더에


이렇게 잘 만들어졌는데

데탑 한대에서는 

죽어도 안되는 것이다..


자꾸 MainActivity를 못찾는다고 한다..

그래서 대충 삽질해보니 해결방법이

몇개 있다..


1. 앱을 한번 실행시킨다.

2. Clean Project - Rebuild Project 해준다.


뭐 여기까지는 괜찮다.

이래도 안되는 경우가 있더라..


그때는 최후의 수단으로 

Terminal을 사용해야 한다


Terminal은


여기서 들어가면 되고

클릭해보면 대충

cmd 한거랑 똑같다.


여기서 javah ~ 써주면 되는데

여기서도 뻘짓좀 했다..


처음엔 MainActivity 경로를 

쫙 써주면 된다는데

이게 또 되는사람이 있고 

안되는사람이 있다


이걸 성공하면 또 support/v7 없다고 난리치는 경우도 있고

v7까지 써주면 또 v4가 없다고 난리치는 경우도 있다


그래서 저는 걍 전부 다 써줘버렸습니다.

- android.jar;

- android-support-v7-appcompat.jar;

- android-support-v4.jar;


이거 3개 추가해준 다음에

MainActivity까지 써주니

잘 작동했습니다.


위에 3개의 경로는

[AppData]-[Local]-[Android]-[sdk]

까지 동일하고


android.jar은

[platforms]-[android-23]에서(전 23으로 했습니다)


support v4, v7은

[extras]-[android]-[support]-[v7]-[appcompat]-[libs]


뭐 보여줄필요까지는 없었지만

여기까지는 그냥 대충 넘어가셔도 되고

터미널에 쫙 ~ 써주시면 됩니다.


먼저 결과사진 먼저 보면

(가릴부분이 좀 있어서 가렸습니다..)


좀 길어보이긴 하는데 자세히 보면

그냥 단순하게 경로만 적어준겁니다


조금 더 자세히 보면

처음에 Terminal을 선택하면 본인의 프로젝트까지 경로가 적혀있을겁니다

위에서보면 

C:\ ~ OpencvTest>

이 상태일텐데 여기서


cd app\src\main

이렇게 적어주시고 엔터를 치면


위 상태와 같이

C:\~~~~~~~\main>

까지 완성됩니다


그 다음에 anroid.jar 추가

C:\~~~~~~~\main>javah -d jni -classpath C:[android.jar까지의경로]

를 써주시고 ; 세미콜론


그 다음에 android-support-v7-appcompat.jar 추가

C:\~~~~~~~\main>javah -d jni -classpath C:\[android.jar까지의경로];

C:\[android-support-v7-appcompat.jar까지의경로];


그 다음에 android-support-v4.jar 추가

C:\~~~~~~~\main>javah -d jni -classpath C:\[android.jar까지의경로];

C:\[android-support-v7-appcompat.jar까지의경로];

C:\[android-support-v4.jar까지의경로];


마지막으로

MainActivity까지의 경로

C:\~~~~~~~\main>javah -d jni -classpath C:\[android.jar까지의경로];

C:\[android-support-v7-appcompat.jar까지의경로];

C:\[android-support-v4.jar까지의경로];

..\..\build\intermediates\classes\debug 패키지.MainActivity


여기까지 한번에 다이렉트로 써주시고

엔터를 쳤는데 에러가 안뜨면

 jni폴더에 .h가 생성되있습니다.