2012-07-11 13 views
6

me encontré con un ejemplo NativeActivity llamada en la carpeta de ejemplo FMOD, pero por desgracia, utilizo un código java:Cargando FMOD puramente de código nativo

package org.fmod.nativeactivity; 

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

Android.mk se ve así:

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) 

Es es posible prescindir de la parte de java? Si es así, ¿qué necesitaría cambiar?

Respuesta

6

No sé por qué quiere deshacerse de estas pocas líneas de Java. Según mi leal saber y entender, esto no tiene ningún efecto en el resto de su solicitud.

La razón por la que necesita Java es que el cargador del sistema Android no puede encontrar libfmodex.so que es esencial para resolver las referencias en su libghost.so. Por lo tanto, la carga de libghost.so falla. Java le permite precargar la dependencia antes de que se cargue su biblioteca.

Desafortunadamente, NativeActivity solo puede cargar una biblioteca. Se ha publicado un request en abril de 2012 para mejorar la situación en algún momento en el futuro.

Actualmente, se puede cambiar todo el código que funciona con HOQF a la vinculación dinámica, o construir una tercera biblioteca compartida que cargará HOQF y luego cargar la biblioteca defantasma. En esta situación, el cargador podrá resolver las referencias en fantasma porque fmod ya estará cargado.

Cuestiones relacionadas