如何使用NDK将Lame 3.99.5添加到Android Studio? [关闭]

2023-12-09

我是 Android NDK 新手。我需要使用 NDK 将 Lame 库添加到 Android Studio。我开始研究并找到一些有用的链接:

适用于 Android 的 Lame MP3 编码器编译

如何将“lame”mp3编码器共享对象链接到Android studio项目

我成功了,但只是建立了“armeabi”。如何构建另一个:“arm64-v8a”、“armeabi-v7a”、“mips”、“mips64”、“x86”、“x86_64”?

先感谢您!


在使用 Android Studio + Lame + NDK 3 天后。我弄清楚如何做到这一点:

Step 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

注意:下载后的 lame 库可能具有 .gz 格式,而不是 .tar.gz。在这种情况下,请随意将其更改为 .tar.gz 并使用 7zip 解压(两次)。

Step 2:

例如,您的项目是“AudioRecorder”。在其中创建一个名为“jni”的文件夹。录音机/jni。

将所有 libmp3lame 文件夹(在 lame 3.99.5 内)复制到 jni(您应该将其名称替换为 lame-3.99.5_libmp3lame)。

将 lame.h 复制到 AudioRecorder/jni/libmp3lame。

Step 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)

Step 4:

删除 Makefile.am、Makefile.in、logoe.ico、depcomp、lame.rc 和 i386 目录。

Step 5:

编辑文件 jni/lame-3.99.5_libmp3lame/util.h,并替换定义

外部 ieee754_float32_t fast_log2(ieee754_float32_t x);

有了这个

extern float fast_log2(float x);

Step 6:

移出,按shift+右键单击AudioRecorder文件夹选择打开命令行窗口:

“ndk-build”(运行 NDK 构建)

“ndk-build clean”(清理所有构建的 NDK)

Step 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”

Step 8:

在 AudioRecorder/jni 中创建 Application.mk:

APP_ABI := all

如果没有带有“APP_ABI := all”的Application.mk,NDK仅构建“armeabi” 添加应用程序将构建的此文件:

“arm64-v8a”

“阿尔梅阿比”

“armeabi-v7a”

"mips"

"mips64"

"x86"

"x86_64"

Step 9:

成功构建 NDK 后,现在您应该有 2 个新文件夹

“录音机/库”

“录音机/obj”

在“AudioRecord\app\src\main”中创建“jniLibs”,并将“AudioRecorder/libs”中的所有文件夹复制到其中。

希望它能有所帮助。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用NDK将Lame 3.99.5添加到Android Studio? [关闭] 的相关文章

