NDK 1.6 설치해서 테스트 해보고 있습니다.
잘
NDK안에 내장된 hello-jni 컴파일하고 테스트 해보면 잘 됩니다.
새로운 안드로이드 프로젝트 생성하고 hello-jni.c 카피해서 컴파일 했습니다.
app/nnn/project/jni/Androd.mk 에서 라이브러 이름은 nnn으로 변경하고
==================================================================
Android.mk 파일내용입니다.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := nnn
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
====================================================================
파일구조
app/nnn/Application.mk
app/nnn/project/jni/hello-jni.c
app/nnn/project/jni/Androd.mk
컴파일 잘 되고 so 라이브러리도 잘생깁니다.
java 소스에도 hello-jni에서 콜하는거와 똑같이 했는데 실행할 때 예기치 않은 문제로 중지되었다고 하면서 죽네요.
조언부탁드립니다.
APP 이름은 nnn입니다.
root@linuxs-desktop:~/Project/android/android-ndk-1.6_r1# make APP=nnn
Android NDK: Building for application 'nnn'
Compile thumb : nnn <= apps/nnn/project/jni/hello-jni.c
SharedLibrary : libnnn.so
Install : libnnn.so => apps/nnn/project/libs/armeabi
자바소스
package nnn.com;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class nnn extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("NDK", stringFromJNI() );
setContentView(R.layout.main);
}
public native String stringFromJNI();
public native String unimplementedStringFromJNI();
static {
System.loadLibrary("nnn");
}
}
혹시 에물레이터나 타겟 시스템의 /data/app/nnn 아래 libnnn.so가 설치되었나요?