在Android版本上找不到本机库吗?

时间:2019-04-13 19:21:01

标签: android c unity3d

我在android上运行我的应用时遇到此错误:unable to lookup library path for, native render plugin support disabled。我认为我错误地建立了共享库。

我希望从this repo构建源文件。我会说我的构建过程,也许有人可以发现我缺少的一步或做错了。

在此guide之后,我想到了:

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := libhydrogen
LOCAL_SRC_FILES := ..\hydrogen.c

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_PLATFORM := android-16
APP_OPTIM := release
APP_MODULES := libhydrogen

下一个我:

  1. 将这些文件放在jni文件夹中。
  2. 称为ndk-build
  3. .so文件夹中复制\libs个文件,并将它们放在Unity中它们各自的文件夹中(即Hydrogen\Plugins\Android\arm64-v8a)。
  4. 确保其平台和CPU架构正确。
  5. 构建我的应用。

Here是我正在使用的c#包装器。 呼叫Hydrogen.Library.Initialize();会给我这个错误。 Here是与此错误相关的完整日志。

在我的构建过程正确无误的情况下,.so文件就可以了;还有什么可能导致这种情况发生?

编辑:我正在尝试为armeabi-v7a和`x86构建。 Here是.so文件的详细信息,也许有些地方不正确?我不熟悉c,并且因为我从未听说过有人为Android构建此库,所以我想知道:c源文件中是否有与NDK构建过程不兼容的内容?

2 个答案:

答案 0 :(得分:0)

本机库是由系统的本机链接程序加载的,在您的情况下是linux动态链接程序:ld.so(有时会更改名称,所以我使用了该名称,因为您可以在具有该名称的文档。

为此,通常需要为Java虚拟机提供一个LD_LIBRARY_PATH环境变量,以便它可以有效地dlopen(3)

考虑一下您的开发系统与目标系统有何不同……。您将轻松实现这一目标。

答案 1 :(得分:0)

这是Unity的一个错误!由于某些原因,在切换项目的目标平台时,我的某些文件将被损坏。奇怪的是,这似乎只发生在这个项目中,但是无论如何,(临时)解决方案是每当我切换平台时都重新导入plugin文件夹。