Android.mk文件解析

如何引入系统库

项目中应用系统库:

 LOCAL_SHARED_LABRARIES +=LIBXXX:

在项目中查找库的位置:find out/target/product/ name xxx.so

如何引入第三方库

引入第三方库:LOCAL_LDFLAGS : =-L/path -lxxx

如何引入静态库

LOCAL_LDFLAGS :=path

如何引入头文件

LOCAL_C_INCLUDES += PATH

如何编译jar包

 LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files) 
LOCAL_MODULE :=jar_name
include $(BUILD_STATIC_JAVA_LABRARY)
include $(BUILD_JAVA_LABRARY)

include (BUILD_STATIC_JAVA_LABRARY) :编译生成静态jar包 include(BUILD_JAVA_LABRARY):编译生成动态jar包

jar包的分类:
静态jar包:使用.class文件打包而成的jar文件,可以在任何虚拟机上运行
动态jar:在静态jar包的基础上使用.dex打包而成的jar文件,.dex是android系统使用的文件格式

如何编译apk

编译生成APK:

 LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME :=LocalPackage
include $(BUILD_PACKAGE)

BUILD_PACKAGE :编译生成的apk
LOCAL_PACKAGE_NAME :编译生存apk的名字

APK中导入jar包和库文件

 LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)

LOCAL_STATIC_JAVA_LIBRARYS :=static-name
LOCAL_JAVA_LIBRARYS :=share-name

LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME :=LocalPackage
include $(BUILD_PACKAGE)

LOCAL_STATIC_JAVA_LIBRARYS:静态jar包
LOCAL_JAVA_LIBRARYS:动态jar包

预编译jar包

LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_CLASS :=JAVA_LIBRARIES
LOCAL_MODULE := com.test.share //新生成的jar包
LOCAL_SRC_FILES :=com.test.static //原有jar包
include $(BUILD_PREBUILT)

JAVA_LIBRARIES:预编译生成DEX
BUILD_PREBUILT :预编译
LOCAL_MODULE_CLASS :指定编译生成的文件类型

编译文件生成的类型:
JAVA_LIBRARIES:dex归档文件
APPS :APK文件
SHARED_LIBRARIES:动态库文件
EXECUTABLES :二进程文件
ETC :其他文件格式

Android.mk中如何加判断语句

ifeq($(VALUE),X) #ifneq
  doyes
else
  do_no
endif

ifeq/ifneq :根据判断条件执行相关编译

Android.bp使用、与Android.mk的区别、对应关系、转换

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容