1

我收到这条消息,它不允许我的应用程序运行,其中包含一些我使用 NDK 构建的本机 C/C++ 文件。应用程序正在关闭并再次打开并循环崩溃。在 android.mk C:/android-ndk-r8/build/core/add-application.mk 128:Android NDK 中进行一些与 awk 相关的更改后,我收到以下编译警告:警告:APP-PLATFORM android-14 大于./AndroidManifest.xml 中的 android:minsdkVersion 8

我已经检查了与之相关的相关线程,但找不到任何可以帮助我的东西。谁能帮助我,我在这里缺少什么。

日志输出:

15:44:15.815: E/Trace(3026): error opening trace file: No such file or directory (2)
05-28 15:44:16.007: D/dalvikvm(3026): Trying to load lib /data/app-lib/com.example.raptorjni-2/libraptorq-test.so 0x40ce6428
05-28 15:44:16.035: D/dalvikvm(3026): Added shared lib /data/app-lib/com.example.raptorjni-2/libraptorq-test.so 0x40ce6428
05-28 15:44:16.035: D/dalvikvm(3026): No JNI_OnLoad found in /data/app-lib/com.example.raptorjni-2/libraptorq-test.so 0x40ce6428, skipping init
05-28 15:44:16.255: D/RaptorQ(3026): Entering the main function

调用 C 函数的 Java 主文件片段:

   Log.d(TAG,"isteps Ecoded" + isteps);
        /* Call the JNI-ized version of DFRQEncPerfTest */
        String res = 
        resultRQEncPerfString(nSrcSymbols, symbolSize, loss, niter,
                      mode, 0, header);

.C 文件函数片段:

jstring 
Java_com_example_raptorjni_RaptorJni_resultRQEncPerfString
  (JNIEnv *env, jobject thiz, 
   jint nSrcSymbols, jint symbolSize, jint lossrate, jint nLoop, 
   jint mode, jint nRepair, jint header)
{   

  Implementation ....
4

1 回答 1

3

JNI_Onload是自 JNI 1.4(或多或少)以来引入的可选初始化函数,它允许开发人员在加载库时执行一些初始化作业(例如,向 jvm 注册本机方法)。

因此,我们真的不需要 javah 或其他愚蠢的东西来在 c/c++ 中实现本机 java 方法,只需JNIEnv::registerNatives在内部调用JNI_Onload.

对于这个问题,我认为还有其他问题。

于 2013-05-29T07:16:04.607 回答