Android StudioでのJNI環境作成覚え書き|Android開発

      2018/05/21

JNIのビルド用環境構築覚え書き。ndk-buildでライブラリファイルを作成するための基本的な手順です。

Android StudioプロジェクトでのJNIフォルダ

app/src/main配下にjniフォルダを作成する。
フォルダ内には以下の様なファイル・フォルダを用意。

  • ヘッダフォルダ(必要に応じて)
  • ソースフォルダ(必要に応じて)
  • ライブラリフォルダ(必要に応じて)
    事前にビルドしたスタティックライブラリなどを格納
  • Android.mk
  • Application.mk
  • jniヘッダ
    javahなどで作成
  • ソースファイル

Android.mk

項目はAPIガイドのAndroid.mkを参照。

最小構成

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libsamplejni

LOCAL_SRC_FILES := sample.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

特にincludeするファイルがないなら、LOCAL_C_INCLUDESの行も不要。
LOCAL_SRC_FILESLOCAL_C_INCLUDESはスペースで区切って複数指定可能。または改行で区切る。改行の場合は行末に「\」を記述する。

LOCAL_SRC_FILES := sample.c \
        sample2.c \
        sample3.c

事前に作成したスタティックライブラリを含める

下記はlibmystatic.aを含める場合

LOCAL_PATH := $(call my-dir)

# libmystatic.a を PREBUILT_STATIC_LIBRARY で指定
include $(CLEAR_VARS)
LOCAL_MODULE := mystatic
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/libmystatic.a
include $(PREBUILT_STATIC_LIBRARY)
#;

include $(CLEAR_VARS)

LOCAL_MODULE := libsamplejni

LOCAL_SRC_FILES := sample.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

# PREBUILT_STATIC_LIBRARY として定義した mystatic をリンク
LOCAL_STATIC_LIBRARIES := mystatic

LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

Application.mk

項目はAPIガイドのApplication.mkを参照。

APP_SHORT_COMMANDS := true
APP_PLATFORM := android-21
APP_ABI := armeabi-v7a

 - Android