3

我有 2 个安卓项目:

  • 1 个库项目在其他几个项目中用作 API 并生成 apklib
  • 2个使用这个apklib的android项目

在我的 apklib 项目中,我在一个布局中有一个引用的微调器 R.id.mySpinner

我有一个 androidproject 在 eclipse 和 maven 中编译得很好(使用 mvn clean install)。备注:这第一个项目也在一个布局中使用微调器 R.id.mySpinner 上的相同引用。

第二个android项目在eclipse下编译得很好,但是用maven编译时出现以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project myproject: Compilation failure: Compilation failure:
[ERROR] /mypath/target/unpack/apklibs/mylibpackage/src/pathtoactivity/BaseActivity.java:[302,79] cannot find symbol
[ERROR] symbol:   variable mySpinner
[ERROR] location: class mypackage.R.id

我注意到,正如编译器所说,由 ..\target\generated-sources\r\mypackage\R.java 目录中的 maven 编译器生成的 R 不包含 mySpinner 引用,这与项目编译良好不同。

备注:第二个项目在其任何类或布局中都没有对 R.id.mySpinner 的任何引用。

所以我在这里,我不知道要搜索了。我注意到这两个项目之间的唯一区别是上面提到的。我也不知道eclipse编译和mvn编译有什么区别。

有人遇到过这样的问题吗?或者你有什么提示可以在某个地方找到让我找到解决方案的信息吗?

4

1 回答 1

4

我终于自己发现了问题。问题是布局在 Android 程序项目和 apklib 项目中具有相同的名称。因此,apkklib 项目中包含对 mypackage.R.id 的引用的布局被覆盖。

就我而言,这是库的 main.xml 布局,它被 eclipse 为“hello world”项目创建的 main.xml 布局覆盖,我忘记删除了。

Maven 在编译时检测到它,而 Eclipse 插件没有,这又是一个错误。

从 Android 项目中删除秘密的“hello world”main.xml 修复了它。

于 2013-05-29T07:29:30.080 回答