Android.mk example

  1. The android.mk of libjni_adjustScreenOffse  
  • Android.mk: 

LOCAL_PATH:= $(call my-dir)                                                 ---> 获得当前目录
include $(CLEAR_VARS)                                                         --> 引入编译变量 

LOCAL_SRC_FILES := $(call all-java-files-under, src)                 ---> 指定源文件
LOCAL_RESOURCE_DIR := tools/brand/res                                --> 指定res目录, 可以是多个路径
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res                       --> 指定res目录, 可以是多个路径
LOCAL_JNI_SHARED_LIBRARIES := libjni_adjustScreenOffset                                        

                 LOCAL_JNI_SHARED_LIBRARIES:定义了要包含的so库文件的名字,如果程序没有采用jni,不需要 
                                               LOCAL_JNI_SHARED_LIBRARIES := libxxx 这样在编译的时候,NDK自动会把这个libxxx打包进apk; 放在youapk/lib/目录下 
LOCAL_PACKAGE_NAME := BcmAdjustScreenOffset                               --     必须定义,package的名字,这个名字在脚本中将标识app或package          
LOCAL_CERTIFICATE := $(BCM_VENDOR_STB_ROOT)/b/signing/               --> 指定签名使用的KEY的路径

                   

include $(BUILD_PACKAGE)                               --->  # 编译 APK 文件

 

  • Tree of libjni_adjustScreenOffset

BcmAdjustScreenOffset/
├── AndroidManifest.xml
├── Android.mk
├── jni
│   ├── Android.mk
│   └── jni_adjustScreenOffset.cpp
├── res
│   ├── layout
│   │   └── main.xml
│   └── values
│   └── strings.xml
└── src
└── bcmAdjustScreenOffset
└── android
├── BcmAdjustScreenOffsetActivity.java
└── native_adjustScreenOffset.java

 

  • output 

./system/app/BcmAdjustScreenOffset/
├── BcmAdjustScreenOffset.apk
├── lib
│   └── arm
│   └── libjni_adjustScreenOffset.so -> /system/lib/libjni_adjustScreenOffset.so
└── oat
└── arm
└── BcmAdjustScreenOffset.odex

 

    the full OTA signing procedure can be found at: https://source.android.com/devices/tech/ota/sign_builds.html

 

http://staratsky.iteye.com/blog/1689500

 

  1. #编译静态库  
  2. LOCAL_PATH := $(call my-dir)  
  3. include $(CLEAR_VARS)  
  4. LOCAL_MODULE = libhellos  
  5. LOCAL_CFLAGS = $(L_CFLAGS)  
  6. LOCAL_SRC_FILES = hellos.c  
  7. LOCAL_C_INCLUDES = $(INCLUDES)  
  8. LOCAL_SHARED_LIBRARIES := libcutils  
  9. LOCAL_COPY_HEADERS_TO := libhellos  
  10. LOCAL_COPY_HEADERS := hellos.h  
  11. include $(BUILD_STATIC_LIBRARY)  
  12.   
  13. #编译动态库  
  14. LOCAL_PATH := $(call my-dir)  
  15. include $(CLEAR_VARS)  
  16. LOCAL_MODULE = libhellod  
  17. LOCAL_CFLAGS = $(L_CFLAGS)  
  18. LOCAL_SRC_FILES = hellod.c  
  19. LOCAL_C_INCLUDES = $(INCLUDES)  
  20. LOCAL_SHARED_LIBRARIES := libcutils  
  21. LOCAL_COPY_HEADERS_TO := libhellod  
  22. LOCAL_COPY_HEADERS := hellod.h  
  23. include $(BUILD_SHARED_LIBRARY)  
  24.   
  25. #使用静态库  
  26. LOCAL_PATH := $(call my-dir)  
  27. include $(CLEAR_VARS)  
  28. LOCAL_MODULE := hellos  
  29. LOCAL_STATIC_LIBRARIES := libhellos  
  30. LOCAL_SHARED_LIBRARIES :=  
  31. LOCAL_LDLIBS += -ldl  
  32. LOCAL_CFLAGS := $(L_CFLAGS)  
  33. LOCAL_SRC_FILES := mains.c  
  34. LOCAL_C_INCLUDES := $(INCLUDES)  
  35. include $(BUILD_EXECUTABLE)  
  36.   
  37. #使用动态库  
  38. LOCAL_PATH := $(call my-dir)  
  39. include $(CLEAR_VARS)  
  40. LOCAL_MODULE := hellod  
  41. LOCAL_MODULE_TAGS := debug  
  42. LOCAL_SHARED_LIBRARIES := libc libcutils libhellod  
  43. LOCAL_LDLIBS += -ldl  
  44. LOCAL_CFLAGS := $(L_CFLAGS)  
  45. LOCAL_SRC_FILES := maind.c  
  46. LOCAL_C_INCLUDES := $(INCLUDES)  
  47. include $(BUILD_EXECUTABLE)  

 

posted @ 2017-03-10 15:08  书生李四  阅读(227)  评论(0)    收藏  举报