LoginSignup
68
73

More than 5 years have passed since last update.

Android NDKを触ってみる

Last updated at Posted at 2014-06-11

Android NDKとは?

  • Android Native Development Kitの略称である。
  • Androidアプリケーションの一部または全部をC/C++言語で開発するためのキットです。

環境構築

  • 前提
    • eclipse上に、Android開発環境構築済み(英語版)
  • 構築手順
    • Android NDKのダウンロード
    • インストーラは、存在していない。任意の場所に解凍するだけ
    • eclipseを起動して、menu Window → Preferences → Android → NDK → “NDK Location” にNDKのパスを設定する
    • ・ 例: Path/to/android-ndk-r9d
    • 環境変数の PATH にも NDK のフォルダを追加する

hello world NDKを作成

プロジェクト作成

hellondk_create_project.png
hellondk_create_project_over.png

Native Support設定

  • プロジェクト・エクスプローラーのプロジェクト名の上でマウスを右クリックし、「Android Tools」のサブメニューから「Add Native Support」を選択する
  • Library Nameのネームを修正するとか、そのまま保留するとか
  • プロジェクト・エクスプローラーの下に、jniフォルダが出て、helloWorldNDK.cppとAndroid.mkのファイルが2つある
  • プロジェクト作成するときに、自動的に生成されたMainActivity.javaを修正する

public class MainActivity extends Activity {

    TextView text1;

    static {
        System.loadLibrary("helloWorldNDK");
    }

    public native String msgFromNDK();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text1 = (TextView)findViewById(R.id.textView1);
        text1.setText(msgFromNDK());

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

...省略...

eclipseで、C/C++ヘッダーファイルを作成

  • eclipseのツールバーに、「External Tools」→ 「External Tools Configurations」を選択する
  • 左上に、新規作成ボタンをクリックして、以下のように「NDK create」を作成する
  • Externa_tools_new.png
  • MainActivity.javaソースファイルを開いてテキストエディターがアクティブの状態で、「NDK create」を実行する
  • 「com_example_helloworldndk_MainActivity.h」が、jni下に、作成された

C++のソースファイル

#include <jni.h>
#include <assert.h>
#include <com_example_helloworldndk_MainActivity.h>

JNIEXPORT jstring JNICALL Java_com_example_helloworldndk_MainActivity_msgFromNDK
(JNIEnv *env, jobject thiz) {
    jstring jstr = env->NewStringUTF("hello world NDK!");
    assert(jstr);
    return jstr;
}

実行結果

hellondk_result.png

参照

68
73
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
73