最終更新:2017-02-13 (月) 15:23:52 (281d)  

Android NDK はてなブックマークを見る
Top / Android NDK

Android Native Development Tools

http://developer.android.com/tools/sdk/ndk/index.html

ガイド

ダウンロード

Android NDK/バージョン

Android NDK/サンプル

Android Studio 2.2

Android Studioからインストール

中身

Development tools

The NDK includes a set of cross-toolchains (compilers, linkers, etc..) that can generate native ARM binaries on Linux,Mac OS X, and Windows (with Cygwin) platforms.

It provides a set of system headers for stable native APIs that are guaranteed to be supported in all later releases of the platform:

  • libc (C library) headers
  • libm (math library) headers
  • JNI interface headers
  • libz? (Zlib compression) headers
  • liblog? (Android logging) header
  • OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
  • libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
  • A Minimal set of headers for C++ support
  • OpenSL ES native audio libraries
  • Android native application APIS

アーキテクチャ

MIPS

提供されるライブラリ

  • 標準Cライブラリ(libc
  • 標準数値演算ライブラリ(libm
  • JNIインターフェイス
  • Zlib?圧縮ライブラリ(libz?
  • Kernelへのlogcatメッセージ送信ライブラリ(liblog)

必要なライブラリとか

使い方

インストール方法

  • ダウンロードして展開。

ドキュメント

  • doc/OVERVIEW.HTMLをひと通り読むようにとのこと。

Makefile

メモ

  • NDKで作るCC++ライブラリは英ARMの命令セット「ARMv5TE」にしか対応していないため、アプリケーションの移植性が落ちる。

要らなくなった作業

  • Previous releases required you to run the 'build/host-setup.sh' script to configure the NDK. However, this step has been removed in release 4 (a.k.a. r4).

開発

プロジェクトの作成

  • 普通のAndroidプロジェクト「ndksample」を作成

NDKのプロジェクトにする

  • プロジェクトエクスプローラ上でNDKを使いたいプロジェクトを右クリックしてAndroidツール→Add Native Supportを選択。
  • 選ぶとライブラリ名lib「ndksample」.soを指定するダイアログが出る。
  • jniフォルダに下記ファイルが作成される。
    • ndksample.cpp
    • Android.mk
      LOCAL_PATH := $(call my-dir)
      
      include $(CLEAR_VARS)
      
      LOCAL_MODULE    := ndksample
      LOCAL_SRC_FILES := ndksample.cpp
      
      include $(BUILD_SHARED_LIBRARY)

Javaでメソッドをnative宣言

  • package com.example.ndksample;
    public class MainActivity extends Activity{
        public native String hoge();
    }

C/C++側の関数を実装

  • JNIEXPORT jstring JNICALL Java_com_example_ndksample_MainActivity_hoge(JNIEnv *env, jobject thiz)
  • javahを使っても生成できる。
    javah -o jni/ndksample.hpp -classpath bin/classes com.example.ndksample.MainActivity

ビルド

  • cd <project>
    <ndk>/ndk-build

Android Studio/NDK

  • Android Studio上でのNDKサポートについて現在のところGoogleからのアナウンスはありません。
  • http://samuraism.com/2013/05/17/882
  • As of Jan 2015 the NDK support for Android studio is still unusable. A cryptic message says: "Alternative will be provided in the future."
    • Version 0.7+: They suggested to still use ndk-build / ant
    • Version 0.8+: They've introduced a minimal NDK support
    • Version 1.0.0: It looked like NDK support was going to be official
    • Version 1.0.2: It now looks like NDK support is deprecated.

関連

参考