参考:

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. Android项目Android Studio目录结构
  2. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写
  3. android 获取路径目录方法以及判断目录是否存在,创建目录
  4. 数据存储之——Android内、外存储分区&常用存储目录详解(Android
  5. Android gradle build 修改文件名称及目录
  6. 让 Android 可以识别BMP图片文件,且目前Android所支持的所有图片
  7. Android 5.1.1 源码目录结构
  8. Android中的gen文件为空或者不存在的处理方法
  9. Android APK 扩展文件

随机推荐

  1. 为“分裂的”Android平台开发应用的一些
  2. Android(安卓)LBS系列06 位置策略(二)模拟
  3. android工程下assets与raw文件夹
  4. iOS不再美好 安卓收入逼近千万
  5. Android连接远程数据库(PHP+MYSQL)
  6. 全球87%安卓机暴露在风险中!最安全的手机
  7. Android自定义标签列表控件LabelsView解
  8. Android中的样式和主题(Styles and Themes
  9. Android中利用“反射”动态加载R文件中的
  10. Android异步任务的处理方法