java - super 库链接不起作用

标签 java android c++ audio android-ndk

我尝试将 super 强大的库添加到新的 android studio 项目中,并按照 Android 示例进行操作,但我在链接库时仍然遇到问题。

我有这个错误:

java.lang.UnsatisfiedLinkError: No implementation found for void com.xxx.audiomixprototype.MainActivity.AudioMixPrototype(java.lang.String, long[]) (tried Java_com_xxx_audiomixprototype_MainActivity_AudioMixPrototype and Java_com_xxx_audiomixprototype_MainActivity_AudioMixPrototype__Ljava_lang_String_2_3J)

我遵循 Superpowered github 自述文件中的简短教程 https://github.com/superpoweredSDK/Low-Latency-Android-Audio-iOS-Audio-Engine

一切都清楚了,但我不明白最后一点:

create your custom .cpp and .h files, then donÕt forget to properly set LOCAL_MODULE and LOCAL_SRC_FILES in Android.mk

可能这就是我无法正确链接该库的原因。如何正确设置 LOCAL_MODULE 和 LOCAL_SRC_FILES 的任何解决方案?

最佳答案

我在这里做了一些猜测,所以我将概述我对您的项目的假设。

1) 您有一个包含以下行的 Java 文件:

private native void AudioMixPrototype(String apkPath, long[] offsetAndLength);

2) 你在 src/main/jni/filename.cpp 中有这个方法的 JNI 实现

如果您没有在 Android.mk 中正确设置 LOCAL_MODULE 和 LOCAL_SRC_FILES,Java 将无法解析对此方法的 JNI 调用,因此会出现链接错误。您需要将以下内容添加到您的 Android.mk 中:

include $(CLEAR_VARS)

# name your JNI module
LOCAL_MODULE := audio-mix-prototype 

# assuming your Android.mk is also in src/main/jni, 
# provide the filename to the JNI implementation of your method
LOCAL_SRC_FILES := filename.cpp

# add your flags, other libraries, etc. here

include $(BUILD_SHARED_LIBRARY)

Superpowered SDK 中有一些很好的示例。您可以查看依赖于 Superpowered here 的项目的 Android.mk 文件示例。 .

关于java - super 库链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706095/

相关文章:

c++ - 使用花括号初始化器列表时模板参数推导失败

Java 时间/日期格式

java - JSF 2.1 Spring session 范围

android - 重新启动后,图库中的图像权限丢失

android - 从 Android Market 安装应用后获取推荐人

C++ Lambdas : capture list vs. 参数列表

c++ - 如何位移 u16* 的数据?

java - GetComponentAt Trouble 问题

带有 ASM : VerifyError on code injection at INVOKESPECIAL instructions 的 Java 字节码检测

android - 具有多个参数的 Quickblox getUsersByFilter