在使用 Android Studio + Lame + NDK 3 天后。我想出了如何做到这一点:
第 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(需要设置路径才能使用)
我的蹩脚图书馆:3.99.5
注意:下载后的蹩脚库的格式可能是 .gz 而不是 .tar.gz。在这种情况下,请随意将其更改为 .tar.gz 并使用 7zip 解压缩(两次)。
第 2 步:
例如,您的项目是“AudioRecorder”。在其中创建一个文件夹名称“jni”。录音机/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)
第四步:
删除 Makefile.am、Makefile.in、logoe.ico、depcomp、lame.rc 和 i386 目录。
第 5 步:
编辑文件 jni/lame-3.99.5_libmp3lame/util.h,并替换定义
外部 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 <lame.h>"
将所有“#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-v7a”
“mips”
“mips64”
“x86”
“x86_64”
第 9 步:
成功构建 NDK 后,现在你应该有 2 个新文件夹
“录音机/库”
“录音机/obj”
在“AudioRecord\app\src\main”中创建“jniLibs”并将“AudioRecorder/libs”中的所有文件夹复制到其中。
希望对您有所帮助。 :)