在Windows系统中使用NDK编译Android二进制文件并运行

参考:

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 <stdio.h>

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值