Android.mk学习记录

Android JNI学习笔记(三)-编译文件Android.mk、Application.mk 与camke 1. 前言在android2.2中,加入了cmake编译,而以前都是用Android.mk、Application.mk的,今天就来记录下,他们的配置选项。2. Android.mkAndroid.mk在jni目录下,用于描述构建系统的源文件以及 shared libraries 。文件格式如下: 以LOCAL_PATH变量开始 LOCAL_PATH := $(call my-dir) 紧接着是C 阅读详情
Android.mk学习记录
ANDROID-MK.html 描述了Android.mk语法来编译用c/c++写的文件用ndk


Android.mk文件用来描绘编译源代码的,具体的:
          1、这个文件是一个真正的小的GNU makefile片段,这个文件将会被解析一次或多次
          2、这文件语法可以允许你去组织文件模块化‘modules’,每个模块可能是
                   一个静态的模块, a static library
                   一个共享模块, a shared library
          只有共享库(shared libraries)将会安装到你的应用中,静态的库可以用来生成共享库
          可以写多个Android.mk文件,每个是一个模块
          3、编译系统自动计算依赖文件

          注意:这个语法是非常接近Android平台源码的,这样做的意图是允许使用‘external’库下的源码给系统开发者




1、样例
          samples/hello-jni
                 src 下是java源码
                 jni下有本地代码 ->jni/hello-jni.c

                 其中jni/Android.mk文件如下:


                 LOCAL_PATH := $(call my-dir)

                 include $(CLEAR_VARS)

                 LOCAL_MODULE    := hello-jni


                LOCAL_SRC_FILES := hello-jni.c


                include $(BUILD_SHARED_LIBRARY)




解释:

LOCAL_PATH := $(call my-dir)

一个Android.mk文件必须开始定义一个LOCAL_PATH变量,这个变量用于定位源文件的路径,这个例子,macro(宏)宏函数 my-dir,由编译系统提供,用来返回当前的工作目录


include $(CLEAR_VARS)
CLEAR_VARS有编译系统提供,指向特定的GNU makefile,这将会清楚许多LOCAL_xxx变量,eg,LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,etc,还有LOCAL_PATH,这个是必须的,因为所有的编译控制文件被解析在一个单一的GNUmake执行上下文,这里的所有的变量都是全局变量

LOCAL_MODULE := hello-jni

LOCAL_MODULE 每个这样的变量必须唯一且没有空格,注意,系统会自动的加上前缀“lib”和“.so”,所以不必写其他的,这个生成为:libhello-jni.so


LOCAL_SRC_FILES := hello-jni.c


LOCAL_SRC_FILES 包含一系列的c/c++源文件,这些将会编译成一个模块

注意:不要列出头文件和included文件,因为编译系统讲自动计算依赖性
c++的扩展名是cpp


include $(BUILD_SHARED_LIBRARY)


BUILD_SHARED_LIBRARY 这个变量有编译系统提供,用于指向一个GNU Makefile文件,主要用于搜接所有你定义的信息,如:LCOAL_XXX 和include $(CLEAR_VARS),并且决定怎样去编译,生成一个共享库,
BUILD_STATIC_LIBRARY 生成静态库





记一次ndk编译jpeg-turbo库中出现的坑人问题,jni图片压缩问题 环境 win7 64位 cmake 3.4.1 Android studio 3.1.3   之前看到网上有jni方式压缩图片,就看了一下,参照别人的代码进行了实验,但是结果怎么也无法编译通过。 参照博客:https://blog.csdn.net/hqiong208/article/details/53667661 使用CMakeLists文件方式编译,突然觉得这个比Android... 阅读详情

相关推荐

AndroidFramework学习记录(二)---Android.mk的学习

Android Framework(二) – Android.mk的学习 author:朱红喜 2020-10-11 notice:该文件一直会更新->未完待续 1. Android.mk是什么 Android.mk构建系统解析一次或多次的微小GNU makefile 片段,用于描述源代码中的构建规则,例如,要描述要构建的源文件、构建的输出格式、描述文件之间的依赖、库和包的导入等其他的业务。 2. 最简单的Android.mk组成 LOCAL_PATH := $(call my-dir) inc

