添加本机支持会阻止我的库正确构建

时间:2013-05-20 10:12:39

标签: android eclipse android-ndk adt

这是一个很长的故事,但我真的很感激任何帮助。

我正在windows下使用eclipse构建一个Android应用程序。该应用程序包含一个应用程序(我们称之为App)项目和两个库项目(让我们称之为libAlibB)。

libB项目仅包含java代码(和android资源)。它引用了libA项目,该项目包含很少的java类,许多C ++类和用于使用Swig生成的本机C ++类的java包装器。

反过来,App项目引用libB项目

我已经设法通过在Android.mk makefile中添加自己的规则来处理ndk-build中构建的swig部分。所有这一切都很好。

最近我想尝试一下eclispse管理的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管理器中单独的软件包)设法部分解决了我的问题。

结果是我现在可以在控制台中使用ant构建我的App项目,但是eclipse仍然不能。似乎eclipse试图阅读/path/to/libA/bin/libA.jar,但创建的是/path/to/libA/bin/classes.jar

使用命令行构建App项目时,一个新问题是它不会从libA导入共享库。

继续调查......

** 编辑#2 **

我设法修复了与未导入共享对象相关的问题。创建了一个jni文件夹,其中包含Application.mkAndroid.mk。这些makefile只用于导入lib,没有源文件(这就是我没有*.mk文件的原因)

但是eclipse + ADT 22.0.0仍然无法构建项目(在每个位置搜索libA.jarlibB.jar而不是classes.jar。)

** 编辑#3 **

我继续调查,我已经删除了项目中与eclipse相关的所有内容(例如.externalToolBuilders.project.cproject),并在我的eclipse工作区中重新导入它们。现在构建系统设法导入libAlibB的jar库。但显然它不会触发ndk-build(因为它们不再配置本机支持)。

0 个答案:

没有答案