ndk个版本下载地址选择:https://blog.csdn.net/shuzfan/article/details/52690554
最近Golang,Android NDK、Chrome以及VSCode等都更新了新版,为了让大家更好的下载这些新版本的工具软件,特地对这些工具等进行了一次更新。
2 . 共享动态库编译参数 : 编译动态库需要添加 “-fPIC” 和 “-shared” 两个参数 ;
在上一篇博客 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 ) 对哈夫曼编码进行了介绍 , 如果需要在所有的 Android 手机上使用哈夫曼编码压缩图片, 那就需要使用 libjpeg-turbo 函数库 , 从 libjpeg-turbo/libjpeg-turbo GitHub 项目的 Release 发布版本页面 下载 Release 版本的源码 , 这里下载最新的 Source code (tar.gz) 源码 ;
参考 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 ) 博客 , 使用 Visual Studio 2019 安装 " 使用 C++ 的移动开发 " 开发库 , 并创建 " 动态共享库(Android) " 类型应用 ;
在 NDK 开发中,排查问题遇到的最熟悉的关键字非 backtrace 莫属,Linux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题。当然定位 Native 层代码问题最优的方式还是通过 IDE(AS、VS)或者 GDB 进行 debug 断点调试,本文针对的是使用第三方 C/C++ SDK 出现 crash 的场景。
在 Android NDK 开发中,排查问题遇到的最熟悉的关键字非 backtrace 莫属,Linux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题。
近期需要用到FFmpeg的库,来做视频流的处理,今天尝试实现了一下,手动编译FFmpeg,然后引入到Android项目去使用。
Tombstone是指在分布式系统中用于标记数据已被删除的记录,通常包含删除操作的时间戳和相关信息。
手机user版本还是userdebug或是eng版本:adb shell getprop ro.build.type
看到这些错误一脸懵逼,size_t 不是基础类型吗,怎么会找不到。 google 一番没有任何结果,可以明确知到不是代码逻辑问题,是依赖的环境变量问题,具体的是哪个环境引起的错误,一头雾水。
记得前年开始自己在项目中使用第三方so库的时候就接触NDK编程开发了,只不过哪个时候自己是输出了"Hello Wrold~!"。如今一年多的时间过去了,回头拾起之前的代码再次翻看。
API、CPU、NDK以及TOOLCHAIN这个路径最后的文件夹名称(Mac下是darwin-x86_64、linux可能叫linux-x86_64、Windows也不一样);
参考 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 ) 博客 , 此处涉及到 打开一个 " 生成文件项目 " ;
网上也有一些对NDK的介绍,不过都是很简单的把sample里面的例子讲解一下,并不深入,我这里把我的所得分享一下。我下载的是Android Native Developer Kit (NDK) R4版本,当前的最新版。 下载地址如下: http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip
因为最后会将文件合成libffmpeg.so文件,所以就不需要去改configure文件了!!
上一篇博客《conan入门(十):Windows下Android NDK交叉编译Boost》中已经说明了Windows下Android NDK交叉编译Boost的全过程。
在 Android Studio 之外,还可以通过 Gradle Script 来编译 Android 项目并构建和测试应用。 本文是一个备忘录,以记录我在 x86_64 GNU/Linux 系统 CentOS Linux release 7.8.2003 下折腾 Android 编译环境的一个过程。
为了能更好的学习和运用ffmpeg, 建议下载ffmpeg源码自己编译.这里的编译方法基于ubuntu16.04环境.直接按照编译FFmpeg来做可能会碰到一些错误, 我将自己编译碰到的错误记录在最后面. 我自己编译的工程已经传到github上 https://github.com/yizhongliu/ffmpegForAndroid
编译链接时 , 将整个库文件打包到可执行文件中 , 造成可执行文件较大 , 但运行时不需要库文件 ;
找不到指定的文件,后来通过度娘找到了原来说是NDK的版本问题,如果ndk版本在r17版, 很有可能出现这个问题。
开发android ndk 的时候需要一个编译工具编译c程序,ndk需要linux下编译,所以win环境下提供Cygwin模拟linux编译C。下面介绍一下android-ndk-r14b下配置Cygwin的步骤:
FFmpeg是音视频领域绕不过去的开源库,编译FFmpeg是音视频开发的基本功,FFmpeg就像一个音视频开源框架,很多的开源库都像插件一样作为FFmpeg的子模块,例如openssl、x264、x265、fdk-aac等等库都可以通过插件的形式编译进FFmpeg开源项目中。本文主要的目的是介绍一下FFmpeg的编译过程,以及如何将这些插件编译进FFmpeg中。
本篇博客代码及资源下载 : https://download.csdn.net/download/han1202012/10382762
如何将二进制文件作为数据添加到自己程序中?这是我最近遇到的问题,google上找到这两篇说得已经很清楚: 《Embedding of binary data into programs》 《Embed
" 本地编译 " 指的是 在 目标系统 上进行编译的过程 , 生成的 可执行文件 和 函数库 只能在 目标系统 中使用 ;
上一篇博客《conan入门(九):NDK交叉编译自己的conan包项目塈profile的定义》中我们以jsonlib为例说明了如何NDK交叉编译自己封装成conan的模块及定义profile简化编译的方式。
这是因为缺少相应的依赖库导致的,在我们使用arm-none-linux-gnueabi时直接在命令行后面添加-static即可,但是使用arm-linux-androideabi则不行
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
通常,开发苹果系列的软件均需要使用一些专有开发工具,比如xcode,而此工具必须运行在Mac OS X设备上(当然你也可以尝试各种黑苹果的方式),所以不论是对于个人开发者还是企业构建服务器来说,都需要购买更多的Mac设备,通常,我知道的企业内部会使用Mac Mini来作为苹果系列的构建环境。
2016年11月份搭建了一个常用工具的镜像网站,因为众所周知的原因,很多软件工具需要自备梯子才可以下载,但是有的软件工具非常大,在梯子下下载,时间长的像噩梦,所以就搭建了这么一个网站,可以更快速的下载工具软件学习,所有的工具软件都有Window,Linux和Mac三个平台的版本。
博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293
交叉编译脚本参考 : 之前已经做过两个函数库的交叉编译脚本 , FFMPEG 和 x264 开源库 , 而且都是使用 configure 生成 Makefile 文件 ;
最近Android Studio升级了, 顺便也升级了sdk版本, 但是升级过后编译项目提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android". 刚开始很懵, 上网找了下原因, 觉得说的都不是特别清晰, 翻了下谷歌官网(一定要英文版, 中文版更新太慢), 弄清楚了原因, 记录在此.
网上其实已经有很多的关于FFmpeg so库编译的分享,但是大部分都是直接把配置文件的内容贴出来。我想大部分取搜索 「如何编译FFmpeg so库」的人,对交叉编译这个东东都是比较陌生的。
今天在Windows平台如下正常执行conan NDK交叉编译Boost库时报了个错
打开根目录下的build.info, 注释下面几行, 在Line:590~594, 否则会有类似错误提示 ${LDCMD:-g++} ld: unknown option: --sysroot=.
近期刚好用到FFmpeg来处理视频编码,由于网上各种版本的so库大部分都32位的,所以打算自己来编译32位和64位的库,我之前有写编译32位的库https://cloud.tencent.com/developer/article/1661468里面有关于ndk和32位的相关配置。今天主要是总结一下FFmpeg的64位的动态库编译。
1、unity2017版本,采用aar打包:出现A library uses the same package as this project:的错误 原因:aar里面的AndroidManifest.xml文件的package 和 外部的AndroidManifest.xml文件同名, 或者也可以说是和unity设置的package同名(unity打包Android知道,AndroidManifest的包名和Unity设置的必须要一致) 解决方案:外部的AndroidManifest文件的包名修改和aar里面的包名不一样即可 2、unity2017打包报错:缺失显示mips64el-linux-android-strip'' 原因:是因为你sdk里面有安装ndk,但是ndk里面 Sdk\ndk-bundle\toolchains目录下,缺了mips64el-linux-android的相关文件, 解决方案:1、如果你是Android studio下载的sdk里面包含的NDK都是缺少的,需要自己去官方下载,把缺失的文件copy进去 2、卸掉sdk的ndk 拓展:ndk下载地址:https://dl.google.com/android/repository/android-ndk-r17-windows-x86_64.zip https://dl.google.com/android/repository/android-ndk-r17-windows-x86.zip 3、Android 调用unity A、UnityPlayer.UnitySendMessage("ac","AndroidCallBack","jason is so handsome"); 第一个参数是场景的对象,如:Canvas, 第二个参数是:unity里面定义的方法,第三个参数是传递的参数 B、unity采用AndroidJavaProxy这个借口,说白了点,就是接口的映射,https://www.jianshu.com/p/ceaac83808f2,接口的base("Java借口完整的路径")的路径要对,实现的方法要一样
https://developer.android.google.cn/ndk/downloads/ 在安卓开发官网可以下载到,可以直接在linux中下载,也可以在windows平台下载后传到linux下,我这边使用的是14b版的ndk
随便解压到一个目录,先运行一次命令./configure,如果没错可以进行下一步操作,编写脚本
在去年7月发布的Android FFmpeg系列01--编译与集成一文中我们采用的是ndk r21d+FFmpeg5.0.1的版本,一年过去,FFmpeg也迭代到了6.0的版本
在NDK下编译thrift C++库,先要要编译android版的boost,这个不是本文讨论的内容,关于编译android 版本的boost,参见这个开源项目 Boost-for-Android,很好用。
Unity3D打包android应用程序时,如果不对DLL加密,很容易被反编译,导致代码的泄露。通常的做法是通过加密DLL或者对代码进行混淆。本文的所要探讨的是通过加密的方式来对DLL进行保护,并详细记录加密的操作过程。
JNI基础 将java中的字符串转换成C中字符串的工具方法 char* Jstring2CStr(JNIEnv* env, jstring jstr){ char* rtn = NULL; jclass clsstring = (*env)->FindClass(env,"java/lang/String"); jstring strencode = (*env)->NewStringUTF(env
Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 ROOT 再说 , 没有 ROOT 权限无法访问该目录中的信息 ;
前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 的文章,这里面的技术点不算太难,也还是调用 FFmpeg 的常用接口操作,但重点在于 FFmpeg 的版本选择以及编译选项要开启 MediaCodec 才行。
最近在根据项目需求疯狂撸 OpenCL ,FFmpeg 相关的文章落下了不少,后面也准备介绍下 OpenCL 在 Android 上的应用,另外 OpenCL 可以和 OpenGL 结合使用,非常有趣。
领取专属 10元无门槛券
手把手带您无忧上云