• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    jni on android
    Last Modify : 26 December, 2012(03:23)
    android 에서 native application 을 이용하기 위해서는 다음과 같은 과정을 거치면 된다. 1. 먼저 NDK 를 다운받는다 이건 developer.android.com 에서 받으면 된다. 2. java 소스를 작성 하는데 간단하게 만들자면 다음과 같다.
    package com.example.helloworld;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class helloworld extends Activity {
    	/* Called when the activity is first created. */
    
    	@Override
    	public void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    
    		TextView tv = new TextView(this);
    		tv.setText(stringFromJNI());
    		setContentView(tv);
    	}
    
    	public native String stringFromJNI();
    
    	static {
    		System.loadLibrary("helloworld");
    	}
    }
    
    
    native 와 관련된 내용은 하단의 두 코드이다.
    public native String stringFromJNI();
    
    static {
    	System.loadLibrary("helloworld");
    }
    
    3. 코드가 완성 되었으면 프로젝트 home 에서 jni 디렉토리를 만들고 javah 를 이용해 .h 파일을 생성해야 하는데 그 방법은 다음과 같다.
    cd $(project_home)
    mkdir jni
    //javah -o jni/helloworld.h -classpath bin com.example.helloworld.helloworld
    // 최신버전에서는 위의 코드가 먹지 않는다.
    javah -o jni/helloworld.h -classpath bin/classes com.example.hellworld.helloworld
    
    4. header가 완성되었다면 NDK 폴더로 이동한 뒤 다음과 같이 파일을 생성한다.
    mkdir $(NDK_home)/apps/helloworld
    cd $(NDK_home)/apps/helloworld
    vi Application.mk
    
    APP_PROJECT_PATH := $(call my-dir)/project
    APP_MODULES	 := helloworld
    
    이후 심볼릭 링크를 하나 만드는 데 eclipse의 workspace 에 존재하는 실제 작업 디렉토리인 helloworld 디렉토리를 향애 만든다.
    ln -s $(work_home) project
    
    5. 생선된 링크로 들어가면 전에 만들어둔 jni 폴더가 있는데 그 곳으로 들어간다. 6. .h 를 기준으로 .cpp 를 생성하고 원하는 기능을 만든다. 6-1. 그 다음은 Android.mk 파일을 생성한다. 안에 들어갈 내용은 다음과 같다.
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    		
    LOCAL_DEFAULT_CPP_EXTENSION := cpp
    LOCAL_MODULE := hellondk
    LOCAL_SRC_FILES := hellondk.cpp
    
    include $(BUILD_SHARED_LIBRARY)
    
    7. 완성 되었으면 $(NDK_home) 으로 이동한 뒤 다음과 같이 명령을 입력한다.
    make APP=helloworld
    
    8. 안드로이드 에뮬레이터를 활성화 시킨다. 9. 생성한 라이브러리를 에뮬레이터에 추가한다.
    adb remount
    adb push $(work_home)/libs/armeabi/libhelloworld.so /system/lib
    adb install $(work_home)/bin/helloworld.apk
    
    10. 해당 프로그램을 실행 시킨다.

    Comment


    입력하3 1498429749



    Locations of visitors to this page