LOCAL_JNI_SHARED_LIBARIES

4530 ワード


Android.mk fileはコンパイルシステムにあなたのソースコードを記述するために使用されます。具体的には、このファイルはGNU Makefileの一部であり、コンパイルされたシステムによって一度以上解析されます。各Android.mk fileで一つ以上のモジュールを定義してもいいです。いくつかのモジュールで同じソースコードファイルを使ってもいいです。各モジュールは以下のタイプの一つです。  1)APKプログラムは、一般的なAndroidプログラムで、パッケージをコンパイルしてappkファイルを生成します。  2)Javaライブラリ、javaライブラリ、コンパイルしてjarファイルを生成します。  3) C/C++アプリケーション、実行可能なC/C++アプリケーション  4)C/C++スタティックライブラリをコンパイルしてC/C++スタティックライブラリを生成して.aファイルに包装します。  5)C/C++共有ライブラリ、 コンパイルして共有ライブラリ(ダイナミックリンクライブラリ)を生成し、パッケージに包装します。そして、共有ライブラリだけがインストール/コピーされます。
以下はAndroid.mkのテキストです。
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_STATIC_JAVA_LIBRARIES := android-support-v13LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkitLOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_SRC_FILES += $(call all-java-files-under, src_pd)LOCAL_SRC_FILES += $(call all-java-files-under, src_pd_gcam)LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/resinclude $(LOCAL_PATH)/version.mkLOCAL_AAPT_FLAGS := /        --auto-add-overlay /        --version-name "$(version_name_package)" /        --version-code $(version_code_package) /LOCAL_PACKAGE_NAME := Camera2LOCAL_SDK_VERSION := currentLOCAL_PROGUARD_FLAG_FILES := proguard.flags# If this is an unbundled build (to install seprately) then include# the libraries in the APK, otherwise just put them in /system/lib and# leave them out of the APKifneq (,$(TARGET_BUILD_APPS))  LOCAL_JNI_SHARED_LIBRARIES := libjni_mosaic libjni_tinyplanetelse  LOCAL_REQUIRED_MODULES := libjni_mosaic libjni_tinyplanetendifinclude $(BUILD_PACKAGE)include $(call all-makefiles-under, $(LOCAL_PATH))
 これらのコードを説明します。
1,LOCAL_PATH:=$Android.mk fileはまずLOCAL(u)を定義しなければなりません。PATH変数開発ツリーでソースファイルを検索します。この例では、マクロ
関数「my-dir」は、現在の経路(すなわちAndroid.mk fileファイルを含むディレクトリ)を返すためにコンパイルシステムによって提供される(菜鳥レベルの説明:=賦値の意味で、+=追加という意味で、ドルはある変数の値を引用します。
2,include$VRS,CLEAR_VRSはコンパイルシステムによって提供されています。VRS:=$SYSTEM)/clear_vars.mk)、GNU MAKEFILEに多くのLOCALをクリアするよう指定します。XXX変数(例えばLOCAL_u)MODULE、LOCAL_SRC_FILES、LOCAL_STATIC_LIBRIIES、等等、LOCAL_を除くPATHこれは必要です。すべてのコンパイル制御ファイルは同じGNU MAKEの実行環境にあります。すべての変数はグローバルです。
3,LOCAL_MODULE_TAGS:=user eng tests optional
user:このモジュールはuserバージョンでのみコンパイルされます。
eng:このモジュールはengバージョンでのみコンパイルされます。
tests:このモジュールはtestsバージョンでのみコンパイルされます。
optional:このモジュールはすべてのバージョンでコンパイルされます。
4,LOCAL_STATIC_LIBRIIES:コンパイル時にリンクするためにどのような静的ライブラリを使用する必要があるかを示します。LOCAL_JAVA_LIBREIES:=plotform core ext依存の共有jar。LOCAL_STATIC_JAVA_LIBREIES:=依存静的jarパッケージ(jarパッケージはincludeを使用しています。STATIC_JAVA_LIBRARYが生成した。)
5,LOCAL_SRC_FILES変数は、モジュールにコンパイルするCまたはC+ソースコードファイルを含む必要があります。ここにヘッダファイルをリストしなくてもいいです。コンパイルシステムは自動的に依存型のファイルを探してくれます。直接コンパイラに渡すソースコードファイルだけを一覧表示してもいいです。
6,LOCAL_RESOURCE_DIRデフォルトのproduct packageとdevice packageに対応するresパスと$PATH)/res.
include$PATH)/version.mk。第三者ライブラリファイルに追加します。
7,LOCAL_AAPT_FLAGS
AAPT(Android) Aset Packaging Tool)  SDKのtools/ディレクトリの下で.このツールは,ZIP形式の文書添付ファイル(zip,jar,appk)を参照して作成して更新することができます。リソースファイルをバイナリファイルにコンパイルすることもできます。aapptツールを直接使ったことはないかもしれませんが,build scriptsとIDEプラグインはこのツールを使ってappkファイルを包装してAndroidアプリケーションを構成します。
8, LOCAL_PACKAGE_NAMEはこのカバンの名前を表しています。
9,Javaのバイトコードは一般に逆コンパイルしやすいです。Javaソースコードをよく保護するために、私たちはよくコンパイルされたクラスファイルを混乱させて処理します。ProGrandの主な役割は混淆です。もちろんバイトコードを縮小したり、最適化したりもしますが、それらは私たちにとっては副次的な機能です。progurardのAndroidにおけるいくつかの使用方法:
 (1)紛らわしい必要のないnativeメソッドと変数を指定するプログラード.flagsファイル
           LOCAL_PROGUARD_FLAG_FILES:=progurard.flags
  (2)コンパイルの工程を作成し、コードを混同するツールを使ってコードを混同しないでください。
          LOCAL_PROGUARD_ENABLED:=disabled
10, LOCAL_JNI_SHARED_LIBRIIES:
LOCAL_JNI_SHARED_LIBRIIES変数は主にJNIのコンパイルに使われます。あなたがJavaコードからJNIの共有ライブラリ*.soを引用するなら、この変数は共有ライブラリの名前です。注意すべき点は、あなたのProjectのルートディレクトリのAndroid.mkにこの変数を定義して、あなたが使うJNIの共有ライブラリを参照してください。
含まれるsoライブラリファイルの名前を定義していますが、プログラムがjniを採用していない場合は、不要です。        LOCAL_JNI_SHARED_LIBREIES:=libxxxはこのようにコンパイルする時、NDKは自動的にこのlibxxxをappkに包装します。youupk/lib/ディレクトリの下に置く
     LOCAL_REQUIRED_MODULES モジュールの運転に依存するモジュールを指定します。(モジュールのインストール時には、そのモジュールに依存するモジュールを同期してインストールします。)
11, include$PACKAGEは、appkをコンパイルし、includeドル(BUILD_)です。STATIC_JAVA_LIBRARYはjarバッグをコンパイルします。
󑧙Use the follwing include to make our test appk.
includeドル(call all-makefiles-under)$PATH)