计算机系统应用教程网站

网站首页 > 技术文章 正文

Android 源码编译 之 Android.mk 编译android源码 硬件配置

btikc 2024-10-27 08:33:41 技术文章 5 ℃ 0 评论

Android.mk 脚本 可以编译可执行程序,动态库,静态库以及Apk

最基础的Android.mk

//配置环境变量

LOCAL_PATH := $(call my-dir) build/core/definitions.mk

//清除变量

include $(CLEAR_VARS) build/core/config.mk

//生成目标文件

LOCAL_MODULE := test

//目标文件

LOCAL_SRC_FILES := test.c \

test1.c

//生成格式

include $(BUILD_EXECUTABLE)

//如果想编译生成在当前目录下

LOCAL_MODULE_PATH := $(LOCAL_PATH)/bin

如果想编译多个c文件,需要用到 \ 连接符,看test1.c ,还有一种比较简单的方式就是使用系统函数

//这是加载目录下的所有c文件

LOCAL_C_ALL_FILES := $(call call-files-under)

LOCAL_SRC_FILES := $LOCAL_C_ALL_FILES

如果想编译动态库,可以修改最后一句

include $(BUILD_SHARED_LIBRARY)

如果想修改为静态库

include $(BUILD_STATIC_LIBRARY)

引入系统的库

LOCAL_SHARED_LIBRARIES := liblog

引入第三方库

LOCAL_LDFLAGS := -L/路径 -l 名称

例如

LOCAL_LDFLAGS := -L./lib/ -ltest

引入静态库

LOCAL_LDFLAGS := $(LOCAL_PATH)/lib/xxx.a

引入第三方Jar

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += MyLib:libs/xxx.jar

LOCAL_STATIC_JAVA_LIBRARIES := LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES

引入第三方头文件

LOCAL_C_INCLUDES := 路径


如何编译生成Apk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call-subdir-java-files)

lOCAL_PACKAGE_NAME := XXX.apk

include $(BUILD_PACKAGE)

如何编译生成Jar

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call-subdir-java-files)

lOCAL_MODULE := xx.jar

include $(BUILD_STATIC_JAVA_LIBRARY) 静态

include $(BUILD_JAVA_LIBRARY) 共享

Jar分类

静态Jar:使用.class文件打包而成的JAR,可以随意在虚拟机运行

动态Jar:在静态Jar的基础上使用.dex打包而成的jar

如果Apk想引入静态Jar,需要:

LOCAL_STATIC_JAVA_LIBRARIES := static-library

如果Apk想引入动态Jar,需要:

LOCAL_JAVA_LIBRARIES := share-library

预编译Jar

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_MODULE := XX

LOCAL_SRC_FILES :=XX

include $(BUILD_JAVA_PREBUILT)

LOCAL_MODULE_CLASS 代表预编译的格式:

  • JAVA_LIBRARIES:dex归档文件
  • APPS:Apk文件
  • SHARED_LIBRARIES:动态库文件
  • EXECUTABLES:二进制文件
  • ETC:其他格式

有兴趣的可以加群:417046685

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表