NDK预构建的共享库文件格式未被识别。

4
我一直在尝试跟随github上的这个示例(链接)来实现基本的spotify功能,我已经按照设置步骤进行了操作,安装了所有必需的库等,但是在本地构建阶段一直出现以下错误。
**** Build of configuration Default for project LoginActivity ****

c:\Android-ndk\android-ndk-r8e\ndk-build.cmd NDK_NO_WARNINGS=1 all 
Install        : libspotify.so => libs/armeabi/libspotify.so
c:/Android-ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-strip:./libs/armeabi/libspotify.so: File format not recognized
make: *** [libs/armeabi/libspotify.so] Error 1
make: *** Deleting file `libs/armeabi/libspotify.so'

**** Build Finished ****

我下载了适用于Android的特定库,然后尝试了各种Linux ARM库的组合,只是为了看看会发生什么,结果总是一样的。当从目录中删除libspotify.so时,构建将会失败,因为找不到该文件,所以我知道脚本正在尝试处理该文件。
据我所知,我已经完全按照设置进行操作,我目前的猜测是问题与运行64位版本的eclipse/java等有关。有谁能解决这个问题吗?

从Android.mk文件中删除LOCAL_SRC_FILES:= libspotify.so行,如果您想包含libspotify,则使用LOCAL_SRC_FILES:= libspotify.a。为此,您需要使用共享或静态选项编译libspotify库。 - ρяσѕρєя K
3个回答

3

你需要找出这个文件的可编译目标。如果你使用 linux,运行以下命令:

$ file libspotify.so

您将会看到它是否可以使用 armeabi 或者 x86 进行编译。然后,在 application.mk 中,您需要设置 APP_ABIarmeabi 或者 APP_ABI:X86


1
这个问题是由一个带有.so文件的损坏存档引起的。重新下载后,它可以正常工作。感谢您的帮助。
编辑:我找到了一个正确提取的libspotify.so文件版本,链接在这里

我也遇到了相同的文件格式问题。我已经尝试过在Windows上使用7zip、cygwin和在Linux上提取libspotify几次了。你有没有做什么特别的事情让它工作起来?我已经在Windows和OS X上尝试过不同版本的libspotify(45和51)以及NDK版本(8re和8rb)。但我总是得到相同的错误 :( - marcus
1
最后我在 Github 上找到了一个项目,里面包含了所需的存档文件。我想肯定是有人已经成功解压并打包了它,以避免所有这些麻烦。如果您需要,我可以帮您找到链接。 - ScouseChris

1
我相信你可能不小心提取了libspotify.so(21个字节),它只是Unix符号链接到共享库libspotify.so.12.1.51(1,961,644个字节)

至少这就是我刚刚做的事情,导致我来到这里。后者需要重命名为查找名称(libspotify.so),然后NDK就可以正常工作了。

希望这能帮助另一个疲惫的灵魂,至少如此。 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接