qq_40731414的博客 310

ANDROID-MK.html

Android.mk file syntax specification Introduction: ------------- This document describes the syntax of Android.mk build file written to describe your C and C++ source files to the Android NDK

shengnan_wu的专栏 1382

Windows 11最新WDK安装避坑指南:从Visual Studio配置到KMDF驱动开发

本文提供了在Windows 11系统上进行KMDF驱动开发的完整环境搭建与实战指南。针对最新WDK与Visual Studio的配置变化,详细解析了从独立安装WDK/SDK、创建首个KMDF驱动项目,到编译排错、部署调试的全流程,帮助开发者高效避坑,顺利开启Windows内核开发。

weixin_29302047的博客 526

NDK帮助文档学习--ANDROID-MK.html

android-ndk-r7b\docs ANDROID-MK.html 需要首先阅读docs/OVERVIEW.html 本文介绍了Android.mk build file的语法 Overview: --------- An Android.mk file is written to describe your sources to the build system.

bjutstar的专栏 2764

ST7789驱动实战:从SPI时序到RGB565显示的完整配置解析

本文详细解析了ST7789液晶驱动芯片的SPI时序配置与RGB565显示实现,从数据手册解读到代码实战,涵盖SPI接口配置、关键寄存器设置及完整初始化流程。通过优化DMA传输和常见问题排查,帮助开发者高效驱动ST7789显示屏,适用于嵌入式显示项目开发。

weixin_29162439的博客 184

组态王|通过日历控件选择时间段查询历史报警

哈喽,你好啊,我是雷工!这节记录下查询历史报警信息的功能实现。以下为实现笔记。

做有价值的事,积累有价值的笔记! 3763

Android.mk 各变量的解析(根据NDK的ANDROID-MK.html文档)

Android.mk 各变量的解析

Abel的专栏 763

STM32 使用IO口模拟I2C时序

上一篇《I2C协议详解》 我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对...

8937

