从本机代码加载FMOD纯粹(Loading FMOD purely from native code

2019-06-26 05:05发布

我发现所谓的NativeActivity的在FMOD例如文件夹中的例子,但不幸的是它使用一些Java代码:

package org.fmod.nativeactivity;

public class Example extends android.app.NativeActivity 
{
    static 
    {
        System.loadLibrary("fmodex");
        System.loadLibrary("main");
    }    
}

Android.mk看起来是这样的:

LOCAL_PATH := $(call my-dir)

#
# FMOD Ex Shared Library
# 
include $(CLEAR_VARS)

LOCAL_MODULE            := fmodex
LOCAL_SRC_FILES         := libfmodex.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/inc

include $(PREBUILT_SHARED_LIBRARY)

#
# Example Library
#
include $(CLEAR_VARS)

LOCAL_MODULE           := main
LOCAL_SRC_FILES        := main.c
LOCAL_LDLIBS           := -llog -landroid
LOCAL_SHARED_LIBRARIES := fmodex
LOCAL_STATIC_LIBRARIES := android_native_app_glue

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)

是否有可能没有java的部分呢? 如果是的话我会需要改变吗?

Answer 1:

我不知道为什么你想摆脱的Java的这几行的。 据我所知,这对你的应用程序的其他部分没有任何影响。

你需要Java的原因是,Android系统加载器无法找到libfmodex.so这是必须解决您的引用libghost.so 。 因此,负载libghost.so失败。 Java允许你预装的依赖加载你的库之前。

不幸的是,NativeActivity的本身只能加载一个库。 一个请求已在2012年4月发布了改善这一状况在未来的一段时间。

目前,您可以切换所有的代码与FMOD工程动态链接,或建第三共享库将加载FMOD,然后再加载库。 在这种情况下,加载器将能够在来解决,因为FMOD就已经被加载的引用。



文章来源: Loading FMOD purely from native code