为了账号安全,请及时绑定邮箱和手机立即绑定

android的android.mk,和application.mk文件编写

标签:
Android

android的android.mk,和application.mk文件编写

转载自:https://blog.csdn.net/libinbin147256369/article/details/80026182

1.简介

android.mk是用来描述要编译某个具体的模块,所需要的一些资源,包括要编译的源码、要链接的库等等

application.mk:描述你的程序所需要的模块,即静态库或者共享库

2.静态库和共享库的区别

静态库:在程序编译时连接到代码,一般体积比较大

共享库:在程序运行时动态加载,一般直接引用,体积比较小

3.动手编写简单的android.mk文件

[代码]java代码:

?

1
2
3
4
5
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)


LOCAL_PATH:必须位于android.mk文件的开始,用来定位源文件的位置,$(call my-dir)返回当前路径,即android.mk所在的目录

include $(CLEAR_VARS):清除变量的值,不包括LOCAL_PATH

LOCAL_MODULE:描述的模块,名字唯一,不能有空格,编译系统会生成合适的前缀和后缀

LOCAL_SRC_FILES:参与编译的所有源代码文件

include $(BUILD_SHARED_LIBRARY):把当前模块编译为共享库,前缀为lib,后缀为.so

include$(BUILD_STATIC_LIBRARY):把当前模块编译为静态库,前缀为lib,后缀为.a

4.定义多个android.mk文件

有时候,编译的模块比较多,可以在每一个模块目录下定义一个andorid.mk文件,然后在模块的根目录下放置一个android.mk文件,内容如下:

[代码]java代码:

?

1
include $(call all-subdir-makefiles)

5.动手编写简单的application.mk

[代码]java代码:

?

1
2
APP_ABI := armeabi-v7a 
APP_MODULES=hellp-jni

APP_ABI:支持的ABI平台,上所示为armeabi-v7a,其他的如x86,多个用空格隔开,如armeabi-v7a x86

APP_MODULES:如果指定,那么ndk只会编译列出的模块列表,模块名用空格隔开,如果没有指定,那么ndk会编译所有的android.mk文件声明的所有LOCAL_MODULE模块

原文链接:http://www.apkbus.com/blog-664680-78137.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消