每个构建之间的所有ID都是永久性的吗?

时间:2012-08-06 01:37:55

标签: android android-resources

R中的所有ID都是永久性的吗?最近我制作了一个游戏并使用声道ID保存到SharedPreferences。我想知道这些ID(相同文件)是否会在下次构建时更改?你能指点我一下文件吗?

1 个答案:

答案 0 :(得分:3)

每次更改资源时都会更改它们。您不应该依赖硬编码的值(例如将它们保存在SharedPreferences中)。

似乎没有真实的文档说明这一点(请参阅the docs on resources),但您可以通过记录int R.id.hello_world的值来自行测试(例如),然后添加一个在XML文件中前后的整串字符串,然后重建它。 int值将完全不同。

修改:我确实找到了您可能想要阅读的bit of documentation。它声明:“你永远不需要在那里发现资源ID ”;即使在您的情况下,您没有查看此文件,您也可以直接使用它。

此外,还有this answer讨论了如何生成ID,并详细说明每个生成的ID都有一个订单(包名,类型名,资源名),但这些是任意生成的。并且:“请注意,默认情况下,aapt不会尝试在构建之间保持这些标识符相同。

您可能还想阅读this slideshow,了解有关AAPT和Android资源生成过程的更多详细信息。