Android.mk 语法详解

一.Android.mk简介

Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成(exe,so,a,jar,apk)等文件。

二.Android.mk编写

分析一个最简单的Android.mk

LOCAL_PATH := $(call my-dir)  //定义了当前模块的相对路径include $(CLEAR_VARS)  //清空当前环境变量LOCAL_MODULE:= test  //编译生成的目标名称LOCAL_SRC_FILES := test.c  //编译该模块需要的源文件include $(BUILD_EXECUTABLE)  //编译所生成的目标文件格式

三.Android.mk编译静态库动态库

编译动态库:编译类型修改为 BUILD_SHARED_LIBRARY

编译静态库:编译类型修改为 BUILD_STATIC_LIBRARY

Android.mk 编译多个目标文件

编译动态库

C/C++ 文件编译生成静态库.so文件参考如下:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
# 生成libhell.so
LOCAL_MODULE = libhello 
​​​LOCAL_CFLAGS = $(L_CFLAGS) 
LOCAL_SRC_FILES = hello.c 
LOCAL_C_INCLUDES = $(INCLUDES) 
LOCAL_SHARED_LIBRARIES := libcutils 
LOCAL_COPY_HEADERS_TO := libhello 
LOCAL_COPY_HEADERS := hello.h 
#编译动态库 BUILD_SHARED_LIBRARY
include $(BUILD_SHARED_LIBRARY) 

编译静态库

C/C++ 文件编译生成静态库.a文件参考如下:

#编译静态库 
LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
# 生成libhell.a
LOCAL_MODULE = libhello
LOCAL_CFLAGS = $(L_CFLAGS) 
LOCAL_SRC_FILES = hello.c 
LOCAL_C_INCLUDES = $(INCLUDES) 
LOCAL_SHARED_LIBRARIES := libcutils 
LOCAL_COPY_HEADERS_TO := libhello 
LOCAL_COPY_HEADERS := hellos.h 
# 编译 静态库 BUILD_STATIC_LIBRARY
include $(BUILD_STATIC_LIBRARY) 

四.Android引入系统库

引用静态库
LOCAL_STATIC_LIBRARIES += libxxxxx

引用动态库
LOCAL_SHARED_LIBRARIES += libxxxxx

引用第三方库文件
LOCAL_LDFLAGS:=-L/PATH -Lxxx

引用第三方头文件
LOCAL_C_INCLUDES :=path

五.Android编译apk jar包

编译apk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 生成hello apk
LOCAL_PACKAGE_NAME := hello
include $(BUILD_PACKAGE)

 编译jar包:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 生成 hello
LOCAL_MODULE := hello
# 编译生成静态jar包
include $(BUILD_STATIC_JAVA_LIBRARY)
#编译生成共享jar
include $(BUILD_JAVA_LIBRARY)

六.Android.mk 中的判断语句

ifeq($(VALUE), x) #ifneqdo_yeselsedo_noendififeq/ifneq:根据判断条件执行相关编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算 - 弹性计算技术全解与实践

一、引言 在过去的十年里,云计算从一个前沿概念发展为企业和开发者的必备工具。传统的计算模型通常局限于单一的、物理的位置和有限的资源,而云计算则通过分布式的资源和服务,为计算能力带来了前所未有的"弹性"。 弹性:…

###C语言程序设计-----C语言学习(10)#函数再探

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 基础知识的学习 1.不返回结果函数 2.局部变量 3.全局变量 4.…

盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?

写在开头 在Java的世界里万物皆对象。但我认为是万物皆数据,世界由各种各样数据构建起来,我们通过程序去实现数据的增删改查、转入转出、加减乘除等等,不同语言的实现方式殊途同归。由此可见,数据对于程序语言的重要性。 这段话…

6.electron之上下文隔离,预加载JS脚本

如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…

ClickHouse时区

clickhouse数据库的时间是UTC时间。服务器默认的是上海时间。 sudo vim /etc/clickhouse-server/config.xml clickhouse默认的时区是注释的就是UTC时间 %F 表示日期,格式为 YYYY-MM-DD。%T 表示时间,格式为 HH:MM:SS。 因此,formatDateT…

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 命名空间 命名空间的定义 命名空间的使用 命名空间的嵌套使用 C输入&输出 std命名空间的使用惯例&…

Mysql-数据库优化-客户端连接参数

客户端参数 原文地址 # 连接池配置 # 初始化连接数 spring.datasource.druid.initial-size1 # 最小空闲连接数,一般设置和initial-size一致 spring.datasource.druid.min-idle1 # 最大活动连接数,一个数据库能够支撑最大的连接数是多少呢? …

互联网医院|互联网医院系统创新诊疗模式

互联网医院,看似简单却隐藏着复杂的操作。想要在线上开展合法合规的诊疗业务,并非易事。有三个关键要素不可少:一是符合当地政策要求的线下实体医疗机构;二是合法合规的互联网医院系统;三是通过申办获得的互联网医院牌…

Java面向对象 构造器的重载

目录 创建类测试构造器的重载分析 创建类 public class Person02 {//属性:String name;int age;double height;//空构造器public Person02(){}public Person02(String name,int age,double height){//当形参名字和属性名字重名的时候,会出现就近原则&am…

外汇天眼:Vistova──假投顾带单获利400%,黑平台一再拖延不出金

在这个物价高涨的时代,愈来愈人意识到投资抗通胀的重要性,但因缺乏相关的专业知识而感到迷茫,甚至因此误信诈骗集团保证获利、稳赚不赔的话术,蒙受极大的金钱损失。 不久前,一位投资人向外汇天眼爆料Vistova这平台&…

入侵报警系统行业研究:智能化潮流助力市场维持正增长

侵报警系统intruder alarm system(IAS)利用传感器技术和电子信息技术探测并指示非法进入或试图非法进入设防区域(包括主观判断面临被劫持或遭抢劫或其他危急情况时,故意触发紧急报警装置)的行为,处理报警信息、发出报警信息的电子系统或网络。 当入侵行为…

pycharm 配置 conda 新环境

1. conda 创建新环境 本章利用pycharm将conda新建的环境载入进去 关于conda的下载参考上一章博文:深度学习环境配置:Anaconda 安装和 pip 源 首先利用conda 新建虚拟环境 这里按 y 确定 安装好如下:这里两行命令代表怎么激活和关闭新建的虚…