I';I’我遵循了Android上SDL的官方指南,但它并没有使libmain.so

I';I’我遵循了Android上SDL的官方指南,但它并没有使libmain.so,android,eclipse,sdl,Android,Eclipse,Sdl,SDLActivity调用loadLibrary(“main”)但它只是libSDL2。所以在那里。尽管我用cocos2d-x构建了本机安卓应用程序,但我努力做到这一点,几乎没有安卓.mk的经验。是不是我必须调查一下才能创建这个库?我已经准备好DinoMage的jni/src/main.c,并且在我的包名下有一个扩展SDLActivity的存根 抱歉没有代码,到处都有很多,只是它的位置和Android.mk可能与DinoMage的指南不同,DinoMage的指南与提供的Android自述相似 我

SDLActivity
调用
loadLibrary(“main”)
但它只是
libSDL2。所以
在那里。尽管我用cocos2d-x构建了本机安卓应用程序,但我努力做到这一点,几乎没有安卓.mk的经验。是不是我必须调查一下才能创建这个库?我已经准备好DinoMage的
jni/src/main.c
,并且在我的包名下有一个扩展
SDLActivity
的存根

抱歉没有代码,到处都有很多,只是它的位置和Android.mk可能与DinoMage的指南不同,DinoMage的指南与提供的Android自述相似

我正在使用适用于Windows7x64的Eclipse

以下是相关日志:

10-05 01:11:14.623: W/dalvikvm(3903): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/libsdl/app/SDLActivity;
10-05 01:11:14.623: W/dalvikvm(3903): Class init failed in newInstance call (Lmydomain/myproject/myactivity;)
10-05 01:11:56.760: D/AndroidRuntime(3903): Shutting down VM
10-05 01:11:56.761: W/dalvikvm(3903): threadid=1: thread exiting with uncaught exception (group=0x414bd908)
10-05 01:11:56.783: E/AndroidRuntime(3903): FATAL EXCEPTION: main
10-05 01:11:56.783: E/AndroidRuntime(3903): java.lang.ExceptionInInitializerError
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.Class.newInstanceImpl(Native Method)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.Class.newInstance(Class.java:1319)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2104)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.ActivityThread.access$600(ActivityThread.java:149)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.os.Looper.loop(Looper.java:153)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at android.app.ActivityThread.main(ActivityThread.java:5022)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.reflect.Method.invokeNative(Native Method)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.reflect.Method.invoke(Method.java:511)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1032)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at dalvik.system.NativeStart.main(Native Method)
10-05 01:11:56.783: E/AndroidRuntime(3903): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load main: findLibrary returned null
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.Runtime.loadLibrary(Runtime.java:365)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at java.lang.System.loadLibrary(System.java:535)
10-05 01:11:56.783: E/AndroidRuntime(3903):     at org.libsdl.app.SDLActivity.<clinit>(SDLActivity.java:54)
10-05 01:11:56.783: E/AndroidRuntime(3903):     ... 15 more
从模板

LOCAL_SRC_FILES := main.c \
                    $(SDL_PATH)/src/main/android/SDL_android_main.c
整个
jni/src/Android.mk
现在是:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
SDL_PATH := ../SDL

LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include

# Add your application source files here...
LOCAL_SRC_FILES :=  main.c \
                    main/android/SDL_android_main.c

LOCAL_SHARED_LIBRARIES := SDL2
LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog
include $(BUILD_SHARED_LIBRARY)

我认为我的路径是混乱的,但是有太多不同的方法将代码导入Eclipse,我只找到了太多的方法,即使如此。

要在Android.mk中创建名为“main”的共享库模块,您需要声明

LOCAL_MODULE := main
这将生成“libmain.so”文件


一个肮脏的黑客会改变

SDL_PATH := ../SDL

因为那是我们被告知粘贴它的地方

这使得ndk构建工作进行了一段时间,直到找不到EGL!这是它永远无法做到的,是时候提出另一个问题,还是放弃:

Android-NDK:警告:忽略未知的导入目录:“C:\Users\ME\workspace3\SDLActivity\jni\src”

[armeabi]编译thumb:SDL2打开命令提示符,将cd放入包含“jni”目录的文件夹(不要将cd放入jni),运行
ndk build clean&ndk build
,请用输出更新您的问题。我不知道
Android static.mk
是否默认由
ndk build
运行?如果我复制粘贴到
Android.mk
中,我得到
Android NDK:pathToMk.mk:在导入路径中找不到标记为“SDL”的模块<代码>您确定NDK_模块_路径变量定义正确吗。它没有出现在
set`,到目前为止还没有人提到它。。。感谢您的“android项目”?如果是这样,请在
SDL
folderNo中运行
ndk build
命令。根据DinoMage的说明,它位于jni文件夹中。很抱歉,延迟页面拒绝正确更新,我刚刚准备了一个临时答案,但无法提交。请在我的答案基础上继续,否则问题需要改变。嗯,在源代码中从来没有一个
SDL
文件夹,它被称为
SDL2.0.3
也许我应该将该文件夹复制到jni并将其重命名为
SDL
?是的,只需将文件夹SDL2-2.0.3复制并重命名为
SDL
到“jni”文件夹中即可。还有你的。
SDL_PATH := ../SDL
SDL_PATH := ../jni
Android NDK: WARNING: Ignoring unknown import directory: "C:\Users\ME\workspace3\SDLActivity\jni\src"
[armeabi] Compile thumb  : SDL2 <= SDL.c
[armeabi] Compile thumb  : SDL2 <= SDL_android_main.c
[armeabi] Compile thumb  : SDL2 <= SDL_assert.c
[armeabi] Compile thumb  : SDL2 <= SDL_error.c
[armeabi] Compile thumb  : SDL2 <= SDL_hints.c
[armeabi] Compile thumb  : SDL2 <= SDL_log.c
[armeabi] Compile thumb  : SDL2 <= main.c
[armeabi] Compile thumb  : SDL2 <= SDL_audio.c
[armeabi] Compile thumb  : SDL2 <= SDL_audiocvt.c
[armeabi] Compile thumb  : SDL2 <= SDL_audiodev.c
[armeabi] Compile thumb  : SDL2 <= SDL_audiotypecvt.c
[armeabi] Compile thumb  : SDL2 <= SDL_mixer.c
[armeabi] Compile thumb  : SDL2 <= SDL_wave.c
[armeabi] Compile thumb  : SDL2 <= SDL_androidaudio.c
In file included from c:/Users/ME/workspace3/SDLActivity//jni/src/audio/a
ndroid/SDL_androidaudio.c:31:0:
c:/Users/ME/workspace3/SDLActivity//jni/src/audio/android/../../core/andr
oid/SDL_android.h:30:29: fatal error: EGL/eglplatform.h: No such file or directo
ry
compilation terminated.
make.exe: *** [c:/Users/ME/workspace3/SDLActivity//obj/local/armeabi/objs
/SDL2/src/audio/android/SDL_androidaudio.o] Error 1