[英]Android NDK - Build Trying to Link Non-Existent Prebuilt Library
我刚刚继承了一些旧代码,目前可以在我们的构建服务器上进行构建,并且我试图使其在Android Studio上运行,但是由于尝试指向一个(不存在)构建失败,因此出现问题)预编译库的MIPS版本。
我收到以下错误:
libraryname: LOCAL_SRC_FILES points to a missing file.
Check that .../libraryname/mips/libraryname.so exists.
该文件不存在,但是我不明白为什么构建工具正在寻找它。
我的Application.mk文件具有以下条目:
APP_ABI := armeabi armeabi-v7a x86 x86_64
我的Android.mk文件具有以下条目(通用库名):
include $(CLEAR_VARS)
LIBRARY_NAME_PATH := libraryname/$(TARGET_ARCH_ABI)
LOCAL_MODULE := modulename
LOCAL_SRC_FILES := $(LIBRARY_NAME_PATH)/mobulename.so
include $(PREBUILT_SHARED_LIBRARY)
令人困惑的是, TARGET_ARCH_ABI
似乎没有设置在任何地方,因此我不确定该怎么回事。
其他说明,当我使用NDK-build从命令行构建它时,它工作得很好,仅创建了请求的4种体系结构。
如前所述,由于此确切的代码已在我们的构建服务器上成功构建,因此无需更改任何代码。 我假设我的配置错误。
传统上,NDK使用APP_ABIS
设置(通常在Application.mk文件中定义)来选择要构建的体系结构列表。 NDK现在支持32位和64位模式的ARM,Intel和MIPS处理器。
由Android工作室使用的插件的gradle 忽略APP_ABIS
,你必须在你的build.gradle定义abiFilters指定的架构来构建。
当您的项目使用预构建的第三方库时,这一点尤其重要,因为与您的情况一样,这些库通常仅对所有可能的体系结构的子集可用。
ndk-build循环调用Android.mk脚本,每次将$(TARGET_ARCH_ABI)
设置$(TARGET_ARCH_ABI)
所选架构时, arm64-v8a
x86_64
mips64
armeabi-v7a
armeabi
x86
mips
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.