https://www.jianshu.com/p/41d3147a5e07 从API 21(Android 5.0)开始Android提供C层的NDK MediaCodec的接口. Java MediaCodec是对NDK MediaCodec的封装,ijkplayer硬解通路一直使用的是Java MediaCodec接Surface的方式. 本文的主要内容是:在ijkplayer框架内适配NDK MediaCodec,不再使用Surface输出,改用YUV输出达到软硬解通路一致的渲染流程.…
RT, Android NDK中的C++调试, GDB调试比较麻烦,在ADT Eclipse中: 1.配置好NDK给工程加上Native Support 2.编译中加上NDK_DEBUG=1 3.然后改造下mk文件: #APP_DEBUG will be set by android-ndk if NDK_DEBUG=1 is set. ifdef APP_DEBUG ifeq ($(APP_DEBUG),true) CFLAGS+= -O0 -g LOCAL_CFLAGS+= -D_DEBUG…
http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-opencv-development-3/ Android Ndk and Opencv Development 3 NOV 18TH, 2013 Android NDK 和 OpenCV 整合开发总结(3) 终于写到第三节啦,虽然很累,但是还是要坚持,坚持写完这3篇文章. 这一节的主要内容是OpenCV在Android NDK开发中的应用,包括下面几个方面的内容:…
生活 这一个礼拜过得真的是苦不堪言,上周因为打球脚踝直接扭伤,肿的想猪蹄一样,然后休息几天消肿了,可以缓慢龟速的行走了,然而五一回来上班第一天,上班鞋子还能穿上,下班脚已插不进鞋子里面了,好吧,又肿回来了,苦逼. 正文 回到正文,上篇我们已学习到了Android NDK开发之从环境搭建到Demo级十步流,主题是DNK环境搭建和Demo示例开发步骤,而今天我们要学习的是通过JNI实现Java和C之间的交互. 对于JNI的理解,上一节也已讲过,这里在回顾下: JNI:Java Native Inte…
无论linux还是mac在jni目录中直接运行  ndk-build 就可以生成 lib目录及所需要的 so文件: windows 装上lnx模拟器也是一样: 每次修改完 c++代码, 都要运行一下 ndk-build,然后在 eclipse中运行 java 程序:非常之麻烦:   之所以麻烦,归根于对强大的eclipse ide环境的不熟悉: 其实 eclipse可以配置 jni的自动编译选项: 及每次编译的时候 java 代码由 java编译器编译:  而 jni中的c++代码,则由 ndk…
因为最近在整合Android 上RTSP播放器的网络库,因需要调用自己编译的网络库,调用一直出现问题,开始时是直接在Android.mk 中加入LOCAL_SHARED_LIBRARIES := libxxx,以为是直接调用成功了,结果后面的各种测试,结果悲剧了,查出是调用网络库的问题, 后面再网上找Android NDK调用第三方动态库的方法,结果是网上的方法各异,有的还不能实现,怀疑是C2C(Copy to Copy)的结果,严重鄙视一下! 便自己在ubuntu下写了一个简单的测试程序,外部…
1.android.useDeprecatedNdk=true Error:Execution failed for task ':app:compileDebugNdk'.> Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-…
NDK 是什么 NDK 全称 Native Development Kit,可以让您在 Android 应用中调用 C 或 C++ 代码的工具. NDK 好处 1.NDK 可以生成 .so 文件, 方便代码共享: 2.增加反编译的难度: 3.提高性能. NDK 构建 版本说明 Android Studio:3.0.1 Android Plugin for Gradle: com.android.tools.build:gradle:3.0.1 Gradle:4.1 效果预览 如图是使用命令 nd…
近期在学android NDK开发,折腾了一天,最终可以成功在ADT中设置断点单步调试本地C/C++源码了.网上关于这方面的资料太少了,并且大都不全,并且调试过程中会出现各种各样的问题,真是非常磨人.程序员就得有耐心. 把自己的调试过程记录下来.希望对须要的朋友有帮助. 在看本文之前,请先确保你已经成功编译了一个android NDKproject,而且可以在模拟器或者真机上执行.至于怎么编译NDKproject,包含配置.生成.so文件等等.可以參考我的前一篇博客:http://blog.cs…
 原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各个平台的SDK,遇到了不少问题,也从中了解了不少知识,之前一直觉得没啥好写的,毕竟做了4个月的游戏开发,也没有碰上什么真正的大问题,cocos2dx的引擎包得也很好,能让人把大部分时间都关注在游戏逻辑.效果的处理上,当然,之前的libevent还是小坑一下,但是和后来遇到的相比,也算不上什么了. 我…
