Monday, November 29, 2010

Наступая на первые грабли

Не так давно я занялся разработкой приложений под Android с помощью Eclipse IDE. Первый же демо проект преподнёс мне парочку граблей, на которые я успешно наступил и хотел бы поделиться решением. Итак, по порядку:

Грабли №1 "No resource identifier found for attribute 'targetSdkVersion' in package 'android'"
AndroidManifest.xml содержит атрибут targetSdkVersion, появившийся только в Android 1.6 в то время как проект собирается для более ранней версии. В моём случае, это была версия 1.5.

Как лечится: Поскольку в моём демо проекте версия SDK не играет принципиальной роли, я просто указал чтобы проект собирался для Android 1.6. ( Project > Properties > Android > Project Build Target = Android 1.6 > Ok ).

Грабли №2 Project '<название проекта>' is missing required source folder: 'gen'
Иногда, при очистке проекта ( Project > Clean ) папка 'gen' удаляется. Причины по которым это происходит иногда, а не всегда, мне пока не ясны, но факт остаётся фактом.
Так вот, эта папка содержит автоматически сгенерированный java класс-обвёртку для доступа к ресурсам. Он генерируется компилятором ресурсов (aka Android Resource Manager) в самом начале сборки проекта лишь в том случае, если ресурсы приложения изменились. Если же ресурсы не менялись, то он не пересоздаётся, и соответственно папка gen, в которой он должен находится также. При этом отсутствие этой папки приводит к указанной ошибке.

Как лечится: Необходимо измените любые ресурсы, например, добавив дополнительный пункт меню, который позже можно удалить ( res > menu > menu.xml > add > item > ctrl + s > ctrl > + b ).

No comments:

Post a Comment