2012-07-11 19 views
6

I FMOD örnek klasöründe NativeActivity denilen bir örnek buldum ama ne yazık ki bazı java kodu kullanın:Yükleme FMOD tamamen yerli kod

package org.fmod.nativeactivity; 

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

Android.mk şuna benzer:

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) 

mi java parçası olmadan yapmak mümkün mü? Eğer öyleyse neyi değiştirmem gerekiyor?

cevap

6

Neden bu birkaç Java satırından kurtulmak istediğinizi bilmiyorum. Bilgimin en iyisine, bunun uygulamanızın geri kalanı üzerinde bir etkisi yoktur.

Java'ya gereksinim duymanızın nedeni, Android sistem yükleyicisinin,numaralı telefon numarasını bulamazsanız, buradaki libghost.so numaralı telefon numaranızdaki referansları çözmeniz gerekmektedir. Bu nedenle, libghost.so yükü başarısız oluyor. Java, kütüphaneniz yüklenmeden önce bağımlılığı önceden yüklemenizi sağlar.

Maalesef, NativeActivity'nin kendisi yalnızca bir kitaplık yükleyebilir. Gelecekte bir süre durumu iyileştirmek için Nisan 2012'de bir request yayınlanmıştır.

Şu an için dinamik bağlanmasından Fmod ile çalışır tüm kodunuzu değiştirmek veya fmod yüklemek ve daha sonra hayalet kütüphane yükleyecektir üçüncü paylaşılan kütüphanesi oluşturabilirsiniz. Bu durumda, yükleyici hayalet'daki referansları çözebilir, çünkü fmod zaten yüklenecektir.