Coroutines在Android中的实践 前面两篇文章讲了协程的基础知识和协程的通信. 见: Kotlin Coroutines不复杂, 我来帮你理一理 Kotlin协程通信机制: Channel 举的例子可能离实际的应用代码比较遥远. 这篇我们就从Android应用的角度, 看看实践中都有哪些地方可以用到协程. Coroutines的用途 Coroutines在Android中可以帮我们做什么: 取代callbacks, 简化代码, 改善可读性. 保证Main safety. 结构化管理和…
本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse->Window->Preferences->Android->NDK ,选择NDK的路径,然后Apply即可. 新建一个名为AndroidJNI_CathcThrow的Android工程,新建一个jni的文件夹,其目录下文件树列表如下: ├── jni│   ├── Android.mk│ …
本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse->Window->Preferences->Android->NDK ,选择NDK的路径,然后Apply即可. 新建一个名为AndroidJNI_AccessField的Android工程,新建一个jni的文件夹,其目录下文件树列表如下: ├── jni│   ├── accessfield…
Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html   核心提示:为什么要重视程序的架构设计 对程序进行架构设计的原因,归根结底是为了 提高生产力 .通过设计是程序模块化,做到模块内部的 高聚合 和模块之间的 低耦合 (如依赖注入就是低耦合的集中体现). 这样做的好处是使得程序开发过程中,开发人员主需要专注于一点, 为什么要重视程序的架构设计 对程序进行架构设计的原因,归根结底是为了 提高生产力 .…
前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但是由于音视频开发涉及知识面比较广,入门门槛相对较高,让许许多多开发者望而生畏. 虽然网上有很多的博文总结了音视频打怪升级的路线,但是音视频开发相关的知识都相对独立,有讲"音视频解码相关"的,有讲"OpenGL相关"的,也有讲"FFmpeg相关的",但…
AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. Android NDK 目标: Android虚拟机允许你的应用在源码中通过JNI调用本地代码(c/c++)中实现的方法们.概括起来,这表示: --你的应用的java源代码中要声明一个或多个方法,这些方法前面需有'native'关键字,这表明它们被本地代码实现.如: native byte[] load…
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41805719  上篇文章讲述了Android NDK开发的一些基本概念,以及NDK的环境搭建,相信看过的朋友NDK开发环境搭建应该是没有问题了,还没有搭建或者不知道怎么搭建的朋友请点击这里.那么这篇文章,我们跟刚学Java编程语言一样,从世界知名程序“Hello World!”开始,开发出我们的第一个NDK程序. NDK目录简单介绍         在进行NDK开发之前,我们有必…
https://www.jianshu.com/p/5d62a3cf0741 最近使用MediaCodec做编解码H264,写一点东西以免自己再次掉坑. 先说一下具体环境,使用的是,Windows10 + AndroidStudio3.0 + CMake 既然都用了AndroidStudio3.0,就不用android.mk文件啦,直接上CMake. 先上一个,谷歌Android官方链接,可以看到MediaCodec的架构,状态转移图,全部API等. https://developer.andr…
Android NDK 配置: 网上有很多教程,但大部分是旧版本的内容,最新版本的已经改变,为了让大家少走弯路,在这里针对r9的配置进行记录分享. 要玩NDK,你或多或少要用到以下一些东西,所以先做一下准备 有关Eclipse下的Android与NDK配置,请网上搜,不再描述,不用Eclipse的同学请忽略.简单提示一下:网上凡是用Help>Install New Software的方法基本正确: 有关NDK的下载,当然是google官方的,搜索Android NDK即可,我都懒得贴出地址了:…
* Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会用到 MD5 SHA1 SHA256 等 HASH 算法,我们可以在 Native 实现这些功能. Hash 算法 HASH 主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的 128 位的编码里,叫做 HASH 值.也可以说,hash 就是找到一种数据内容和数据存放地址之间的映射关…
在做音频播放的时候,很多公司使用的是开源的ijkplayer播放器,ijkplayer底层是基于ffmpeg,在某机型上面可能常常遇到各种问题.今天整理了大家在使用ijkplayer中遇到的问题,以及根据ijkplayer社区issue和solution方案.如下: 1.直播技术总结(三)ijkplayer的一些问题优化记录 https://blog.csdn.net/hejjunlin/article/details/57075026 2.视频直播技术(四):使用Ijkplayer播放直播视频…
1.1 JNI(Java Native Interface) 提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术 1.2 NDK(Native Development Kit) Android NDK 是一组允许您将 C 或 C++("原生代码")嵌入到 Android 应用中的工具,NDK描述的是工具集. 能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用: 在平台之间移植其应用. 重复使用现有库,或者提供其自己的库供重复使用.…
本篇介绍一下直播技术中推流与引流的简单实现. 1.流媒体服务器测试 首先利用快直播 app (其他支持 RTMP 推流与引流的 app 亦可)和 ffplay.exe 对流媒体服务器进行测试. 快直播 app 下载地址: https://apkpure.biz/cn.nodemedia.qlive/快直播 快直播的推流界面和引流界面: Windows 下利用 ffplay 进行引流,命令行执行: ffplay rtmp://192.168.0.0/live/test # ip 地址换成流媒体服务…
最近又频繁遇到 NDK 的错误,记录一下debug调试的一些经验,以备后续查看 一般来说,在Android Studio中的Monitor中将过滤器的 LOG TAG 设置为 "DEBUG" 就可以将所有的JNI的错误显示出来了.如果看不明白报错信息,就要用到下面的工具. ndk-stack Usage: ndk-stack -sym [-dump ] -sym Contains full path to the root directory for symbols. -dump Co…
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android程序,首先你必须了解C语言.JAVA语言以及Linux操作系统,这样可以帮助你开始上手,当然不是说你必须是大牛才能进行NDK开发,下面我们来一起实现一个简单的NDK程序. 第一步,创建Android工程 打开开发环境eclipse,在左侧空白区域,右键单击创建Android工程(非常简单,不再赘述)…
神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理,通过在线视频教育网站,我初步了解了NDK的神秘面纱,好东西自然要分享,接下来我们就一起来认识一下Android NDK开发. 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三…
*由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec public final class MediaCodec extends Object Java.lang.Object → android.media.MediaCo…
本文介绍Windows环境下搭建Android NDK开发环境,并创建一个简单的使用Native代码的Android Application. 一.环境搭建 二.JNI函数绑定 三.例子 一.环境搭建 1. 操作系统:Windows7 64位 2. 安装Java,最新的JDK8貌似还不支持,敢于折腾的同学可以试试,下载JDK7安装即可,别忘了添加JDK的bin目录到PATH环境变量.http://www.oracle.com/technetwork/java/javase/downloads/j…
2016.12 Android Studio Windows Includes Android SDK https://dl.google.com/dl/android/studio/install/2.2.3.0/android-studio-bundle-145.3537739-windows.exe No Android SDK https://dl.google.com/dl/android/studio/install/2.2.3.0/android-studio-ide-145.35…
背景: 最近一个月一直在做移植库的工作,将c代码到share library移植到Android平台.这就涉及到Android NDK(native develop kit)内容.这里只想记录下JNI(java native interface)经常遇到到问题. 问题1.  忘记delete local reference.带New到方法(如:NewByteArray)这样到方法比较好辨认,需要手动调用DeleteLocalRef()来释放(返回值除外).比较特殊的一个方法是:GetByteAr…