NDK

OpenCV学习记录——1.学习Android NDK

你。 提交于 2020-01-20 00:39:59
文章目录 1.前言 2.什么是NDK 3.为什么要用NDK 4.NDK编译出来的目标类型 5.NDK下载和NDK项目的创建 6.写个hello JNI可执行文件 6.1 程序编写 6.2 程序运行 7.相关配置文件的详解 8.写个 hello JNI 调用 so 8.1 程序编写 8.2 API讲解 8.3 程序运行 9.写个 hello from C++ 9.1 目录解析 9.1.1 JNILearn\app\libs 放置库文件 9.1.2 JNILearn\app\build 编译过程以及结果 9.1.3 rules.ninja 生成的编译命令 9.1.4 build.ninja 编译脚本 9.1.5 配置native方法 9.1.5.1 CMakeLists.txt 文件中内容,配置生成一个 so 库 9.1.5.2 build.gradle 9.2 流程分析 9.2.1 C++的代码,使用 CMake,编译成了 libnative-lib.so 库 9.2.2 MainActivity.java 加载 so 库 9.2.3 MainActivity.java 关联 so 库中方法 9.3 相关文档 9.4 JNI 执行调用流程 9.5 添加一个新的方法 10.CMake 和 ndk-build 的关系 11.使用 ndk-build 方案 11.1 jni 目录编写

【备忘】MAC 编译ffmpeg4.2.2的shell脚本

情到浓时终转凉″ 提交于 2020-01-16 01:42:20
1、创建一个文件比如 build_for_andorid.sh , 复制粘贴下面的内容 #!/bin/bash #这里修改的是最低支持的android sdk版本(r20版本ndk中armv8a、x86_64最低支持21,armv7a、x86最低支持16) API=29 # NDK的路径,根据自己的安装位置进行设置 export NDK=/Users/XXX/Library/Android/sdk/ndk-bundle export SYSROOT=$NDK/platforms/android-29/arch-arm64 export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/ # 这里找到对应得文件 function build_android { #相当于Android中Log.i echo "Compiling FFmpeg for $CPU" ./configure \ --prefix=$PREFIX \ --disable-neon \ --disable-hwaccels \ --disable-gpl \ --disable-postproc \ --enable-shared \ --enable-jni \ --disable-mediacodec \ --disable-decoder=h264

AAudio进行音频采集的实现

只愿长相守 提交于 2020-01-15 18:13:34
使用AAudio进行音频采集 前提 OpenSL ES对音频的采集方面有的不兼容,准备实现一个通过AAudio进行音频采集。我刚接触只是踩坑。 上网搜了很久,关于AAudio的资料不多。个人觉得参考 NDK官网AAudio介绍 和 韩曙亮博主的分析 ,足够理解AAudio的相关API用处了,具体的demo可参考 Oboe项目test部分 (直接搜“GitHub Oboe”就可以)。 我个人只是简单的实现了录音/播放功能。 使用软件和NDK: 编辑软件:Android Studio。 NDK版本:r20。 1. 初始化 1.1头文件 # include <aaudio/AAudio.h> // 调用AAudio库 # include <android/log.h> // 打印log # include <iostream> using namespace std ; 1.2 相关变量 // AAudio相关变量 AAudioStream * stream ; AAudioStreamBuilder * builder = NULL ; // 存储数据的相关变量 char g_Buffer [ 1024 * 1024 ] = { 0 } ; // 音频大小限制为1M,可自行修改 int g_dataSize = 0 ; // 存放数据大小 int g_readIndex = 0 ; /

ERROR: jni not found or linux C compiler test faile

我的未来我决定 提交于 2020-01-15 01:02:23
在交叉編譯FFmpeg時,分別遇到以下三種錯誤: ERROR: jni not found linux C compiler test faile ‘s_addr’ in something not a structure or unionr 最後解決方法是,直接更換成FFmpeg 4.0.1版本並搭配NDK 版本 android-ndk-r14b,即可cross compiler。 来源: CSDN 作者: Kelvin_HuangJin 链接: https://blog.csdn.net/Kelvin_HuangJin/article/details/103976679

NDK OpenGL ES 3.0 开发(二十一):3D 模型加载和渲染

