2012-07-11 11 views
6

Tôi tìm thấy một ví dụ gọi nativeactivity trong FMOD dụ thư mục, nhưng tiếc là nó sử dụng một số mã java:tải FMOD hoàn toàn từ mã nguồn gốc

package org.fmod.nativeactivity; 

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

Android.mk trông như thế này:

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) 

Is nó có thể làm mà không có phần java? Nếu vậy thì tôi cần phải thay đổi điều gì?

Trả lời

6

Tôi không biết tại sao bạn muốn loại bỏ một số dòng Java này. Theo hiểu biết tốt nhất của tôi, điều này không ảnh hưởng đến phần còn lại của đơn đăng ký của bạn.

Lý do bạn cần Java là trình tải hệ thống Android không thể tìm thấy libfmodex.so cần thiết để giải quyết các tham chiếu trong số libghost.so của bạn. Do đó, tải của libghost.so không thành công. Java cho phép bạn tải trước phụ thuộc trước khi thư viện của bạn được tải.

Thật không may, NativeActivity chính nó chỉ có thể tải một thư viện. A request đã được đăng trong tháng 4 năm 2012 để cải thiện tình hình một thời gian trong tương lai.

Hiện tại, bạn có thể chuyển đổi tất cả các mã của bạn làm việc với fmod để liên kết động, hoặc xây dựng một thư viện chia sẻ thứ ba sẽ được tải fmod và sau đó tải các ma thư viện. Trong trường hợp này, trình tải sẽ có thể giải quyết các tham chiếu trong mafmod sẽ được tải.