随机推荐

  • 回文检查的递归方法

    是否可以使用以下参数列表定义回文检查的递归方法 int testPalindromeRecursive char str int len 注意 不必使用外部子函数或全局变量 我认为这是不可能的 因为你必须以某种方式记住最后一个 前面 索引位
  • 键“数据源”的值长度超出了“128”的限制

    我知道有人问过一个非常相似的问题here 但答案对我没有帮助 我将 Entity Framework 6 与 Oracle ManagerDataAccess Client 结合使用 如果我在 app config 中定义连接字符串 则连接
  • 如何获取隐藏图像的高度?

    当 div 被隐藏时 display none 浏览器将不会加载其中的图像 有没有办法告诉浏览器加载图像 我需要图像的高度和宽度来进行一些预处理 注意 由于一些其他代码 我无法使 div 可见 检查这里的例子 另外 延迟加载 示例对我来说不
  • 调试控制台应用程序时,Visual Studio 陷入异常报告循环。为什么?

    考虑这个简单的控制台应用程序 using System namespace Demo class Program static void Main string args throw new Exception 我在 Visual Stud
  • FLD浮点指令加载常数

    根据装配艺术 CH14 死链接 在 archive org 上找不到 14 4 4 1 FLD 指令 fld mem 32 fld mem 64 bx 我的目标是将常数 10 加载到我的 FPU 堆栈中 为什么我不能这样做 asm move
  • 当应用程序处于后台时,状态栏下方的 IOS 文本

    我正在尝试弄清楚如何实现类似通知的横幅 并在其下方显示文本statusbar当应用程序在后台运行时 很像 Runkeeper 当处于活动状态且应用程序处于后台时 它是横幅吗 我所能找到的只是应用程序位于前台时的广告横幅 我需要定制吗Stat
  • 无法使用 r 中的 rvest 包通过 read_html 读取网页

    我正在尝试从亚马逊获取产品评论者的位置 例如这个网页 https www amazon com gp profile amzn1 account AH55KF4JK5IKKJ77MPOLHOR4YAQQ ref cm cr dp d gw
  • 为什么 kfifo.h 充满了#define 语句[重复]

    这个问题在这里已经有答案了 kfifo h几乎完全由 define 这是为什么 为什么他们没有像 正常 那样在 h 文件中声明函数 edit 似乎我的问题很容易被解释为对实现的质疑 而不是我想问的问题 从学习的角度来看 为什么这个实现更好
  • 为什么 Python 3.4 对于大数除法给出错误的答案,如何测试整除性? [复制]

    这个问题在这里已经有答案了 在我的程序中 我使用除法来测试结果是否是整数 我正在测试整除性 但是 我得到了错误的答案 这是一个例子 print int 724815896270884803 61 给出 11882227807719424 p
  • CefSharp WinForms Web 浏览器不会显示

    我有一个非常简单的例子 试图让 CEF 浏览器附加到 Winforms 表单上 由于某种原因它不会显示 public partial class Form1 Form public Form1 InitializeComponent Cef
  • 默认情况下,多个Kafka消费者可以从同一主题的同一分区读取数据吗?

    默认情况下 多个Kafka消费者可以从同一主题的同一分区读取数据吗 默认情况下 我的意思是 由于 group id 不是强制性的 我想知道如果我在不指定任何 group id 的情况下生成多个 kafka 消费者并给他们相同的主题和分区名称
  • 使用 x86 程序集读取并打印用户输入 (GNU/Linux)

    我正在 GNU Linux 上学习 x86 汇编 并且正在尝试编写一个程序 从 stdin 读取用户输入并将其打印在 stdout 上 以下代码确实有效 但如果用户输入的字符串的大小小于 100 个字节 它会打印额外的字符 section
  • DropDownListFor SelectedItem 的问题

    这让我彻底困惑了 这是我的观点 Html DropDownListFor model gt model ScoreDescription Model RatingOptions new id clientId 和模型 public deci
  • 使用 Selenium 登录 ESPN

    我正在尝试使用 Selenium 来自动执行 ESPN 上的一些任务 我首先需要登录我的帐户 因为当我尝试访问 ESPN 页面时 我会被重定向到登录页面 这是登录表单
  • 脚手架控制器不适用于 Visual Studio 2013 update 2

    PROBLEM 我已更新到 Visual Studio 2013 update 2 现在无法搭建控制器 问题不是特定于项目的 当我尝试搭建控制器时 我在所有和任何项目中收到以下错误 There was an error running th
  • Worklight 6.2 和 iOS7 中本机页面的方向问题

    我正在使用 Worklight Studio 6 2 for iOS 开发一个混合应用程序 应用程序应强制横向 在 iOS 7 中 当我调用本机页面时 即使我已将视图控制器设置为横向 方向也默认为纵向 iOS 8 的方向正确 我尝试使用以下
  • 如何在 Python 中创建重新计算变量

    假设我有代码 a 2 b a 2 a 3 问题是 如何保持b每次更改都会更新a 例如 在上面的代码之后我想得到 print b to be 5 not 4 当然 b可以是一个函数a via def 但是 在 IPython 中 使用简单的变
  • jq:如何在 Windows 上的原始输出上输出引号

    使用原始输出 我必须引用输出的一些值 echo a b jq win64 exe raw output Result is a 产生 Result is b 但我怎样才能生成 Result is b 不幸的是 它必须在 Windows 上运
  • imshow 彩色图像,错误地显示为蓝色[重复]

    这个问题在这里已经有答案了 我正在尝试使用 opencv 读取并显示 tiff 图像 我在imread中尝试了不同的阅读模式 1 0 1 2 以下代码的结果仅在图像着色时将图像错误地显示为蓝色 import numpy as np impo
  • 如何使用NDK将Lame 3.99.5添加到Android Studio? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我是 Android NDK 新手 我需要使用 NDK 将 Lame 库添加到 Android Studio 我开始研究并找到一些有用的链接 适用于 Android 的 Lame