我有一个包含对图书馆项目的引用的Android项目。库项目包含一个资源(一个renderscript字节码包)。主项目还有自己的资源,包括布局,其中包含一个如下所示的字段:
<EditText android:id="@+id/edit_name" />
当我在ant中构建我的主项目,并在运行时调用findViewById(R.id.edit_name)
时,该调用将返回我期望的EditText组件。但是当我清理项目并在Eclipse findViewById(R.id.edit_name)
中构建它们时,返回null
。
调试调用显示我的组件在运行时存在于View中,并且实际上已分配了id,但它与R.id.edit_name的值不同(在本例中为R中的id) java和R.id.edit_name的运行时值== 0x7f070000,而运行时存在的实际View有mId == 0x7f080000)
使用ant构建,R.java是使用R.id.edit_name === 0x7f080000创建的(它与我在运行应用程序时观察到的id相匹配。)
当我在Eclipse中删除库依赖项时,R.java包含R.id.edit_name == 0x7f070000,但运行时也是如此,一切正常。
我意识到一个好的答案是用ADT / Eclipse提交bug报告,并使用ant来构建,但我正在开发库,我想确保它支持Eclipse用户。所以我想知道的是:
事实证明这与使用Renderscript资产有关 - 当我删除renderscript时,问题就消失了(两个项目都在他们的ID中使用了07“type”标签。)我仍然完全喜欢听到一个解决方法,但是现在看来Eclipse构建的库项目中的自定义renderscripts是一个非首发。作为参考,我正在使用最新最好的Eclipse ADT(22.2.1)