【问题标题】:How to bundle a native library (.so + .jar) for reuse in new Eclipse Android projects?如何捆绑本地库(.so + .jar)以在新的 Eclipse Android 项目中重用?
【发布时间】:2012-09-05 18:05:20
【问题描述】:

我有一个 C++ 库,我编写了一些 JNI 代码将其导出到 Android 世界。我还创建了一个使用我的 JNI 接口的 Android 应用程序。

为了使用该库,我将所有 *.java 和 *.h / *.cpp 文件导入到我的 Eclipse App 项目中(到正确的文件夹中),然后为 NDK 创建了 *.mk 文件。我使用 ndk-build 编译了该库,并使用 Eclipse 将其加载到目标设备中。该应用程序运行良好。

现在我想将应用程序从库中分离出来。所以,我编译了包含 JNI 接口的 Java 文件的 name.jar,然后我用 ndk-build 编译了 libname.so 用于 C++ 的东西。然后我将 name.jar 放入 newproject/libs 并将 libname.so 放入 newproject/libs/armeabi。考虑“newproject”我创建的没有库源代码的应用程序(我不想发布源代码,只发布 .jar 和 .so)。

结果是应用程序崩溃,内存转储到 LogCat。我在静态上下文中使用了 System.loadLibrary("name")。

谁能帮帮我?

【问题讨论】:

    标签: eclipse jar android-ndk shared-libraries


    【解决方案1】:

    我的程序没问题。我发现了问题:我的应用程序正在加载库并且它正在运行 C++ 代码。顺便说一句,崩溃发生在 socket() 调用的早期。我必须在清单文件中设置 INTERNET 权限。

    【讨论】:

    • 我创建了一个应用程序。应用程序包含 .so 文件。现在我想制作一个包含我的应用程序代码+.so 文件的单个 jar 文件。在 android sdk 上是否可行。我不使用 ndk。请告诉我。
    • 我认为只有 NDK 才能做到这一点。看看:developer.android.com/tools/sdk/ndk/index.html怎么办
    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多