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

and*_*per 9 c++ eclipse java-native-interface android android-ndk

背景

我使用JNI制作了一个用于位图处理的小SDK(链接在这里).

它只有2个项目:示例项目(演示SDK的使用)和SDK本身.

SDK项目是一个Android项目,它包含一些C/C++代码.

问题

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

在此输入图像描述

这个问题

它为什么会发生?如何正确导入项目?我可以帮助使用它的人能够很好地导入它吗?

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

Mic*_*CMS 5

这种日食错误经常发生,你的解决方案(开始一个空的项目,然后添加文件)是最快的解决方案,我们都在使用它时.另一个解决方案是删除c性质和Android性质,并再次将这些性质添加到项目中(通常这也适用).

创建新项目时,Eclipse将添加它的性质和它的工具链.如果导入旧项目,则可能导入这些工具链/性质.

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

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

我的猜测是你有错误风暴,因为.cproject文件是错误生成的.

编辑

在Android Developer的进一步研究之后,可以通过以下步骤以更快的方式绕过由本机性质添加到项目引起的Eclipse限制:

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

    <nature>org.eclipse.cdt.core.cnature</nature>
    <nature>org.eclipse.cdt.core.ccnature</nature>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从eclipse工作区删除".cproject"文件

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

  4. 通过"android工具"上下文菜单重新添加对android的本机支持

谢谢android开发者.