6

FMOD サンプル フォルダーに nativeactivity というサンプルが見つかりましたが、残念ながら 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部分なしで行うことは可能ですか? その場合、何を変更する必要がありますか?

4

1 に答える 1

6

なぜあなたがこれらの数行の Java を削除したいのかわかりません。私の知る限り、これはアプリケーションの残りの部分には影響しません。

Java が必要な理由は、Android システム ローダーがlibfmodex.solibghost.so. したがって、ロード オブlibghost.soフェイルは失敗します。Java では、ライブラリがロードされる前に依存関係をプリロードできます。

残念ながら、NativeActivity 自体は 1 つのライブラリしかロードできません。2012 年 4 月に、将来的に状況を改善するための要求が投稿されました。

現在、fmodで動作するすべてのコードを動的リンクに切り替えるか、 fmodをロードしてからゴーストライブラリをロードする 3 番目の共有ライブラリを構築できます。この状況では、fmodが既にロードされているため、ローダーはゴーストの参照を解決できます。

于 2012-10-15T14:46:02.403 に答える