Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ndk 让Android NDK与libspotify协同工作_Android Ndk_Spotify - Fatal编程技术网

Android ndk 让Android NDK与libspotify协同工作

Android ndk 让Android NDK与libspotify协同工作,android-ndk,spotify,Android Ndk,Spotify,我试图将libspotify用于android应用程序,但在构建我的c包装器时遇到了一些问题。我创建了一个非常小的包装器,只询问libspotify它的版本是什么 我的文件夹结构如下所示: jni |-libs | |-Android.mk | |-libspotify.so (symlink) | |-libspotify.so.12 (symlink) | |-libspotify.so.12.1.51 | |-include | |-libspotify

我试图将libspotify用于android应用程序,但在构建我的c包装器时遇到了一些问题。我创建了一个非常小的包装器,只询问libspotify它的版本是什么

我的文件夹结构如下所示:

jni
 |-libs
 |  |-Android.mk
 |  |-libspotify.so    (symlink)
 |  |-libspotify.so.12 (symlink)
 |  |-libspotify.so.12.1.51
 |
 |-include
 |  |-libspotify
 |     |-api.h
 |
 |-Android.mk
 |-spotifywrap.c
/jni/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SHARED_LIBRARIES := libspotify
LOCAL_MODULE := spotifywrap
LOCAL_SRC_FILES := spotifywrap.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libspotify
LOCAL_SRC_FILES := libspotify.so
include $(PREBUILT_SHARED_LIBRARY)
/jni/spotifywrap.c

include <jni.h>
include <libspotify/api.h>

jstring Java_com_example_ndktest_MainActivity_getBuild(JNIEnv * env, jobject this)
{
    jstring result = (*env)->NewStringUTF( env, sp_build_id() );
    return result;
}
当我运行ndk build时,我得到以下信息:

spotifywrap.c:6: undefined reference to `sp_build_id'
sp_build_id是api.h中接口的一部分


有没有关于我做错了什么的想法?

我感觉是你在
jni
子目录中的目录结构导致了你的问题。尝试编辑您的
Android.mk
build文件以添加以下内容:

LOCAL_CPPFLAGS = -std=c++0x -D__STDC_INT64__
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

另外,我觉得您需要将
libspotify.so
复制到您的顶级
libs/armeabi
目录才能成功链接。

非常感谢!当我把所有的东西移到同一个文件夹时,它就起作用了。我不必复制libspotify。所以这是由ndk-build完成的。很高兴听到您启动并运行了它!