Android NDK使用

1. 介绍

这里主要想记录一下Android NDK开发C程序的使用方法

2. ndk下载

google官网或者国内镜像网站下载android-ndk

形如: android-ndk-r--.zip

笔者使用的是CentOS 7 x86-64, 下载的是android-ndk-r17b-linux-x86_64.zip

关于不同到底该使用哪个版本的NDK, 从网上获取的信息来看

使用哪个版本都没问题 新版本的NDK应该是向下兼容的 同时倾向于编译64位

当我们开发ndk应用时, 有两种方式

- 使用独立工具链, 仅依赖Linux
 - 使用ndk工具, 依赖Android

2. 独立工具链

有两种方式可以生成独立toolchain

首先将android-ndk-r17b-linux-x86_64.zip 解压

2.1 make-standalone-toolchain.sh

# ./build/tools/make-standalone-toolchain.sh --platform=android-23 --package-dir=/opt --toolchain=arm-linux-androideabi-4.9WARNING: make-standalone-toolchain.sh will be removed in r13. Please try make_standalone_toolchain.py now to make sure it works for your needs.HOST_OS=linuxHOST_EXE=HOST_ARCH=x86_64HOST_TAG=linux-x86_64HOST_NUM_CPUS=4BUILD_NUM_CPUS=8Auto-config: --arch=armCopying prebuilt binaries...Copying sysroot headers and libraries...Copying c++ runtime headers and libraries...Creating package file: /opt/arm-linux-androideabi-4.9.tar.bz2Cleaning up...Done.

可以看到生成的工具链位于/opt/arm-linux-androideabi-4.9.tar.bz2

参数说明如下:

--platform:    Android API版本(android-23 <=> Android 6.0)--toolchain:   工具链类型,可在toolchains中查看支持的类型--package-dir: 工具链的存放路径

2.2 make_standalone_toolchain.py

# ./build/tools/make_standalone_toolchain.py --arch arm --api 23  --package-dir /opt

没有任何提示, 在/opt目录下生成了arm-linux-androideabi.tar.bz2

参数说明如下:

--arch:        arm,arm64,mips,mips64,x86,x86_64--api:         API version--package-dir: Package location

其中需要说明的是arch, 通常手机都是arm, 但是是32位还是64位则需要判断一下

参考<关于如何区分Android手机是32位还是64位>

3. ndk构建脚本

ndk提供了比较高级的构建脚本来实现ndk的开发

3.1 配置

目录下创建Android.mk和Application.mk; 假定源代码为test.c

Android.mk内容如下

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := testproj

LOCAL_SRC_FILES := \
    test.c

LOCAL_CFLAGS += -Wno-unused-parameter -Wno-pointer-arith \
                -Wno-missing-field-initializers

include $(BUILD_EXECUTABLE)

Application.mk内容如下

APP_ABI := x86_64
APP_BUILD_SCRIPT := /home/user/proj/Android.mk

3.2 编译

使用如下命令即可进行编译

$ export NDK=<ndk>
$ $NDK/ndk-build NDK_PROJECT_PATH=<project> NDK_APPLICATION_MK=<project>/Application.mk
$ $NDK/ndk-build NDK_PROJECT_PATH=<project> clean NDK_APPLICATION_MK=<project>/Application.mk

参考:

<NDK入门指南>

<Android.mk语法>

<理解Android Build系统>
原文链接: https://www.cnblogs.com/hzl6255/p/6088678.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/244400

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午12:06
下一篇 2023年2月14日 上午12:07

相关推荐