这是一个很长的故事,但我真的很感激任何帮助。
我正在windows下使用eclipse构建一个Android应用程序。该应用程序包含一个应用程序(我们称之为App
)项目和两个库项目(我们称之为libA
和libB
)。
该libB
项目仅包含 java 代码(和 android 资源)。它引用了libA
包含少量 java 类、大量 C++ 类和这些使用Swig
.
反过来App
项目引用libB
项目
Android.mk
通过在makefile中添加我自己的规则,我设法在 ndk-build 中处理构建的 swig 部分。所有这一切都运作良好。
最近我想尝试一下 eclipse managed ndk-builds,这样我就不必再通过控制台手动触发原生构建了。
因此,我添加了“本机支持”,libA
并且(经过一些调整/配置)它确实正确构建了本机libA.so
文件。
问题是自从我为我的库添加了本机支持并更新了 eclispe 的 android 插件(ADT、CDT、NDK)之后,就无法libA
在其他项目中导入。似乎从未创建过 jar 文件。并且没有“删除本机支持”的选项。
它给我的错误libB
是:
The container 'Android Dependencies' references non existing library 'D:\path\to\libA\bin\libA.jar'
和类似的东西App
,但每个库一个:
The container 'Android Dependencies' references non existing library 'D:\path\to\libA\bin\libA.jar'
The container 'Android Dependencies' references non existing library 'D:\path\to\libB\bin\libB.jar'
所以我试图回去,并恢复项目中与本机支持相关的所有内容。所以,我必须通过控制台手动调用 ndk-build (它有效,共享对象被构建)。但是日食部分仍然失败并出现相同的错误。所以我现在怀疑插件更新了v22.0.0.v201305140200--675183
。
有人有想法吗?
谢谢。
**编辑 #1 **
我继续调查,并通过安装 Android SDK 的构建工具(现在 SDK 管理器中的单独包)设法部分解决了我的问题。
结果是我现在可以App
在控制台中使用 ant 构建我的项目,但 eclipse 仍然不能。似乎 eclipse 正在尝试阅读/path/to/libA/bin/libA.jar
,但创建的是/path/to/libA/bin/classes.jar
使用命令行构建App
项目时,一个新问题是它不会从libA
.
继续调查...
**编辑 #2 **
我设法解决了与未导入共享对象相关的问题。在其中创建了一个jni
文件夹。这些makefile的唯一目的是导入lib,那里没有源文件(这就是我那里没有文件的原因)Application.mk
Android.mk
*.mk
但是 eclipse + ADT 22.0.0 仍然无法构建项目(搜索libA.jar
而libB.jar
不是classes.jar
在每个位置)。
**编辑 #3 **
我继续调查,并删除了项目中与 eclipse 相关的所有内容(即.externalToolBuilders
、.project
、.cproject
),并将它们重新导入到我的 eclipse 工作区中。现在构建系统设法为libA
和导入 jar 库libB
。但显然它不会触发 ndk-build (因为它们不再配置原生支持)。