2017-10-05 71 views
2

我只是继承了一些遗留代码,这是目前能够建立我们构建服务器上,我试图让它在Android Studio中运行,它是有问题的地方构建失败是因为它试图指向预构建库的(不存在的)MIPS版本。的Android NDK - 建立试图链接不存在的预建图书馆

我得到以下错误:

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建造的命令行,它工作得很好,只有创建要求4级架构。

正如我提到的,应该不需要改动任何代码,因为这确切的代码被成功我们构建服务器上建立。我假设我只是有一些配置错误。

回答

0

传统上,使用NDK APP_ABIS设置(通常在Application.mk文件中定义)来选择要构建的体系结构列表。 NDK今天支持32位和64位模式的ARM,Intel和MIPS处理器。

使用过Android Studio ignores APP_ABIS,你必须在你的的build.gradle定义abiFilters的gradle这个插件指定的架构来构建。

,这一点尤其重要,当你的项目使用预置的第三方库,因为很多时候,在你的情况下,这些库只提供给所有可能的体系结构的一个子集。

NDK-建立调用在一个循环中Android.mk脚本,每次设定$(TARGET_ARCH_ABI)所选择的架构,的arm64-v8a x86_64 mips64 armeabi-v7a armeabi x86 mips

一个