마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android ndk의 기본예제 native-activity 질문좀 드리겠습니다.

0 추천

ndk 설치 후에 기본 샘플인 native-activity를 ndk-build 로 빌드해보았는데...

armeabi 폴더에 so 파일이 나타나더군요.
 
마침 프로젝트 프로퍼티스도 있길래 그걸 이클립스 프로젝트로 불러와서
실행시켜보았습니다.
 
액티비티가 활성화되더니 바로 꺼져버리더군요...
에러로그를 써볼테니 왜 그런지좀 알려주시면 감사하겠습니다.
 
지식인에 물어보니 액티비티를 찾을 수 없다고 하는거라던데...
그냥 샘플을 ndk 빌드했을 뿐인데 왜 그렇게되는지도 잘 모르겠습니다...
만일 c코드의 경로가 맞지 않았다면 빌드가 안됬을테고...
 
so파일의 경로가 맞지 않았다면 apk 빌드도 안되야 하는게 아닌가요...
으음...
고수님들의 답변 부탁드리겠습니다.
 
 
03-25 16:56:08.261: E/Trace(1523): error opening trace file: No such file or directory (2)
03-25 16:56:08.571: D/AndroidRuntime(1523): Shutting down VM
03-25 16:56:08.571: W/dalvikvm(1523): threadid=1: thread exiting with uncaught exception (group=0x2bc9a300)
03-25 16:56:08.641: E/AndroidRuntime(1523): FATAL EXCEPTION: main
03-25 16:56:08.641: E/AndroidRuntime(1523): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.native_activity/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to find native library: native-activity
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.os.Looper.loop(Looper.java:137)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-25 16:56:08.641: E/AndroidRuntime(1523): at java.lang.reflect.Method.invokeNative(Native Method)
03-25 16:56:08.641: E/AndroidRuntime(1523): at java.lang.reflect.Method.invoke(Method.java:511)
03-25 16:56:08.641: E/AndroidRuntime(1523): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-25 16:56:08.641: E/AndroidRuntime(1523): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-25 16:56:08.641: E/AndroidRuntime(1523): at dalvik.system.NativeStart.main(Native Method)
03-25 16:56:08.641: E/AndroidRuntime(1523): Caused by: java.lang.IllegalArgumentException: Unable to find native library: native-activity
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.NativeActivity.onCreate(NativeActivity.java:187)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.Activity.performCreate(Activity.java:5008)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-25 16:56:08.641: E/AndroidRuntime(1523): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-25 16:56:08.641: E/AndroidRuntime(1523): ... 11 more

 

dagraac (230 포인트) 님이 2013년 3월 26일 질문
dagraac님이 2013년 3월 26일 수정

3개의 답변

0 추천
 
채택된 답변
자문 자답입니다.

에뮬레이터가 아닌 기기에서 직접 실행하자 정상동작 확인되었습니다.(...)

답변해주신 두분께 감사드립니다.
dagraac (230 포인트) 님이 2013년 3월 26일 답변
+1 추천

https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/G6GDWJEvbrI

ANSWER! :-)

 

set android:hasCode="true" in AndroidManifest.xml

aucd29 (218,390 포인트) 님이 2013년 3월 26일 답변
+1 추천
native-activity 라이브러리 파일,  ndk로 컴파일하여 만든 so 파일을 못 찾는다고 나오네요.

NativeActivity.java의 187줄 을 보세요.

아마도 라이브러리 파일 이름을 잘못 쓰시것 같은데요.
원조안드로이드 (58,190 포인트) 님이 2013년 3월 26일 답변
...