Изучая исходный код ADT, в частности FixProjectAction и читая источник и комментарии, мы видим, что он вызывает:
ProjectHelper.fixProject(project);
ProjectHelper.fixProjectNatureOrder(project);
AndroidNature.configureResourceManagerBuilder(project);
AndroidNature.configurePreBuilder(project);
AndroidNature.configureApkBuilder(project);
ProjectHelper.fixProject (проект) делает:
- создает проект Java
- исправляет записи classpath, чтобы гарантировать, что:
- проект не ссылается ни на один старый архив android.zip/android.jar
- проект не использует свою выходную папку в качестве исходной папки
- проект не ссылается на рабочий стол JRE
- проект ссылается на AndroidClasspathContainer.
ProjectHelper.fixProjectNatureOrder (проект) изменяет порядок природы проекта, поэтому природа проекта Android является первой.
AndroidNature.configureResourceManagerBuilder (проект) добавляет ResourceManagerBuilder, если его там еще нет. Он вставит себя как первый строитель.
AndroidNature.configurePreBuilder (проект) добавляет PreCompilerBuilder, если его там еще нет. Он проверит наличие ResourceManager и сразу вставит себя.
AndroidNature.configureApkBuilder (проект) добавляет в конце компоновщик .apk, если его там еще нет.
Последние три вызова гарантируют, что у вас есть правильный компоновщик для вашего проекта. Когда вы посмотрите на раздел «Строители» в свойствах проекта Eclipse, вы увидите:
- Диспетчер ресурсов Android сначала
- Android Pre компилятор после диспетчера ресурсов
- Android Package Builder последний