如何使用NDK将Lame 3.99.5添加到Android Studio?
我是Android NDK的新手。 我需要使用NDK将Lame库添加到Android Studio。 我开始研究并找到一些有用的链接:
Lame MP3 Encoder编译为Android
如何将“跛脚”mp3编码器共享对象链接到Android工作室项目
我成功但只建立了“armeabi”。 我怎样才能构建另一个像:“arm64-v8a”,“armeabi-v7a”,“mips”,“mips64”,“x86”,“x86_64”?
先感谢您!
3天后陷入Android Studio + Lame + NDK。 我弄清楚如何做到这一点:
步骤1:
下载NDK: http : //developer.android.com/ndk/downloads/index.html
下载Lame库: http : //lame.sourceforge.net/download.php
我的Android Studio 1.5.1
我的NDK:android-ndk-r10e(你需要设置路径才能使用它)
我的Lame图书馆:3.99.5
注意:下载后的lame库可能格式为.gz而不是.tar.gz。 在这种情况下,请随意将其更改为.tar.gz并使用7zip(两次)将其解压缩。
第2步:
例如,您的项目是“AudioRecorder”。 在旁边创建一个文件夹名称“jni”。 AudioRecorder / JNI。
将所有libmp3lame文件夹(在lame 3.99.5内)复制到jni(您应该将其名称替换为lame-3.99.5_libmp3lame)。
将lame.h复制到AudioRecorder / jni / libmp3lame。
第3步:
在AudioRecorder / jni中创建Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LAME_LIBMP3_DIR := lame-3.99.5_libmp3lame LOCAL_LDLIBS := -llog LOCAL_MODULE := mp3lame LOCAL_CFLAGS += -ffast-math -I $(LAME_LIBMP3_DIR) LOCAL_SRC_FILES := $(LAME_LIBMP3_DIR)/bitstream.c \ $(LAME_LIBMP3_DIR)/fft.c \ $(LAME_LIBMP3_DIR)/id3tag.c \ $(LAME_LIBMP3_DIR)/mpglib_interface.c \ $(LAME_LIBMP3_DIR)/presets.c \ $(LAME_LIBMP3_DIR)/quantize.c \ $(LAME_LIBMP3_DIR)/reservoir.c \ $(LAME_LIBMP3_DIR)/tables.c \ $(LAME_LIBMP3_DIR)/util.c \ $(LAME_LIBMP3_DIR)/VbrTag.c \ $(LAME_LIBMP3_DIR)/encoder.c \ $(LAME_LIBMP3_DIR)/gain_analysis.c \ $(LAME_LIBMP3_DIR)/lame.c \ $(LAME_LIBMP3_DIR)/newmdct.c \ $(LAME_LIBMP3_DIR)/psymodel.c \ $(LAME_LIBMP3_DIR)/quantize_pvt.c \ $(LAME_LIBMP3_DIR)/set_get.c \ $(LAME_LIBMP3_DIR)/takehiro.c \ $(LAME_LIBMP3_DIR)/vbrquantize.c \ $(LAME_LIBMP3_DIR)/version.c \ include $(BUILD_SHARED_LIBRARY)
步骤4:
删除Makefile.am,Makefile.in,logoe.ico,depcomp,lame.rc和i386目录。
第5步:
编辑文件jni / lame-3.99.5_libmp3lame / util.h,并替换定义
extern ieee754_float32_t fast_log2(ieee754_float32_t x);
有了这个
extern float fast_log2(float x);
第6步:
移出,按shift +右键单击文件夹AudioRecorder选择打开命令行窗口:
“ndk-build”(运行NDK构建)
“ndk-build clean”(清理所有内置的NDK)
第7步:
你可能会遇到这样的错误:
"Cannot recognize "
将所有“#include”替换为“#include”lame.h“”
"incompatible implicit declaration of built-in function 'xyz'"
添加和任何有问题的文件(尝试在第一个注释下面的文件顶部添加)。
"undefined reference to 'index'"
转到文件“id3tag.c”和“machine.h”注释“#define strchr index”
第8步:
在AudioRecorder / jni中创建Application.mk:
APP_ABI := all
如果没有带有“APP_ABI:= all”的Application.mk,则NDK只构建“armeabi”添加此文件,应用程序将构建:
“arm64-V8A”
“armeabi”
“armeabi-V7A”
“MIPS”
“MIPS64”
“86”
“x86_64的”
第9步:
成功构建NDK后,现在应该有2个新文件夹
“AudioRecorder /库”
“AudioRecorder /目标文件”
在“AudioRecord \ app \ src \ main”中创建“jniLibs”并将“AudioRecorder / libs”中的所有文件夹复制到它。
希望它可能有所帮助。 🙂