내 프로젝트에서 일부 기본 c/C++를 사용해야하므로 NDK를 사용해야합니다. 이클립스에서 쉽게 설정할 수 있습니까?android project에서 NDK를 사용하는 방법?
감사합니다.
내 프로젝트에서 일부 기본 c/C++를 사용해야하므로 NDK를 사용해야합니다. 이클립스에서 쉽게 설정할 수 있습니까?android project에서 NDK를 사용하는 방법?
감사합니다.
좋아, 실험을하다가 초보자가 이클립스에서 NDK를 사용하는 가장 좋은 방법은 먼저이 튜토리얼 (http://marakana.com/forums/android/examples/49.html)을 살펴보고 jni 폴더에 필요한 파일을 만들기 만하면된다고 말할 수 있습니다. 하지 마라.). 그럼이 http://mobilepearls.com/labs/ndk-builder-in-eclipse/ 읽고 단계를 수행해야합니다. 그럼 준비 됐어.
은 다음 단계
일이 있습니다 프로젝트 디렉토리
2에 JNI 폴더를 만듭니다 : 파일 이름 만들기 Android.mk를 새로 만든 폴더에 JNI을하고를 만들 C 또는 C++의 새 파일, 우리는 C 파일을 사용하고 파일 이름을 MyNativeC.c라고 들었습니다.
3 : 이제 Android.mk 파일에 다음 코드를 입력하십시오.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := local_module_ndk // this is the name of local module by which you can call the Local source file
LOCAL_SRC_FILES := MyNativeC.c// hear we can pass the name of your native file name hear we are use MyNativeC.c file so we pass the name of MyNativeC.c in local source file name
include $(BUILD_SHARED_LIBRA
4 이제 열린 MyNativeC.c 파일과 듣고 우리가 지금 활동 곳을 편집 코드
#include <jni.h>
#include <string.h>
#include <stdio.h>
#include <android/log.h>
#define DEBUG_TAG "MY_NDK_DEMO"
jstring Java_com_myNDKDemo_MainActivity_getString(JNIEnv * env, jobject this, jint value1, jint value2)
{
char *szFormat = "Addition : %i";
char *szResult;
jlong sum = value1+value2;
szResult = malloc(sizeof(szFormat) + 20);
sprintf(szResult, szFormat, sum);
jstring result = (*env)->NewStringUTF(env, szResult);
free(szResult);
return result;
}
5 다음 만들 당신이 (당신의 활동에서) 당신의 안드로이드 코드에서 호출 할 두 가지 방법을 만들
네이티브 코드의 라이브러리를로드해야하는 정적 블록을 먼저 생성해야합니다. 우리가 내 활동 이름의 코드를 보여
듣고는 MainActivity.java
입니다package com.myNDKDemo
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
private static final String DEBUG_TAG = "MainActivity";
private native String getStringAdd(int fist, int second);
static {
System.loadLibrary("local_module_ndk");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
button b = new Button(this);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),""+getStringAdd(100,200), 2000).show();
}
});
setContentView(b);
}
}
6 이제 첫
지금 엽니 다 NDK development kit에있는 첫 번째 컴파일 C 코드를 C 코드를 컴파일 운영. 입력 현재
CMD 우리가 자동 Enter 키를 누릅니다지금은 내 NDK의 NDK 빌드 파일 경로의 경로를 typw 후 경로를
프로젝트로 이동 프로젝트에 libs 디렉토리를 만듭니다.
7 프로젝트에 표시되는 경우 libs이고 obj이 자동으로 생성됩니다.
8.Refresh (오른쪽 클릭) JNI 폴더 (이 실제로 libs와 폴더에 신축 된 공유 라이브러리를로드, 당신은 TEH NDK 빌드를 사용하여 빌드 할 때마다 새로 고침.)
9.이제 귀하의 안드로이드 프로젝트를 실행 버튼을 누르면 추가를 보여줍니다
감사합니다
감사합니다. 당신이 단계별로 설명하는 방식을 정말 좋아합니다. 다시 한번 감사드립니다. –
Android Studio를 사용하는 모든 사용자에게이 예제를 적용 해보십시오. 다음 추가 단계를 따르십시오 : 1./apps/src/main 디렉토리에 "jniLibs"라는 폴더를 만듭니다 2. 위의 튜토리얼을 사용하여 모듈을 빌드 한 후에는 lib 폴더의 내용을 복사하십시오 (아마 "armeabi" 다른 아키텍처 용으로 빌드 된) "jniLibs" 이제 작동합니다. –
첫 번째 링크가 오래되었습니다./app/디렉토리는 더 이상 필요하지 않습니다. Android.mk 만 있으면 ndk-build만이 잘 작동합니다. – richq