R.Id.在android项目中使用maven生成apklib时丢失

时间:2013-05-28 17:13:11

标签: android maven android-resources apklib

我有2个android项目:

  • 1个库项目,在其他几个项目中用作API 生成一个apklib
  • 使用此apklib的2个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

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

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

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

有人曾经遇到过这样的问题吗?或者你有一个提示,找到某些信息,让我在前往解决方案的路上?

1 个答案:

答案 0 :(得分:3)

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

在我的情况下,这是由eclipse为“hello world”项目创建的main.xml布局覆盖的库的main.xml布局,我忘了删除。

Maven在编译时检测到它,而Eclipse插件不是,也是一个bug。

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