Android.mkコンパイルターゲット(コンパイルパッケージ、バイナリファイル、プリコンパイル)


1.常用
Android.mkを使用してapk、jarパッケージなどをコンパイルすることがよくあります.
BUILD_PACKAGE(apkもパケットファイルも作成できますが、LOCAL_EXPORT_PACKAGE_RESOURCES:=trueを指定する必要があります)
BUILD_JAVA_LIBRARY(java共有ライブラリ)
BUILD_STATIC_JAVA_LIBRARY(javaスタティックライブラリ)
BUILD_EXECUTABLE(実行ファイル)
BUILD_SHARED_LIBRARY(native共有ライブラリ)
BUILD_STATIC_LIBRARY(nativeスタティックライブラリ)
2.プリコンパイルモジュール
実際の開発ではAndroidのようにすべてのソースコードを集約してコンパイルすることはなく、apkファイルが多くjarが事前にコンパイルされており、コンパイルシステムではこれらのバイナリファイルを生成したimageファイルにコピーする必要がある.
一般的な方法は、PRODUCT_COPY_FILES変数を使用して生成されたイメージファイルに直接コピーすることです.ただし、一部のapkまたはjarパッケージでは、ユーティリティの署名が必要で正常に動作しない場合があります.このようにコピーではできません.また、一部のダイナミックライブラリファイルは、ソースコードの一部のモジュールに依存している可能性があります.コピーでは依存関係を確立することはできません.これらのモジュールのコンパイルに失敗しました.Androidは、プリコンパイルモジュールを定義する方法で上記の問題を解決できます.
プリコンパイルモジュールの定義は、通常のコンパイルモジュールの定義と似ています.LOCAL_SRC_FILESがソースファイルではなくバイナリファイルになったのとは異なり、LOCAL_MODULE_CLASSでモジュールのタイプを指定できます.最後にincludeはBUILD_PREBUILT変数定義コンパイルファイルです.
apkファイルのコンパイル
include $(CLEAR_VARS)
LOCAL_MODULE := ThemeManager.apk
LOCAL_SRC_FIELS := app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
include & (BUILD_PREBUILT)

jarパッケージのコンパイル
include $(CLEAR_VARS)
LOCAL_MODULE := libfirewall.jar
LOCAL_SRC_FIELS := app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := JAVA_LIBRAYIES
LOCAL_CERTIFICATE := platform
include & (BUILD_PREBUILT)

ダイナミックライブラリファイルターゲットの定義
include $(CLEAR_VARS)
LOCAL_MODULE := libglobaltheme_jni.so
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := lib/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRAYIES
include & (BUILD_PREBUILT)

実行可能ファイルのコンパイル
include $(CLEAR_VARS)
LOCAL_MODULE := bootanimation
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := bin/bootanimation
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include & (BUILD_PREBUILT)