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

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

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

谢谢

  • 在Android ADT Eclipse插件中滚动布局编辑器
  • Android ADT版本22,未生成R.java文件
  • 如何在Eclipse for Android Application Design中获取图形布局窗口?
  • 如何在Android应用程序devise的Eclipse中获取graphics布局窗口?
  • Eclipse ADT更新不起作用
  • Project没有project.properties文件
  • R.java文件背后的魔术
  • Eclipse:Android设备选择器 - 未知的Android 2.3.4设备
  • 通过查看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依赖项”并重新运行“修复项目属性”。