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

    最近因为需要要学习Android开发,顺便也看看jni和Ndk,可能以后要在android中用c++代码。

    ndk将.c文件编译成so文件需要使用到Android.mk,它指定了在编译的时候要链接和使用的库,以下是最普通的写法:

LOCAL_PATH:=$(call my-dir)  //设置需要编译的文件的路径,my-dir代表当前路径

include $(CLEAR_VARS)        //这是ndk提供的一个脚本,用于清除上一个模块编译的时候
                             //用到的带LOCAL前缀(除了LOCAL_PATH)的参数
                             //如果一个android.mk要编译多个模块,在每个模块编译前都要加上

LOCAL_MODULE    := ndktest        //模块名字,最后的文件名会在前面加上lib,例如:libndktest.so
LOCAL_SRC_FILES := ndktest.cpp    //模块所需要的.c/.cpp文件
LOCAL_LDLIBS    := -lm -llog      //模块所需要包含的库

include $(BUILD_SHARED_LIBRARY)    //这一句使用了ndk的脚本,指明生成的是动态库

再之后若还用到其他语句再在此记录。

在Android Studio中,要想使用Android.mk文件,需要右键模块名,选择Link C++ Project with gradle,

然后在Bulid-system上选择 ndk-bulid ,下面的文件选中刚刚编写的android.mk文件,点击确认。

此时在Android Studio中就可以对c++代码进行补全了,没有用这个之前一直不能补全,好像是这个文件链接后AS自动将c++库包含进了模块中。

最后执行ndk目录下的命令 ndk-bulid 即可生成.so文件,这里我是将ndk-bulid加入了环境变量,所以可以直接使用,没有加入的可以将ndk根目录包含进环境变量,就可以直接使用了。

经过编译后,有下图就是编译成功了:

最后可以在libs下找到so文件,由于并没有在android.mk下指定要生成的是哪种版本的so,所以这里全都生成出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值