2010-12-05 6 views

답변

4

좋아, 실험을하다가 초보자가 이클립스에서 NDK를 사용하는 가장 좋은 방법은 먼저이 튜토리얼 (http://marakana.com/forums/android/examples/49.html)을 살펴보고 jni 폴더에 필요한 파일을 만들기 만하면된다고 말할 수 있습니다. 하지 마라.). 그럼이 http://mobilepearls.com/labs/ndk-builder-in-eclipse/ 읽고 단계를 수행해야합니다. 그럼 준비 됐어.

+0

첫 번째 링크가 오래되었습니다./app/디렉토리는 더 이상 필요하지 않습니다. Android.mk 만 있으면 ndk-build만이 잘 작동합니다. – richq

14

은 다음 단계

일이 있습니다 프로젝트 디렉토리

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 키를 누릅니다

enter image description here

지금은 내 NDK의 NDK 빌드 파일 경로의 경로를 typw 후 경로를

In my case I create application in Destop, so hear we give the path of my app

프로젝트로 이동 프로젝트에 libs 디렉토리를 만듭니다. enter image description here

7 프로젝트에 표시되는 경우 libs이고 obj이 자동으로 생성됩니다.

8.Refresh (오른쪽 클릭) JNI 폴더 (이 실제로 libs와 폴더에 신축 된 공유 라이브러리를로드, 당신은 TEH NDK 빌드를 사용하여 빌드 할 때마다 새로 고침.)

9.이제 귀하의 안드로이드 프로젝트를 실행 버튼을 누르면 추가를 보여줍니다

감사합니다

+0

감사합니다. 당신이 단계별로 설명하는 방식을 정말 좋아합니다. 다시 한번 감사드립니다. –

+0

Android Studio를 사용하는 모든 사용자에게이 예제를 적용 해보십시오. 다음 추가 단계를 따르십시오 : 1./apps/src/main 디렉토리에 "jniLibs"라는 폴더를 만듭니다 2. 위의 튜토리얼을 사용하여 모듈을 빌드 한 후에는 lib 폴더의 내용을 복사하십시오 (아마 "armeabi" 다른 아키텍처 용으로 빌드 된) "jniLibs" 이제 작동합니다. –

관련 문제