参考:

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目录然后在编译。

更多相关文章

  1. 使用迅雷代替SDK Manager快速下载Android(安卓)SDK相关
  2. Android原生运行uniapp使用5+app创建项目时的SDK集成步骤(一)
  3. android sdk content loader 一直显示0% 问题解决办法
  4. 基本Dalvik VM调用
  5. Android中 备份短信 还原短信
  6. android背景选择器selector用法汇总
  7. ubuntu环境:下载、编译模拟器平台android内核源码
  8. FileProvider 路径配置策略的理解
  9. Android(安卓)源码编译环境搭建

随机推荐

  1. (二)Android系统信息
  2. Android 自定义View(手写签名)
  3. Android平台开发-Android keypad map-And
  4. DDM dispatch reg wait timeout , Can't
  5. Android实现随屏幕旋转的TextView
  6. 笔记 RelativeLayout:相对布局管理器:
  7. Android2.2 API 中文文档系列(4) —— Mani
  8. Android单元测试之Local unit tests(下)
  9. Android项目开发一
  10. android 仿QQ手机版