返回

在Android Studio上迁移并编译soundtouch库

Android

变调库soundtouch Android Demo编译

开发缘由

近期项目需求实现音频变速变调,调研后了解到开源库soundtouch,其官方提供的Android Demo为eclipse项目,使用native代码路径为相对路径。本文记录将该Android Demo迁移到Android Studio,并成功编译so文件。

实现方案

  1. 在soundtouch-android-demo目录下执行下列命令:
android update project -p .
  1. 把build.xml中的source.dir由相对路径改为绝对路径:
<source.dir>src</source.dir>
  1. 在res/values/AndroidManifest.xml中加入native库信息:
<application android:name=".SoundTouch>
<uses-library android:name="soundtouch"/>
</application>
  1. 在src目录下创建soundtouch目录:
mkdir soundtouch
  1. 把对应soundtouch库的so文件放到src/soundtouch目录下:
cp soundtouch-android-demo/jniLibs/armeabi/libsoundtouch.so src/soundtouch/libsoundtouch.so
cp soundtouch-android-demo/jniLibs/armeabi-v7a/libsoundtouch.so src/soundtouch/libsoundtouch.so
  1. 在jni目录下创建Android.mk文件:
include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE := soundtouch
LOCAL_SRC_FILES := soundtouch/libsoundtouch.so
  1. 在jni目录下创建Application.mk文件:
APP_ABI := armeabi-v7a armeabi
  1. 把项目的targetSdkVersion修改成21或以下,因为soundtouch库的ndk-build脚本默认针对android-21或以下版本构建。

  2. 编译

./gradlew build

注意事项

如果出现编译出错:

cannot find libandroid.so

则需要把NDK的路径加入系统环境变量中,并保证在系统的PATH中NDK路径在前,SDK路径在后。

总结

本文介绍了soundtouch库Android Demo的迁移及编译,供有需要的小伙伴参考。