【问题标题】:Jabber.net on Unity/Android error (No JNI_OnLoad found in /system/lib/libc.so, skipping init)Jabber.net on Unity/Android 错误(在 /system/lib/libc.so 中找不到 JNI_OnLoad,跳过初始化)
【发布时间】:2012-08-28 09:23:53
【问题描述】:

我正在尝试使用适用于 iOS 和 Android 的 Unity3D(Mono/C#) 创建 Jabber (Jabber.net) 聊天客户端。我让客户端在 iOS 中工作(在 Unity 模拟器中也运行良好)。但是,在 Nexus 7 或 HTC Desire 上运行它时,它不起作用。它不会崩溃,但也不会连接。它只会产生以下错误:

D/dalvikvm(9368):在 /system/lib/libc.so 0x413b7270 中找不到 JNI_OnLoad,跳过初始化

此错误与我的 Jabber.net 客户端的 Connect 方法有关:

jc = new JabberClient();
...
// Setting up the jabberclient and attaching eventhandlers
...
jc.Connect();

有什么办法解决吗?

编辑:研究JNI_OnLoad,我发现了这个描述:

"VM 在加载原生库时调用 JNI_OnLoad(例如,通过 System.loadLibrary)。JNI_OnLoad 必须返回原生库所需的 JNI 版本。 为了使用任何新的 JNI 函数,本机库必须导出返回 JNI_VERSION_1_2 的 JNI_OnLoad 函数。如果本机库不导出 JNI_OnLoad 函数,则 VM 假定该库仅需要 JNI 版本 JNI_VERSION_1_1。如果 VM 无法识别 JNI_OnLoad 返回的版本号,则无法加载原生库。”

来自http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/invocation.html#wp9502

是否可以使用返回 JNI_VERSION_1_2 的 JNI_OnLoad 方法重建 Jabber.net ??

【问题讨论】:

    标签: c# android xmpp unity3d dalvik


    【解决方案1】:

    这根本不可能。不要在家里尝试这个孩子。

    【讨论】:

    • 我的结论也是如此。改用 ASmack 并为 Android 构建了一个自定义版本,然后使用 Unity 方法在 jar 文件中调用 Java 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    相关资源
    最近更新 更多