android开发实践之ndk编译命令简单示例

 更新时间:2017年06月22日 14:18:55   作者:爱因私谈  
这篇文章主要给大家介绍了在android中ndk编译命令使用的相关资料,文中详细介绍了ndk-build命令行参数,并通过简单的示例代码给大家介绍了如何编写 .c 文件,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载和运行的库或者应用程序。

默认情况下,使用NDK编译c/c++代码,需要将该代码放置到任一个Android应用工程的jni目录下,然后编写相应的Android.mk文件,并执行ndk-build命令完成编译。其实你也是可以在任意目录下去编译native代码的,只需要在ndk-build命令后面添加相应的命令行参数即可,这里给出一些常用的ndk-build命令行参数,方便大家灵活地使用NDK编译自己的native代码,具体的示例我将会在后续的文章中给出。

ndk-build命令行参数

1、ndk-build NDK_LOG=1

用于配置LOG级别,打印ndk编译时的详细输出信息

2、ndk-build NDK_PROJECT_PATH=.

指定NDK编译的代码路径为当前目录,如果不配置,则必须把工程代码放到Android工程的jni目录下

3、ndk-build APP_BUILD_SCRIPT=./Android.mk

指定NDK编译使用的Android.mk文件

4、ndk-build NDK_APPLICATION_MK=./Application.mk

指定NDK编译使用的application.mk文件

5、ndk-build clean

清除所有编译出来的临时文件和目标文件

6、ndk-build -B

强制重新编译已经编译完成的代码

7、ndk-build NDK_DEBUG=1

执行 debug build

8、ndk-build NDK_DEBUG=0

执行 release build

9、ndk-build NDK_OUT=./mydir

指定编译生成的文件的存放位置

10、ndk-build -C /opt/myTest/

到指定目录编译native代码

例:

编写 .c 文件

假设你在 ~/math 目录下编写了一个 math.c 文件,内容如下:

#include <stdio.h>
int add( int a , int b ) {
return a+b;
}

编写 Android.mk 文件,内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := dmath
LOCAL_SRC_FILES := math.c
include $(BUILD_SHARED_LIBRARY)

在 ~/math 目录下,执行 ndk-build 命令,参数如下:

$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

或:

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

NDK_PROJECT_PATH 指定了需要编译的代码的工程目录,这里给出的是当前目录,APP_BUILD_SCRIPT给出的是Android makefile文件的路径,当然,如果你还有 Application.mk 文件的话,则可以添加NDK_APP_APPLICATION_MK=./Application.mk

执行完ndk-build命令后,你会发现当前目录下,生成了 obj 和 libs 文件夹,这样,你的libdmath.so动态库就已经制作完成了,在 libs/armeabi 目录下。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Android实现简易版弹钢琴效果

    Android实现简易版弹钢琴效果

    这篇文章主要为大家详细介绍了Android实现简易版弹钢琴效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Android四大组件:Activity/Service/Broadcast/ContentProvider作用示例

    Android四大组件:Activity/Service/Broadcast/ContentProvider作用示例

    Android是一种基于Linux,自由及开放源代码的操作系统,Android分为四个层,从高层到底层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层,Android有四大基本组件:Activity、Service服务、BroadcastReceiver广播接收器、Content Provider内容提供者
    2023-11-11
  • Android底部菜单栏(RadioGroup+Fragment)美化

    Android底部菜单栏(RadioGroup+Fragment)美化

    这篇文章主要介绍了Android底部菜单栏RadioGroup+Fragment美化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Android实现获取验证码倒计时功能

    Android实现获取验证码倒计时功能

    这篇文章主要为大家详细介绍了Android实现获取验证码倒计时功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android 图片特效如何实现及总结

    Android 图片特效如何实现及总结

    这篇文章主要介绍了Android 图形特效如何实现及总结的相关资料,这里对Android图像特效的实现比如:旋转,放大,缩小,倾斜等,需要的朋友可以参考下
    2016-12-12
  • Android Studio Kotlin代码和java代码相互转化实例

    Android Studio Kotlin代码和java代码相互转化实例

    这篇文章主要介绍了Android Studio Kotlin代码和java代码相互转化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android自定义View实现价格区间选择控件

    Android自定义View实现价格区间选择控件

    这篇文章主要为大家详细介绍了Android如何利用自定义View实现价格区间选择控件,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-11-11
  • 详解Android 中的文件存储

    详解Android 中的文件存储

    这篇文章主要介绍了Android 中的文件存储的相关资料,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • Jetpack Compose惯性衰减动画AnimateDecay详解

    Jetpack Compose惯性衰减动画AnimateDecay详解

    这篇文章主要为大家介绍了Jetpack Compose惯性衰减动画AnimateDecay详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android studio git创建与删除标签(Tag)的教程详解

    Android studio git创建与删除标签(Tag)的教程详解

    这篇文章主要介绍了Android studio git创建与删除标签(Tag)的教程详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论