Android JNI学习笔记(三)-编译文件Android.mk、Application.mk 与camke

本文详细介绍了Android JNI开发中Android.mk、Application.mk和CMakeLists.txt的使用,包括NDK的默认变量、模块描述变量、以及在Android Studio中如何配置和使用CMake进行编译。通过实例解析,帮助开发者理解和掌握Android原生代码的编译过程。

1. 前言

在android2.2中,加入了cmake编译,而以前都是用Android.mk、Application.mk的,今天就来记录下,他们的配置选项。

2. Android.mk

Android.mk在jni目录下,用于描述构建系统的源文件以及
shared libraries 。文件格式如下:

  • 以LOCAL_PATH变量开始 LOCAL_PATH := $(call my-dir)
  • 紧接着是CLEAR_VARS变量 include $(CLEAR_VARS)
  • 接下来LOCAL_MODULE变量,定义来将要输出的so文件的名,默认情况下,输出的so为 lib+LOCAL_MODULE变量值+.so,如果变量值前面有了lib,就不会加了,或者变量值后面有.xxx,也会去掉。
  • 接下来是LOCAL_SRC_FILES变量,声明我们的原文件路径,如LOCAL_SRC_FILES := hello-jni.c
  • 最后一行是帮助构建系统联系在一起的。include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := hello-jni

LOCAL_SRC_FILES := hello.cpp

include $(BUILD_SHARED_LIBRARY)

当然,上面只是一个最简单的,下面我们来介绍其他的一些变量和宏。

构建系统提供了许多变量和宏,当然 也允许我们自定义,内置的有以下三种:

  • 以LOCAL_开始,如LOCAL_MODULE
  • 以PRIVATE_, NDK_, or APP
  • 小写字母,如 my-di

如果要自定义的话,建议MY_开头。

2.1 NDK 默认的变量
  • CLEAR_VARS 用来在描述新model之前引入这个脚本,会清除之前的值 include $(CLEAR_VARS)
  • BUILD_SHARED_LIBRARY,告诉构建系统去收集声明的LOCAL_变量的值,然后输出成so include $(BUILD_SHARED_LIBRARY)
  • BUILD_STATIC_LIBRARY,和BUILD_SHARED_LIBRARY类似,不过不会复制到project/packages,但是可以提供给shared libraries用,会输出成.a inc
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值