我正在使用android-NDK-r10编译包含libspotify功能的C ++代码。
在我的应用中,我在onCreate()
类的方法中包含两个库,扩展Service
,如下所示:
System.loadLibrary("spotify");
System.loadLibrary("spotifywrapper");
在我的C ++代码中(编译为“libspotifywrapper.so”),像往常一样包含libpthread:
#include <stdlib.h>
#include <pthread.h>
#include <string>
#include <api.h>
使用ndk-build进行编译,我没有收到任何错误。
当我启动我的Android应用程序时,dalvik崩溃并显示以下消息:
09-26 08:18:18.941:E / dalvikvm(11820):dlopen(“/ data / app-lib / com.example.myApp-1 / libspotify.so”)失败:dlopen失败:无法加载“libspotify.so”所需的库“libpthread.so.0”;未找到库“libpthread.so.0”引起的
我将this版本的libpthread复制到libs/armeabi/
,将其重命名为libpthread.so
,并将其包含在上面的两个库中。当我运行应用程序时,它会产生错误,找不到libc.so.6
Afaik,libc不包含在Android中,不是吗?
问Google,我读到libpthread包含在libc中,但是由于Android使用Bionic,我不知道libpthread是否包含在其中。
实际问题是:如何摆脱这个错误,找不到libpthread? 我认为它不会那么困难,而且编译工作正常,它可能不是我的代码中的错误。我的Android设备(4.4.4和4.4.2)是什么原因?
我希望你能帮助我,
卢卡斯
答案 0 :(得分:1)
Android上没有libpthread.so,所有pthread功能都由C库直接实现。
您的libspotify.so未使用与Android兼容的工具链进行编译,您将无法在Android上加载/使用它。询问向谁提供与Android兼容的版本,即使用NDK工具链构建的版本。
答案 1 :(得分:0)
您可能已经意识到这一点,但Spotify已经发布了Android SDK(目前处于测试阶段)。
您可以在此处找到有关它的更多信息: https://developer.spotify.com/news-stories/2014/06/25/announcing-new-spotify-android-sdk-beta/