我尝试将 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/