杀马特。学长 韩版系。学妹 提交于 2020-01-13 05:14:50
该原创文章首发于微信公众号:字节流动 OpenGL ES 3D 模型加载和渲染 上一节简单介绍了 常用的 3D 模型文件 Obj 的数据结构和模型加载库 Assimp 的编译 ,本节主要介绍如何使用 Assimp 加载 3D 模型文件和渲染 3D 模型。 3D 模型的设计一般是由许多小模型拼接组合成一个完整的大模型,一个小模型作为一个独立的渲染单元,我们称这些小模型为网格(Mesh)。 网格作为独立的渲染单元至少需要包含一组顶点数据,每个顶点数据包含一个位置向量,一个法向量和一个纹理坐标,有了纹理坐标也需要为网格指定纹理对应的材质,还有绘制时顶点的索引。 这样我们可以为 Mesh 定义一个顶点: struct Vertex { // 位置向量 glm : : vec3 Position ; // 法向量 glm : : vec3 Normal ; // 纹理坐标 glm : : vec2 TexCoords ; } ; 还需要一个描述纹理信息的结构体: struct Texture { GLuint id ; //纹理 id ,OpenGL 环境下创建 String type ; //纹理类型(diffuse纹理或者specular纹理) } ; 网格作为独立的渲染单元至少需要包含一组顶点数据以及顶点的索引和纹理,可以定义如下: class Mesh { Public :

Android JNI(一)——NDK与JNI基础

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-11 06:54:02
前言 ndk开发是高级Android 开发必备的技能,也是很多Android开发工程师难以逾越的门槛,因此,学习ndk开发已经是高级Android必备技能,所以我尝试把自己ndk开发经验记录下来,不知之处,请大家多做指教。 导读 在Android OS上开发应用程序,Google提供了两种开发包:SDK和NDK。大家都知道SDK是基于Java开发的,ndk则是基于C/C++。不过,Android 平台从一开就已经支持了C/C++了。Google从一开始就说明Android也支持JNI编程方式,也就是第三方应用完成可以通过JNI调用自己的C动态度。于是NDK就应运而生了。 你可以从Google官方查阅到有许多关于SDK的优秀书籍、文章作为参考,但是Google提供的NDK资源,相对于SDK还是比较少的。本系列文章主要是用于,自己记录自学NDK的经验,并且希望能够帮助到哪些想学习NDK的朋友。 好了,下面我们一步一步的认识SDK吧。 了解什么是ndk 为什么使用NDK NDK到SO JNI的调用 什么是NDK NDK 其中NDK的全拼是:Native Develop Kit。我们可以去官网查看 Android NDK 具体的介绍,大致意思如下图: 英文意思如下: The Android NDK is a toolset that lets you implement parts of

为1900个JNI函数添加日志

浪尽此生 提交于 2020-01-10 14:55:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Android Native库的调试一直是个复杂的事,通常调试方法有输出日志和使用ADT等插件方法,前者较简单, TouchVG 就使用日志输出方式来调试定位: 在CPP文件中 #include "mglog.h" ,在要调试的函数中调用 LOGD("your message %d", someint); 在 Eclipse 中设置 LogCat 过滤串: tag:dalvikvm|AndroidRuntime|vgjni|touchvg|vgstack|libc 最近遇到一些libc崩溃问题,需要在C++代码中定位。首先需要定位JNI入口函数,而SWIG生成 touchvg_java_wrap.cpp 有4万行代码、1900多个JNI函数,不可能一个个去加日志。 当然写脚本自动干这事了,这里是 Python脚本内容 。 <!-- lang: python --> #!/usr/bin/env python # addlog.py: Add logging entry for each JNI function # author: Zhang Yungui <github.com/rhcad> # Usage: # 1. Call `python addlog.py` in jni/build.sh # 2.

Android Studio打包.so文件教程

。_饼干妹妹 提交于 2020-01-07 18:07:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在eclipse里,.so文件eclipse会帮助我们自动打包进apk文件,通常是放在:libs/armeabi目录,然后把libxxx.so拷贝到这个目录下,这样NDK就会自动把这个libxxx.so打包进apk,安装 apk 后位置是在放在your_apk_package_name/lib/目录下。 android studio就有些不同了,下面给大家介绍一下,方法很简单,一学就会。 这里给大家介绍三种方法,来自网络和QQ群: 1.来自 网页 : 将需要打包进apk内的so文件放入项目文件夹下的libs目录,然后在app内(注意是app内的,不是project的)的build.gradle中的android { }中添加如下代码 <span style="font-size:14px;"><span style="font-size:14px;">sourceSets { main { jniLibs.srcDirs = ['libs'] } }</span></span> 添加后是这样的(仅为范例): <span style="font-size:14px;">apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion

Error:A problem occurred configuring project ':app'.

不羁的心 提交于 2020-01-04 21:16:27
Error:A problem occurred configuring project ':app'. 原创雪飘碧鸳 发布于2018-08-31 10:15:34 阅读数 13666 收藏 展开 在github上导入项目,或其他地方导入Android Studio,出现Error:A problem occurred configuring project ':app'.的错误。 其实这种错误有很多种原因,需要对每种情况进行不同的处理才行,这里说的一种情况是JNI的情况,即该项目使用到C/C++库,此时需要引入NDK才行,先看下错误提示Gradle 'trunk' project refresh faile 编译错误日志截图如下: 解决办法: 1,点击File----Project Structure,打开界面后如下图所示: 2.在Android NDK location那里输入NDK位置(如果电脑上有NDK就输入,如果还没下载,可直接点击下方Download进行下载) 3.当NDK路径设置好后,点击OK,重新Build一下就行了 ———————————————— 版权声明:本文为CSDN博主「雪飘碧鸳」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/toyauko/article

[原]android开发环境搭建-ndk

泪湿孤枕 提交于 2019-12-31 01:36:04
一.NDK是什么 NDK是一个工具集,可以编译出android下的原生程序。它包括一套编译工具,下面的库和头文件,文档,示例。 libc (C library) headers libm (math library) headers JNI interface headers libz (Zlib compression) headers liblog (Android logging) header OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers libjnigraphics (Pixel buffer access) header (for Android 2.2 and above). A Minimal set of headers for C++ support 二.NDK适合做什么 NDK适合独立的大运算量的操作,如信号处理,物理仿真等。 三.安装(windows系统下) 1.安装NDK,需要先安装SDK,请参考《 android开发环境搭建-sdk 》。 2.从 http://developer.android.com/sdk/ndk/index.html 下载最新的NDK。 3.解压。 4.NDK已经安装完了,但为了能编译,还需要安装cygwin。在这里下载 http://www