android.mkの理解と使用
3595 ワード
公式定義:
個人的な理解
具体的な分析の必要性:
具体的な文:
変数とマクロ
全体の初歩的な理解:
Android.mk 。
、 。
Android.mk , 。 。 , 。
, 。 , Android.mk 。
NDK 。 , NDK / , Android.mk 。
個人的な理解
mk , IDE
具体的な分析の必要性:
, , 。 android.mk , 。
具体的な文:
------------- ------------
1.LOCAL_PATH
my_dir
2.include $(CLEAR_VARS)
LOCAL_XXX , LOCAL_PATH.
3.LOCAL_MODULE := hello-jni
。
, lib
lib, 。
4.LOCAL_SRC_FILES := hello-jni.c
c/c++
5.LOCAL_MODULE_FILENAME
。
LOCAL_MODULE := foo
LOCAL_MODULE_FILENAME := libnewfoo
:
1.LOCAL_CPP_EXTENSION( )
C++ .cpp 。 , .cxx。
2.LOCAL_CPP_FEATURES( )
C++ 。 。
, , 。
, LOCAL_CPPFLAGS -frtti -fexceptions。
, RTTI( ), :
LOCAL_CPP_FEATURES := rtti
C++ , :
LOCAL_CPP_FEATURES := exceptions
。 :
LOCAL_CPP_FEATURES := rtti features
3.LOCAL_C_INCLUDES
NDK root , (C、C++ Assembly) include 。
:
4.LOCAL_CFLAGS
C C++ 。 。
Android.mk / 。 Application.mk 。 。
: android-ndk-1.5_r1 , C , C++ 。 Android 。( LOCAL_CPPFLAGS C++ 。)
:
5.LOCAL_CPPFLAGS
C++ 。
6.LOCAL_LDFLAGS+= -fuse-ld=bfd
。
------------- ------------
6.include $(BUILD_STATIC_LIBRARY)
.a
7.include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY GNU Makefile 。 include LOCAL_XXX , 。
8.include $(PREBUILT_STATIC_LIBRARY)
。 LOCAL_SRC_FILES , , foo/libfoo.so。
9.include $(PREBUILT_SHARED_LIBRARY)
。 LOCAL_SRC_FILES , , foo/libfoo.so。
,
,
------------- ------------
10.TARGET_ARCH
Android CPU 。 ARM , CPU ABI arm。
, CPU
( TARGET_ARCH_ABI)
11.TARGET_PLATFORM
Android API 。 。https://developer.android.google.cn/ndk/guides/stable_apis.html
12.TARGET_ARCH_ABI
Android.mk , CPU 。
:
ARMv8 AArch64 CPU ABI
TARGET_ARCH_ABI := arm64-v8a
13.LOCAL_LDLIBS:= -lfoo
。 , /system/lib/libfoo.so
ps: , , ,
13.TARGET_ABI
Android API ABI ,
--------------------------------
変数とマクロ
, :
1. LOCAL_
2. PRIVATE_ NDK_ APP
3. , my-dir
4. , MY_
全体の初歩的な理解:
(1) cpp , LOCAL_SRC_FILES。 include $(BUILD_SHARED_LIBRARY)
(2) .a , LOCAL_SRC_FILES。 include $(PREBUILT_STATIC_LIBRARY)
(3) , LOCAL_LDLIBS、 LOCAL_LDFLAGS
(4) , LOCAL_CFLAGS
(5) include LOCAL_C_INCLUDES
(6)TARGET_XXXX, 、cpu api
(7) LOCAL_PATH
(8) , , include $(CLEAR_VARS)
(9) , LOCAL_MODULE := hello-jni