继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

jeck猫
关注TA
已关注
手记 460
粉丝 75
获赞 402

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP