NDK入门学习
文章平均质量分 73
Android NDK入门学习
牛八少爷
工欲善其事,必先利其器
展开
-
CreateProcess error=2, 系统找不到指定的文件。
1. 错误描述CreateProcess error=2, 系统找不到指定的文件。2. 错误原因NDK没有配置;3. 解决方案项目配置NDK; File-> Project Structure -> SDK Location,配置ndk路径原创 2020-06-17 16:31:07 · 5019 阅读 · 0 评论 -
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-14.
1.错误描述Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-14.D:/ProgramFiles/Android/ndk15/build//../build/core/build-binary.mk:688: Android NDK: Module yuv depends o...原创 2019-07-19 17:21:37 · 15338 阅读 · 1 评论 -
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
转载:https://www.cnblogs.com/dongweiq/p/9779142.html今天把ndk升级了,但之前的串口通信的例子却无法编译了,一直报错No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android后来google了下,查到原因htt...原创 2019-01-12 20:05:15 · 225 阅读 · 0 评论 -
Error:A problem occurred configuring project ':app'. > executing external native build for cmake E:\
1. 错误描述Error:A problem occurred configuring project ':app'.> executing external native build for cmake E:\ShoukeWork\NativeCommon3\app\CMakeLists.txt2. 错误原因可能配置的ndk路径不对或版本不对;3. 解决方案重新配置的...原创 2019-07-23 14:56:10 · 1562 阅读 · 0 评论 -
Android Studio:Your project contains C++ files but it is not using a supported native build system.
Error: Your project contains C++ files but it is not using a supported native build system. Consider using CMake or ndk-build integration. For more information, go to: https://d.android.com/r/...原创 2018-07-16 04:06:05 · 1552 阅读 · 0 评论 -
Linux/Ubuntu配置NDK环境
1.NDK下载官网:https://developer.android.google.cn/ndk/downloads/选择 xx-liunx-xx.zip2. 配置环境2.1 创建目录打开Terminal,mkdir Programs/Android/2.2 解压NDKunzip -o ndk-r20.zip -d ../Programs/Android2.3 配...原创 2019-07-21 09:33:06 · 1379 阅读 · 0 评论 -
Android.mk用法详解(三)
10. LOCAL_MODULE_FILENAME 模块只设置LOCAL_MODULE而不设置LOCAL_MODULE_FILENAME,就会以“lib”前缀+module名称+“.so”命名生成的动态库名称,如果我们需要自己设置生成动态库名称就可以通过LOCAL_MODULE_FILENAME进行设置; 11. LOCAL_CPP_EXTEN...原创 2018-07-07 15:25:51 · 2196 阅读 · 0 评论 -
Application.mk用法详解
Application.mk文件定义要编译的多个变量的GNU Makefile片段,位于$PROJECT/jni/目录下,$PROJECT是项目目录,另一种方式放到$NDK/apps/目录的子目录下($NDK/apps/<myapp>/Application.mk); Application.mk枚举并描述你的应用需要的模块,这些信息包括:用于针对特定平台进...原创 2018-07-07 16:38:02 · 1839 阅读 · 0 评论 -
AndroidStudio现有项目添加NDK支持(ndk-build编译)
此篇主要以案例讲解在现有项目添加NDK支持,并且使用ndk-build编译库文件;1. 从IDE左侧打开Project窗口,从下拉框选择Project视图2. 导航到app目录下的src的main目录下,右键->New Directory新建一个目录jni;3. 在main的java目录下添加native函数;添加 com.niubashaoye.demo.ndkd...原创 2018-07-15 13:52:36 · 6953 阅读 · 1 评论 -
Android.mk用法详解(二)
7. LOCAL_SHARED_LIBRARIES := avcodec avdevice 此变量是此模块运行中依赖的共享库模块列表,avcodec和avdevice都是前面定义的共享模块库;eg: 8. include $(BUILD_SHARED_LIBRARY) 此变量设置Build System提供的变量执行GNU Makefi...原创 2018-07-07 14:54:02 · 2205 阅读 · 0 评论 -
Android.mk用法详解(一)
Android.mk是Android提供的一个makefile文件,可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/*.cpp文件、jni源文件、指定编译生成*.so共享库文件或者*.a静态库文件,可以定义一个或多个模块,也可以多个模块中使用同一个源文件; Android.mk文档: 1. Android.mk的官方文档:https://...原创 2018-07-07 14:50:13 · 26997 阅读 · 0 评论 -
NDK官网介绍
Android的官网:https://developer.android.google.cn/ndk/ Android的便捷入口:入门指南 :介绍NDK的工作原理和主要组件以及各组件的设置; 官方文档:Android NDK的API参考 示例:包括NDK示例和VULKAN示例 下载: Window(32位和64位)、mac、Linux 64-bit(x86)版本下载...原创 2018-07-07 03:48:22 · 1387 阅读 · 0 评论 -
Android SDK Android NDK Android Studio 官方下载地址
转载:http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html2016.10Android Studio 2.2.1.0https://dl.google.com/dl/android/studio/install/2.2.1.0/android-studio-bundle-145.3330264-windows.exe...转载 2016-10-30 01:42:35 · 1251 阅读 · 0 评论 -
make: *** No rule to make target `jni/NDKDemo2.cpp', needed by `.../objs/NDKDemo/NDKDemo2.o'. stop
make: *** No rule to make target `jni/NDKDemo2.cpp', needed by `obj/local/arm64-v8a/objs/NDKDemo/NDKDemo2.o'. Stop. 错误原因:Android.mk的变量LOCAL_SRC_FILES := NDKDemo2.cpp 找不到jni目录下的...原创 2018-07-09 16:27:57 · 2086 阅读 · 1 评论 -
JNI No implementation found for int com.niubashaoye.simple.jni.JavaTools.addNum(int, int)
No implementation found for int com.niubashaoye.simple.jni.JavaTools.addNum(int, int) (tried Java_com_niubashaoye_simple_jni_JavaTools_addNum and Java_com_niubashaoye_simple_jni_JavaTools_addNu...原创 2018-07-09 17:08:12 · 619 阅读 · 0 评论 -
NDK简介和主要组件
Android NDK是一个开发工具集,允许使用C或C++(原生代码)嵌入到Android的App中;这样做的好处:方便在平台之间进行移植; 重复使用现有库(自己或者别人提供的库) 可以提高性能,特别是游戏类计算密集型应用 提供给别人使用的库,而不是源代码,而且不易反编译,比较安全;NDK主要组件: 1.ndk-build:ndk-bui...原创 2018-07-07 16:44:43 · 603 阅读 · 0 评论 -
NDK开发流程
Android的NDK原生应用开发流程: 1. 设计应用,确定要在Java中实现的部分,以及要以原生代码形式实现部分; 2. 创建Android项目 3. 编写纯原生应用,在AndroidMainfest.xml中声明 NativeActivity类,可以参考原生Activity和应用; 4. 在JNI目录中创建一个Android...原创 2018-07-07 16:59:58 · 386 阅读 · 0 评论 -
Error: Your project contains C++ files but it is not using a supported native build system.
1.错误描述Error:Execution failed for task ':app:compileDebugNdk'.> Error: Your project contains C++ files but it is not using a supported native build system.Consider using CMake or ndk-build ...原创 2019-07-23 17:11:19 · 245 阅读 · 0 评论 -
AndroidStudioNDK开发CMakeLists.txt详解
1.设置CMake版本信息cmake_minimum_required(VERSION versionNum)#CMake版本信息cmake_minimum_required(VERSION 3.4.1)#CMake版本信息cmake_minimum_required(VERSION 3.4.1)2.配置库信息# 配置so库信息add_library( # Se...原创 2018-07-16 04:04:24 · 2590 阅读 · 0 评论 -
AndroidStudio现有项目添加NDK支持(CMake编译)
此篇主要以案例讲解现有项目添加NDK支持,并使用CMake编译;1. 从IDE左侧打开Project窗口,从下拉框选择Project视图2. 导航到app目录下的src的main目录下,右键->New Directory新建一个目录jni;3. 在main的java目录下添加native函数;添加 com.niubashaoye.demo.ndkdemo.JNITo...原创 2018-07-16 02:44:20 · 6328 阅读 · 0 评论 -
AndroidStudio NDK开发C/C++文件自动补全设置
Android Studio添加NDK支持有两种方式,第一种在创建项目时添加“include C/C++ support”,这种C/C++文件中自动补全;如果是现有项目添加NDK支持就不会有自动补全; 解决方案: 1.设置项目的NDK路径:File->Project Structrue ->SDK Location ->设置N...原创 2018-07-15 23:10:44 · 8617 阅读 · 0 评论 -
AndroidStudio不能直接创建C/C++头文件或资源文件解决方案
原因: 1. 这个可能是设置中没有勾选支持 Android NDK的插件; 2. 设置项目打NDK路径;解决方案:File -> Setting -> Plugin ->勾选 Android NDK Support ->重启AndroidStudio 添加支持之后: ...原创 2018-07-16 04:05:27 · 2792 阅读 · 2 评论 -
Android Studio NDK开发-创建支持NDK的项目
Android Studio开发NDK项目有两种方式,一种是给现有项目添加NDK支持,另一种是直接创建支持NDK的项目; 此篇主要以案例形式讲解直接创建支持NDK的项目; 1. 创建新项目是勾选“Include C++ support”,然后下一步选择项目SDK和Activity模版;2. 选择C++支持的版本3. Android Studio创建项目打...原创 2018-07-15 13:51:50 · 1502 阅读 · 0 评论 -
Android Studio配置javah自动生成头文件
一: Javah的配置1. File -> Setting ->Tools -> External Tools,点击加号添加新的Tools; 2. 设置Tools信息Arguments的设置:三个参数:Program:$JDKPath$\bin\javah.exe (设置jdk中javah的路径)Arguments:-classpat...原创 2018-07-15 13:51:32 · 3873 阅读 · 4 评论 -
Android Studio NDK开发简介(一)
1. NDK开发编译和调试需要3个组件:1.Android NDK是一个开发工具集,允许使用C或C++(原生代码)嵌入到Android的App中, 可以参考:NDK入门学习 2.CMake是一个跨平台的编译(Build)工具,旨在构建,测试和打包软件。它不会直接编译出对象,而是根据自定义的语言规则 (CMakeList.txt)生成对应的makefile(Unix平台)或proj...原创 2018-07-15 13:50:52 · 548 阅读 · 0 评论 -
NDK项目添加C/C++通用库
项目名右键-Properties-C/C++ General-Paths and Symbols-Includes-Add-添加ndk中的jni头文件includes路径-Apply; eg: jni头文件路径:D:\ProgramFiles\android\android-ndk-r14b\platforms\android-sdk版本号\arch-arm\usr\...原创 2018-07-09 18:18:55 · 2011 阅读 · 0 评论 -
Type 'jint' could not be resolved Type 'JNICALL' could not be resolved
Unresolved inclusion: <jni.h>Type 'jint' could not be resolvedType 'JNICALL' could not be resolved 这是因为Eclipse的C/C++配置的找不到jni的头文件; 解决方案: 第一种: 简单只在运行时删除错误再进...原创 2018-07-09 18:25:19 · 556 阅读 · 0 评论 -
Android Studio的NDK的两种编译方式ndk-build和CMake
Android Studio开发NDK有两种编译方式,第一种通过ndk-build进行构建,第二种是通过CMake工具进行构建; 1 ndk-buildndk-build是Android NDK r4引入的一个shell脚本,是ndk自己的编译器;ndk-build编译配置在jni目录下创建Android.mk和Application.h或只创建androi...原创 2018-07-16 04:04:54 · 3639 阅读 · 0 评论 -
JNI开发-C/C++调用Java静态函数参数和返回值均为String类型
C/C++调用Java函数参数和返回值均为String类型;Java的CCallJavaTools类:package com.niubashaoye.ndk.jni;public class CCallJavaTools { /** * C/C++调用Java静态函数传递String参数并返回String类型值 * @param str * @retu...原创 2018-07-10 18:53:16 · 2190 阅读 · 0 评论 -
JNI开发-C/C++调用Java函数传参和返回值均为String类型
C/C++调用Java函数参数和返回值均为String类型;Java的CCallJavaTools类:package com.niubashaoye.ndk.jni;public class CCallJavaTools { /** * C/C++调用Java函数传递String参数并返回String类型值 * * @param str * @r...原创 2018-07-10 18:36:02 · 3920 阅读 · 0 评论 -
JNI开发-C/C++调用Java函数计算数字之和
此篇讲解C/C++函数调用Java函数计算数字之和,C/C++传递99和127给Java函数计算数字之和;Java的计算方法CCallJavaTools类:package com.niubashaoye.ndk.jni;public class CCallJavaTools { /** * java实现数字相加 * * @param num ...原创 2018-07-10 18:35:00 · 301 阅读 · 0 评论 -
JNI AllocObject called with pending exception java.lang.NoSuchMethodError: no non-static method z
art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI AllocObject called with pending exception java.lang.NoSuchMethodError: no non-static method "Lcom/niubashaoye/ndk/jni/CCallJa...原创 2018-07-10 18:34:26 · 10899 阅读 · 0 评论 -
JNI开发:Java调用C/C++函数传递Array参数并返回Array值
此篇Java调用C/C++函数来实现给int数组[12,45,67]的每个元素加17;java调用: int array[] = { 12, 45, 67 }; array = jniTools.intArray(array); String resultStr = Arrays.toString(arra...原创 2018-07-09 21:29:45 · 3413 阅读 · 1 评论 -
JNI开发:传递和返回String类型案例
JNI简单的int类型传递参考:Android的NDK项目开发案例 此篇以案例来讲解JNI传递String参数并返回String返回值开发,Java函数传递“牛八少爷”到C/C++函数,C/C++函数给字符串追加“欢迎你!”,并返回追加后的字符串到java的函数; 主要代码如下: java的native方法: ...原创 2018-07-09 21:24:11 · 9456 阅读 · 1 评论 -
NDK项目添加和删除Native Support
项目添加Native Support 项目名右键-Add Tools-Add Native Support 删除项目的Native Support1. 删除.cproject文件;2. 打开.project文件,删除以下内容<buildCommand> <name>org.eclipse.cdt.managedbuilder.c...原创 2018-07-09 18:12:13 · 1536 阅读 · 0 评论 -
NDK开发错误集锦
1. Android requires compiler compliance level 5.0 or 6.0. Found '1.8' instead. Please use Android Tools2.make: *** No rule to make target `jni/NDKDemo2.cpp', needed by `obj/local/arm64-v8a/objs/ND...原创 2018-07-09 16:32:17 · 222 阅读 · 0 评论 -
Android的NDK项目开发案例
今天开发一个Android调用C/C++的案例,通过java调用C语言的函数来计算两个数的和,来了解NDK的开发流程;1. 新建一个Android项目;2. 项目添加native支持 项目右键- Android Tools -Add Native Support,设置so库文件的名称 设置完成后:项目自动生成jni目录和NDK...原创 2018-07-08 16:28:22 · 753 阅读 · 0 评论 -
NDK开发遇到错误-Cannot run program "sh": Launching failed Program "sh" not found in PATH
NDK项目导出到另外一台机子的Eclipse上运行,就会出现一下错误: sh ndk-build all Cannot run program "sh": Launching failedError: Program "sh" not found in PATH PATH=[C:/Program Files/Java/jre1.8.0_162/bin/server;....]...原创 2018-07-08 16:07:49 · 1313 阅读 · 0 评论 -
NDK与JNI的关系
JNI是Java Native Interface(Java本地编码接口),提供一系列API实现Java与C/C++直接互相操作; Android NDK是一个开发工具集,提供一系列工具快速开发C/C++的动态库,并能自动将so和java应用一起打包到Apk; NDK提供工具可以方便JNI调用C/C++,而且提供了交叉编译器可以修改.mk文件生成...原创 2018-07-08 15:24:50 · 2430 阅读 · 0 评论 -
JNI开发-C/C++调用Java函数传递多个参数
C/C++调用Java函数传递多个参数并返回String类型;Java的CCallJavaTools类:package com.niubashaoye.ndk.jni;public class CCallJavaTools { /** * C/C++调用Java函数传递多个参数 * @param num1 * @param str * @param ...原创 2018-07-10 18:53:01 · 4526 阅读 · 0 评论