ソースツリーにappアプリケーションを追加


ソースツリーにappアプリケーションを追加



Eclipse,Android StudioコンパイルによるappアプリケーションをAndroidソースコードに追加コンパイル,appエンジニアリングにAndroidを追加する必要がある.mkファイル.


よくあるAndroid.mkファイルの書き方には、次の3つの方法があります.

1.jniローカルコードを持たない


(1)HelloWorldディレクトリの下にAndroidを新規作成する.mkファイル
LOCAL_PATH:$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES :$(call all-subdir-java-files)
LOCAL_PACKAGE_NAME :HelloWorld
include $(BUILD_PACKAGE)

LOCAL_MODULE_TAGSの代替値はuser,eng,tests,optionalであり、この例で使用するTAGS値はengであるため、ユーザが指定したコンパイルオプションがengである場合にのみこのエンジニアリングがコンパイルされる
(2)makefileを構成し、新しい項目選択/device/<company>/ <product>/xxxx.mkを追加し、その中のPRODUCT_PACKAGESパラメータリストに本プロジェクトを追加する.
PRODUCT_PACKAGES := \     DeskClock \     Calculator \     Calendar \     Camera2 \     Email \     HelloWorld

(3)コンパイルモジュールはHelloWorldディレクトリの下にmm -B -jコマンドを入力するか、Androidソースコードルートディレクトリの下に切り替えて次のいずれかのコマンドを実行すればよい.
make HelloWorld 
$ mmm ``package``/apps/HelloWorld

2.jniローカルコードを含む


jniを含む項目については、上記新規のAndroidを修正する必要があります.mk、以下の通りです.
  LOCAL_PATH:= $(call my-dir)

    include $(CLEAR_VARS)
    LOCAL_MODULE_TAGS := eng
    LOCAL_SRC_FILES := $(call all-subdir-java-files)
    LOCAL_PACKAGE_NAME := HelloWorld
    LOCAL_JNI_SHARED_LIBRARIES := libmynative
    include $(BUILD_PACKAGE)

    include $(call all-makefiles-under,$(LOCAL_PATH))

jniディレクトリの下にあるAndroid.mkは以下の通りです(jniディレクトリの下にincディレクトリとsrcディレクトリがあると仮定します).
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libmynative
LOCAL_SRC_FILES := src/mynative.c
LOCAL_C_INCLUDES += $(JNI_H_INCLUDE)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/inc

include $(BUILD_SHARED_LIBRARY)

3.jniローカルコードを含み、ローカルコードはサードパーティライブラリ(.aまたはso)に依存する


ローカルコード依存サードパーティライブラリをencoderと仮定する.aとdecoder.so
(1)上記jniディレクトリの下にあるAndroid,mkを修正し,以下の2つを追加する.
LOCAL_STATIC_LIBRARIES := libencoder
LOCAL_SHARED_LIBRARIES := libdecoder

(2)HelloWorldディレクトリの下のAndroidを修正する.mkファイル
まずencoderをaとdecoder.soはすべてエンジニアリングルートディレクトリにコピーし、Androidを修正します.mkファイルは、次の2つを追加します.
include $(CLEAR_VARS)
LOCAL_MODULE := libencoder
LOCAL_SRC_FILES := encoder.a
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_SUFFIX := .a
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := libdecoder
LOCAL_SRC_FILES := decoder.so
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
include $(BUILD_PREBUILT)

jni:インタフェース(Java Native Interface)