在Android项目中使用Maven生成的apklib时出现R.Id.缺失问题

3
我有两个Android项目:
  • 1个库项目,作为API在其他几个项目中使用,并生成apklib
  • 2个Android项目使用此apklib

在我的apklib项目中,一个布局中引用了一个Spinner R.id.mySpinner。

我的第一个项目在eclipse和maven下编译良好(使用mvn clean install)。 备注:这个第一个项目在一个布局中也使用相同的Spinner 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

我注意到编译器所生成的 R.java 文件中,与顺利编译的项目不同,.. \ target \ generated-sources \ r \ mypackage \ R.java 中不包含对于 mySpinner 的引用。
备注:这个第二个项目在任何类或布局中都没有对 R.id.mySpinner 的引用。
所以,我现在不知道该去哪里搜索了。我注意到两个项目之间唯一的区别就是上面提到的注释。我也不知道 Eclipse 编译和 Maven 编译之间的差异。
有人遇到过这样的问题吗?或者你有什么提示能够帮助我找到解决方案的方法吗?
1个回答

4
我最终自己找到了问题所在。 问题是在Android程序项目和apklib项目中有同名布局。结果是,包含对mypackage.R.id引用的布局在apkklib项目中被覆盖。 在我的情况下,这是库的main.xml布局被eclipse为“hello world”项目创建的main.xml布局所覆盖,并且我忘记将其删除。 Maven在编译时检测到它,而Eclipse插件没有,这又是一个错误。 从Android项目中删除秘密的“hello world”main.xml就解决了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接