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

时间:2011-05-19 09:27:01

标签: android eclipse eclipse-plugin adt

“Project-> Android工具 - >修复项目属性”Eclipse命令exaclty做了什么?

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

THX

2 个答案:

答案 0 :(得分:27)

通过查看ADT源代码,特别是FixProjectAction并阅读源代码和评论,我们可以看到它调用:

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

ProjectHelper.fixProject(project)

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

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

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

AndroidNature.configurePreBuilder(project)添加了PreCompilerBuilder,如果它还没有。它将检查ResourceManager的存在并立即插入。

AndroidNature.configureApkBuilder(project)在最后添加.apk构建器,如果它还没有。

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

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

答案 1 :(得分:1)

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

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

修复方法是从相关项目中删除这些链接,删除“Android Dependency”并重新运行“Fix Project Properties”。