Android.mk用法详解(一)

       Android.mk是Android提供的一个makefile文件,可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/*.cpp文件、jni源文件、指定编译生成*.so共享库文件或者*.a静态库文件,可以定义一个或多个模块,也可以多个模块中使用同一个源文件;        Android.mk文档:       1. Android.mk的官方文档:https://...

牛八少爷的专栏 2万+

obisidian插件之【templater】模板的中文说明书

Templater 是一种模板语言,可让您将变量和函数结果插入到笔记中。它还允许您执行操作这些变量和函数的 JavaScript 代码。使用 Templater,您将能够创建强大的模板来自动执行手动任务。

m0_55795604的博客 1万+

运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案

本文主要介绍了运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案,希望能对学习和使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

关于android.mk学习记录

以谷歌core的内置第三方应用的方式记录下学习内容吧 一下是在android 5.0 新添加的LOCAL_PREBUILT_JNI_LIBS方法用户提取第三方应用的lib方法 LOCAL_STATIC_JAVA_LIBRARIES则加载加载静态库的方式  这样用于android5.0中方便理解第三方应用内置LOCAL_PATH := $(call my-dir) # ----------

喵了个咪的博客 8159

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5591

[学习记录] Android.mk分析

一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,

shenmay2012的专栏 845

手把手教你学Simulink--基于电能质量与无功补偿的场景实例:统一电能质量调节器(UPQC)的联合控制仿真

在现代电力系统中,电能质量问题有源电力滤波器(APF)→ 治理谐波与无功动态电压恢复器(DVR)→ 补偿电压暂降/暂升静止无功发生器(SVG)→ 无功补偿与电压支撑而统一电能质量调节器(Unified Power Quality Conditioner, UPQC)是一种集串联补偿与并联补偿于一体的全能型电能质量治理装置✅ 电压类问题:暂降、暂升、不平衡、闪变✅ 电流类问题:谐波、无功、三相不平衡✅ 实现双向有功交换(储能型)串联单元(DVR功能):串联于线路,控制电源侧电压质量并联单元。

MHD0815的博客 238

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Cocos2d-x3.2移植android总结

我这里是按照自己弄的过程写出来作为心得用,可能步骤会有点乱,如果可以帮到个别遇到这类问题的,大家可以跳过个别步骤,看真正的有需要的步骤 自己用的是VS2012、cocos2d-x3.2 (1)先把VS项目的文件夹下面的proj.android文件夹导入到ADT里面,还要导入一个cocos2d-x目录下的这个文件夹进入ADT中 E:\Cocos2d-x3.2\cocos2d-x-3.2\coc

u010450926的专栏 1160

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

学习笔记 Android.mk 自动搜索

#宏函数my-dir返回编译系统提供的当前路径,即Android.mk的目录 #如(HelloWorld/proj.android/jni/XX) LOCAL_PATH := $(call my-dir) #初始化模块 重置除LOCAL_PATH变量以外的所有变量 include $(CLEAR_VARS) #导入库目录 $(call import-add-path,$(LOCAL_P

V-LEG的游戏开发专栏 3569

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android JNI学习一

记录一下自己学习JNI的过程,目标是做一个小demo,实现apk简单调用C或C++语言,从而熟悉JNI过程。并记录错误。可以实现java调用C或C++语言,并且从C或C++回调java。 以下为个人观点,未必正确,可不参考。 JNI就是java调用本地方法的意思,具体来说就是android apk里java调用.so为后缀的库文件里的C或C++函数。 我个人认为java调用C有两种,一种是j

u013820413的专栏 626

android mk与bp,Android.bp你真的了解吗

Android.bp你真的了解吗前言最近在捣鼓Android 9 和10的build系统,看到一篇比较好的博客,大名鼎鼎的gityuan的,奉上链接理解Android.bp,为了方便学习和更多的人看到,特意重新编辑以发扬光大使更多人看到。一.简介早期的Android系统都是采用Android.mk的配置来编译源码,从Android 7.0开始引入Android.bp。很明显Android.bp的出...

weixin_34342589的博客 2346

Android预装Apk的各种mk文件写法

以下内容是在下从网络搜集,部分内容还未验证,仅供大家学习交流,对使用过程中各种失败无效或因个人原因导致不成功而引起的失落、沮丧、头痛、烦闷、心情不佳等症状并由此引发的一切后果与本人无关,相关内容可能晦涩难懂,与Android系统开发无关人员请立即离开,未成年人请在父母陪同下观看。因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅。一、...

zhaoyufei133的博客 2894

如何编写最普通可用的Android.mk 文件

最近因为需要要学习Android开发,顺便也看看jni和Ndk,可能以后要在android中用c++代码。 ndk将.c文件编译成so文件需要使用到Android.mk,它指定了在编译的时候要链接和使用的库,以下是最普通的写法: LOCAL_PATH:=$(call my-dir) //设置需要编译的文件的路径,my-dir代表当前路径 include $(CLEAR_V...

moliang136的博客 839

android自动搜索,学习笔记 Android.mk 自动搜索

最近被Android.mk这东西折腾的一晚,这里记录一下。ios就省心多了,不用管那么多,xcode自己解决了。文本工具:MACVIM(文本编辑工具 非常好用 能清楚分清tab 和空格,以免编写.mk时出错)这个文件是向编译器描述源代码文件,便于它去解析。以下是cocos2dx-3.2新建项目时生成的Android.mk文件基本语法:“#” 注释“:=” 赋值“+=” 追加“$” 引用某...

weixin_39669163的博客 308

mk文件释义

背景 IT行业变化很快,需要长期学习新的知识,记忆力有限,有些知识点长期没用,多少有点遗忘,做点记录。  一个小项目的jni目录结构 . ├── Android.mk ├── Application.mk ├── kesyPrint.c ├── kesyPrint.h ├── rename.bat ├── UninstalledObserver.c └── watc

jackson_ke的博客 2266

移植Iperf到android 用来学习linux移植到安卓的例子

Iperf移植记录 1.生成arm编译需要的头文件config.h./configure --host=arm如果需要make cleanmake distclean2.增加Android.mk文件LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := \ compat/delay.cpp \ ...

169
上一篇: NDK开发学习记录
下一篇: JNI学习
清风乐逍遥
博客等级 码龄14年 42粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值