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