Android Studio下编译lame
2016-05-11 15:49
543 查看
在项目中要实装lame的开源库实现录音转码mp3的功能。
期间遇到了诸多问题,在win和ubuntu下来回切。Android Studio本身的ndk功能还处于试验状态(2.1).
最终成功解决。
1.首先下载lame的源码。需要自备梯子。
http://lame.sourceforge.net/download.php
http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
下载好之后解压。将libmp3lame/ 目录拷贝到项目下的jni目录下,同时将将 lame-x.xx.x/include/ 目录下的 lame.h 也复制到 jni/libmp3lame/中
2.在jni文件夹下创建Application.mk和Android.mk文件
这里不赘述,重点在于如果是x86_64的话需要在Application.mk中加上
期间遇到了诸多问题,在win和ubuntu下来回切。Android Studio本身的ndk功能还处于试验状态(2.1).
最终成功解决。
1.首先下载lame的源码。需要自备梯子。
http://lame.sourceforge.net/download.php
http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
下载好之后解压。将libmp3lame/ 目录拷贝到项目下的jni目录下,同时将将 lame-x.xx.x/include/ 目录下的 lame.h 也复制到 jni/libmp3lame/中
2.在jni文件夹下创建Application.mk和Android.mk文件
这里不赘述,重点在于如果是x86_64的话需要在Application.mk中加上
APP_CFLAGS += -DSTDC_HEADERS
否则会有错误
undefined reference to `bcopy'
collect2: error: ld returned 1 exit status
3.修改源代码
fft.c中去掉#include “vector/lame_intrin.h”。这个是用Intel CPU的特性进行优化, ARM上用不到。 set_get.h中将#include改成#include “lame.h”。 utils.h中将extern ieee754_float32_t fast_log2(ieee754_float32_t x);用extern float fast_log2(float x);替换。
4.build
这个时候在终端里切换到jni目录,执行ndk-build就可以了。前提是将ndk-build的目录添加到了系统环境变量中
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories