参考:
1、Android 使用NDK编译二进制文件并运行
https://blog.csdn.net/u014088294/article/details/49924967
2、ndk 命令编译C或c++代码生成android 动态so库和可执行程序
https://blog.csdn.net/qq_29333911/article/details/81911897
1,添加Windows ndk环境变量到path中,如下:
C:\Users\zeng\AppData\Local\Android\Sdk\ndk-bundle
2,参考如下步骤
首先新建一个HelloWorld文件夹,在其内部建立一个子文件夹jni,
jni包含3个文件夹,hello.c,Android.mk,Application.mk
1. hello.c 代码如下
======
#include
int main(void){
printf("Hello World!\n");
return 0;
}
代码很简单,就是输出一句话
Android.mk文件
======
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_EXECUTABLE)
Application.mk文件
======
APP_ABI := all
如下为我在Windows本地编译的spi测试程序
======
C:\zeng\workspace\Code\MSM8937_code_change\spitestrw>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
[arm64-v8a] Compile : spi_read_write <= spi_read_write.c
[arm64-v8a] Executable : spi_read_write
[arm64-v8a] Install : spi_read_write => libs/arm64-v8a/spi_read_write
[x86_64] Compile : spi_read_write <= spi_read_write.c
[x86_64] Executable : spi_read_write
[x86_64] Install : spi_read_write => libs/x86_64/spi_read_write
[armeabi-v7a] Compile thumb : spi_read_write <= spi_read_write.c
[armeabi-v7a] Executable : spi_read_write
[armeabi-v7a] Install : spi_read_write => libs/armeabi-v7a/spi_read_write
[x86] Compile : spi_read_write <= spi_read_write.c
[x86] Executable : spi_read_write
[x86] Install : spi_read_write => libs/x86/spi_read_write
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
C:\zeng\workspace\Code\MSM8937_code_change\spitest>ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
[arm64-v8a] Compile : spidev_test <= spidev_test.c
[arm64-v8a] Executable : spidev_test
[arm64-v8a] Install : spidev_test => libs/arm64-v8a/spidev_test
[x86_64] Compile : spidev_test <= spidev_test.c
[x86_64] Executable : spidev_test
[x86_64] Install : spidev_test => libs/x86_64/spidev_test
[armeabi-v7a] Compile thumb : spidev_test <= spidev_test.c
[armeabi-v7a] Executable : spidev_test
[armeabi-v7a] Install : spidev_test => libs/armeabi-v7a/spidev_test
[x86] Compile : spidev_test <= spidev_test.c
[x86] Executable : spidev_test
[x86] Install : spidev_test => libs/x86/spidev_test
ZB 2/25: 使用NDK时遇到如下错误:
Please define the NDK_PROJECT_PATH variable to point to it
解决方法参考:
https://blog.csdn.net/yuanjingjiang/article/details/34857623
在用ndk-buld 编译c/c++工程的时候, 会遇到上面提示的错误原因是你的当前目录不是一个名为“jni”的目录,
所以NDK_PROJECT_PATH, APP_BUILD_SCRIPT, NDK_APPLICATION_MK 是一个空的值,
ndk-build就没法只知道怎么编译而终止。
想要解决有两种办法:
a. 一个就是制定上面三个变量的值, 如:我要编译我当前目录的源文件, 当然包含Android.mk 和Application.mk 文件, 可以使用这样的命令编译:
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
b. 就是把这些文件放在一个jni目录下, 进入jni目录然后在编译。