如何使用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”中的所有文件夹复制到它。

希望它可能有所帮助。 🙂