By looking into ADT source code, specifically into FixProjectAction and reading source and comments we can see that it calls:
ProjectHelper.fixProject(project);
ProjectHelper.fixProjectNatureOrder(project);
AndroidNature.configureResourceManagerBuilder(project);
AndroidNature.configurePreBuilder(project);
AndroidNature.configureApkBuilder(project);
ProjectHelper.fixProject(project) does:
- creates Java project
- fixes classpath entries to ensure that:
- the project does not reference any old android.zip/android.jar archive
- the project does not use its output folder as a sourc folder
- the project does not reference a desktop JRE
- the project references the AndroidClasspathContainer.
ProjectHelper.fixProjectNatureOrder(project) reorders project natures, so that Android project nature is first.
AndroidNature.configureResourceManagerBuilder(project) adds the ResourceManagerBuilder, if its not already there. It'll insert itself as the first builder.
AndroidNature.configurePreBuilder(project) adds the PreCompilerBuilder if its not already there. It'll check for presence of the ResourceManager and insert itself right after.
AndroidNature.configureApkBuilder(project) adds the .apk builder at the end if it's not already there.
Last three calls ensure that you have correct builder for your project. When you look at your Builders section in eclipse project properties you will see:
- Android Resource Manager first
- Android Pre Compiler after Resource Manager
- Android Package Builder last