android - 如何使用 JNI 代码正确导入 Android 库?

标签 android c++ eclipse android-ndk java-native-interface

背景

我制作了一个使用 JNI 处理位图的小型 SDK(链接 here)。

它只有 2 个项目:一个示例项目(演示 SDK 的用法)和 SDK 本身。

SDK 项目是一个 Android 项目,其中包含一些 C/C++ 代码。

问题

出于某种原因,即使我创建了项目,一切都很顺利,现在我尝试获取库项目并将其导入 Eclipse,然后打开我制作的 CPP 文件,我明白了上面有很多错误,例如:

enter image description here

问题

为什么会发生?如何正确导入项目?我可以帮助使用它的人顺利导入它吗?

我试图用 JNI 创建一个全新的项目,只是(小心地)复制了我的库中的文件,它编译得很好,但这不是导入项目的好方法......

最佳答案

此 eclipse 错误经常发生,您的解决方案(启动一个空项目然后添加文件)是最快的解决方法,我们都在使用它。 另一种解决方案是删除 c 性质和 Android 性质并再次将这些性质添加到项目中(通常这也有效)。

创建新项目时,Eclipse 将添加它的性质和工具链。如果您导入一个旧项目,这些工具链/性质可能会被严重导入。

对于包含 c 和 c++ 的项目,您需要在“.project”文件中定义 cnature 和 ccnature。对于 Android,您需要 Android Nature。 要编译 android,您需要将 com.android.gcc 作为 .cproject 文件中定义的工具链。

根据 ADT/CDT/Eclipse 的版本,.cproject 中工具链的值(value)不同,因此它们不容易从机器导入到机器。

我的猜测是您遇到了一系列错误,因为 .cproject 文件生成错误。

编辑

经过 Android Developer 的进一步研究,可以通过以下步骤更快地绕过 Eclipse 由如何将原​​生性质添加到项目中而导致的限制:

  1. 从“.project”文件中删除“cnature”和“ccnature”

    <nature>org.eclipse.cdt.core.cnature</nature>
    <nature>org.eclipse.cdt.core.ccnature</nature>
    
  2. 从 eclipse 工作区中删除“.cproject”文件

  3. 删除所有生成的文件和文件夹:libs、obj、gen 和 bin

  4. 通过“android 工具”上下文菜单重新添加对 android 的原生支持

谢谢安卓开发者。

关于android - 如何使用 JNI 代码正确导入 Android 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263253/

相关文章:

java - Eclipse > 新建文件 - 选项 : link to the file in the file system

java - 'not' 从文件选择/图库中选择图像时应用程序崩溃

android - 如何将 mapbox 语言更改为波斯语/波斯语

java - 上下文菜单未显示在 ListActivity 中

c++ - 为什么一个循环需要 current->link !=NULL 和一个 current != NULL 用于我的链表?

c++ - 在 Qt Creator 中使用 libc++ 而不是 libstdc++

c++ - 如何在不使用 boost 或创建模板的情况下在 C++ 中同时对两个 vector 进行排序?

java - 为什么我可以通过命令行编译此代码,但不能使用 Eclipse?

java - 要么我不自信,要么我什么都不知道

android - 在 Android 中结束通话