命令“修复项目属性”到底做了什么?

“Project-> Android Tools-> Fix Project Properties”Eclipse命令exaclty有什么作用?

我已经阅读了很多次使用它,主要是在与Eclipse中的Android R生成问题相关的答案中,但对我来说它就像魔术一样,我按下它并且我认为它修复了一些项目属性,但没有任何反应……没有视觉效果反馈,没有关于修复了哪些项目属性的信息……任何人都可以对它究竟做了什么有所了解?

谢谢

通过查看ADT源代码,特别是在FixProjectAction和阅读源代码和注释中,我们可以看到它调用:

ProjectHelper.fixProject(project); ProjectHelper.fixProjectNatureOrder(project); AndroidNature.configureResourceManagerBuilder(project); AndroidNature.configurePreBuilder(project); AndroidNature.configureApkBuilder(project); 

ProjectHelper.fixProject(项目)执行:

  • 创建Java项目
  • 修复类路径条目以确保:
    • 该项目没有引用任何旧的android.zip/android.jar存档
    • 该项目不使用其输出文件夹作为sourc文件夹
    • 该项目未引用桌面JRE
    • 该项目引用了AndroidClasspathContainer。

ProjectHelper.fixProjectNatureOrder(项目)重新排序项目性质,因此Android项目性质是第一位的。

AndroidNature.configureResourceManagerBuilder(项目)添加了ResourceManagerBuilder,如果它还没有。 它会将自己作为第一个构建器插入。

AndroidNature.configurePreBuilder(项目)添加了PreCompilerBuilder(如果它尚未存在)。 它将检查ResourceManager的存在并立即插入。

AndroidNature.configureApkBuilder(项目)在最后添加.apk构建器(如果它尚未存在)。

最后三次调用可确保您的项目具有正确的构建器。 当您在eclipse项目属性中查看Builders部分时,您将看到:

  • 首先是Android资源管理器
  • 资源管理器之后的Android预编译器
  • Android Package Builder最后

在项目上运行“修复项目属性”的另一个结果是,在同一工作空间中将项目作为Android库引用的任何其他项目可能具有在项目构建路径上的“Android依赖项”下链接的jar。

这可能导致对同一jar文件的多次引用或缺少jar文件引用。

修复方法是从相关项目中删除这些链接,删除“Android依赖项”并重新运行“修复项目属性”。