Подтвердить что ты не робот

Использование Android build.xml в eclipse?

У меня есть проект андроида, который имеет файл сборки Ant. Он отлично работает через командную строку:

[email protected]:~/git/$ ant
Buildfile: build.xml
    [setup] Android SDK Tools Revision 8
    [setup] Project Target: Android 2.1-update1
    [setup] API level: 7
    [setup] 

    ... etc etc etc ...

Но когда я пытаюсь использовать это в eclipse, build.xml имеет красный-X.

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyWonderfulProject" default="help">

<project подчеркивается с ошибкой: Целевая помощь по умолчанию не существует в этом проекте

Кажется, что все остальные в Интернете имеют эту проблему, и, похоже, это связано с тем, что build.xml использует директивы, которые поступают из нескольких вложенных файлов, зависящих от Android, которые импортирует этот файл build.

У меня есть другие проекты в моей рабочей области, которые используют механизм сборки Eclipse, поэтому я знаю, что моя среда может компилировать, запускать и развертывать приложения для Android без проблем. Но этот файл сборки дает мне головные боли.

Что такое исправление?

4b9b3361

Ответ 1

Вариант 1:

Импортируйте файл шаблона Android ant в файл build.xml. Предполагая, что у вас есть sdk.dir, определенный в local.properties и указывающий на ваш установочный каталог Android, добавьте следующее под элементом проекта:

    <import file="${sdk.dir}/platforms/${target}/templates/android_rules.xml" />

Вариант 2:

Чтобы использовать целевые объекты Android ant в перспективе Eclipse ant, это не поможет. Кажется, что существует некоторая общая несовместимость уровня, которую я не решил полностью решить, но чтобы все было на удовлетворительном уровне, хотя вы можете:

  • Импортируйте проект build.xml в качестве строителя. Свойства проекта → Строители → импорт.
  • Не используйте параметр 1. Вместо этого игнорируйте предупреждение о недостающем шаблоне. Глобальные свойства → ant → Редактор → Проблемы. Добавьте build.xml в имена.

Это повлияет на все проекты и проигнорирует фактические ошибки, поэтому это не идеальное решение. Но вы можете использовать настройки сборки Android в Eclipse, а также из командной строки.

Ответ 2

В файле ${sdk.dir}/tools/ ant/main_rules.xml есть одна цель, называемая "help", как показано ниже,

<target name="help">

    <echo>Android Ant Build. Available targets:</echo>
    <echo>   help:      Displays this help.</echo>
    <echo>   clean:     Removes output files created by other targets.</echo>
    <echo>   compile:   Compiles project .java files into .class files.</echo>
    <echo>   debug:     Builds the application and signs it with a debug key.</echo>
    <echo>   release:   Builds the application. The generated apk file must be</echo>
    <echo>              signed before it is published.</echo>
    <echo>   install:   Installs/reinstalls the debug package onto a running</echo>
    <echo>              emulator or device.</echo>
    <echo>              If the application was previously installed, the</echo>
    <echo>              signatures must match.</echo>
    <echo>   uninstall: Uninstalls the application from a running emulator or</echo>
    <echo>              device.</echo>
</target>

скопируйте этот файл в файл build.xml и он должен работать.

Ответ 3

Это не устраняет проблему, но это заставит Eclipse перестать мешать. Перейдите на Window > Preferences > Ant > Editor и выберите вкладку Problems. Установите флажок ignore all buildfile problems.

Ответ 4

У меня есть одна и та же проблема, и все, что я сделал, было goto на eclipse

Window->Preferences->Ant->Editor->Problems

и нажмите

Ignore All Build File Problems.

Ответ 5

На самом деле это не ответ, но для того, что стоит, я смог устранить проблему, удалив проект eclipse из рабочей области, удалив. * в моем каталоге проекта и начиная с. Eclipse FTW!

Ответ 6

Если ваш файл build.xml имеет свою собственную цель, а не полагается на импортированный, то вам нужно поставить эту цель перед строкой

<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />