Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
4年前关闭。
Improve this question
我是Android NDK的新手。我需要使用NDK将Lame库添加到Android Studio。我开始研究,并找到一些有用的链接:
Lame MP3 Encoder compile for Android
How to link the “lame” mp3 encoder shared object to an Android studio project
我成功了,但只有建立了“armeabi”。我如何构建另一个类似的文件:“arm64-v8a”,“armeabi-v7a”,“mips”,“mips64”,“x86”,“x86_64”?
先感谢您!
第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:
您可能会遇到如下错误:
将所有“#include”替换为“#include“lame.h””
添加并添加到有问题的任何文件中(尝试在文件顶部的第一个注释下方添加)。
转到文件“id3tag.c”和“machine.h”,注释“#define strchr索引”
步骤8:
在AudioRecorder / jni中创建Application.mk:
如果没有带有“APP_ABI:= all”的Application.mk,则NDK仅构建“armeabi”
添加此文件,应用程序将建立:
“arm64-v8a”
“armeabi”
“armeabi-v7a”
“mi”
“mips64”
“x86”
“x86_64”
步骤9:
成功构建NDK之后,现在您应该有2个新文件夹
“AudioRecorder /库”
“AudioRecorder / obj”
在“AudioRecord \ app \ src \ main”中创建“jniLibs”,然后将“AudioRecorder / libs”中的所有文件夹复制到其中。
希望对您有所帮助。 :)
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
4年前关闭。
Improve this question
我是Android NDK的新手。我需要使用NDK将Lame库添加到Android Studio。我开始研究,并找到一些有用的链接:
Lame MP3 Encoder compile for Android
How to link the “lame” mp3 encoder shared object to an Android studio project
我成功了,但只有建立了“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(您需要设置路径才能使用它)
我的La脚图书馆:3.99.5
注意:下载后的la脚库可能具有.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。
第三步:
在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 <lame.h>"
将所有“#include”替换为“#include“lame.h””
"incompatible implicit declaration of built-in function 'xyz'"
添加并添加到有问题的任何文件中(尝试在文件顶部的第一个注释下方添加)。
"undefined reference to 'index'"
转到文件“id3tag.c”和“machine.h”,注释“#define strchr索引”
步骤8:
在AudioRecorder / jni中创建Application.mk:
APP_ABI := all
如果没有带有“APP_ABI:= all”的Application.mk,则NDK仅构建“armeabi”
添加此文件,应用程序将建立:
“arm64-v8a”
“armeabi”
“armeabi-v7a”
“mi”
“mips64”
“x86”
“x86_64”
步骤9:
成功构建NDK之后,现在您应该有2个新文件夹
“AudioRecorder /库”
“AudioRecorder / obj”
在“AudioRecord \ app \ src \ main”中创建“jniLibs”,然后将“AudioRecorder / libs”中的所有文件夹复制到其中。
希望对您有所帮助。 :)
08-05 20:43