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

Как правильно определить зависимость v7 appcomp?

Я пытаюсь создать (унаследованный) проект Android для сборки. Я использую Ant и инструменты командной строки (и IDEA).

В styles.xml есть ссылки, которые не могут быть разрешены, например:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">

Это исходная ошибка, с которой я столкнулся:

[...]/res/values/styles.xml:8: error: Error retrieving parent for item:
No resource found that matches the given name '@style/Theme.AppCompat.Light'.

Затем я заметил, что project.properties имеет эту ссылку appcompat, которая разбита на моей (OS X) машине:

target=android-18
android.library.reference.1=../../../../adt-bundle-linux-x86_64/sdk/extras/android/support/v7/appcompat

Я попытался исправить это, сделав ссылку относительно ${sdk.dir}:

android.library.reference.1=${sdk.dir}/extras/android/support/v7/appcompat

Итак, теперь этот путь должен быть правильным. Но теперь, когда я запускаю ant debug:

BUILD FAILED
/opt/android-sdk-macosx/tools/ant/build.xml:573: 
  /opt/android-sdk-macosx/extras/android/support/v7/appcompat resolve to a 
  path with no project.properties file for project /Users/joka/devel/project/

Итак, какие-то идеи? Какой самый простой способ построить этот проект?

(Обратите внимание, что специальные рекомендации, не связанные с Ecplise, не будут полезны для меня.)

Изменить: установка Android SDK выглядит следующим образом:

enter image description here

4b9b3361

Ответ 1

Я столкнулся с той же проблемой, поэтому я попытался использовать относительный путь и устранил проблему для меня. Похоже, только относительные пути работают с android.library.reference. Я сделал быстрый поиск, чтобы проверить это, и наткнулся на fooobar.com/questions/409698/..., которая указывает, что абсолютные пути будут работать с android.library.reference в Windows, но не на Unix или Mac.

Мир.

Ответ 2

Как указал Джей, в Unix/Mac будут работать только относительные пути.

Для создания Ant для сборки мне также понадобилось сгенерировать build.xml для проекта appcompat, используя команду android update project -p <dir>, в моем случае:

/opt/android-sdk-macosx/tools/android update project 
    -p /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat

Точная конфигурация для меня была:

android.library.reference.1=../../../../../../../opt/android-sdk-macosx/extras/‌​android/support/v7/appcompat

(Это также работает в local.properties, что я считаю лучшим местом, поскольку тот же путь не будет работать для всех разработчиков.)


Я только что продвинул comment от 6 месяцев назад в ответ, как было предложено кем-то.

Кстати, теперь, когда я действительно что-то знаю о разработке Android, я призываю всех, у кого есть шанс повернуть Ant и посмотреть новая система сборки Gradle, которая полностью сладка в составе. Это CI-friendly и упрощает автоматизацию полезных вещей (например, использование имени и названия пакета для разных типов сборки). Переполнение стека поможет при возникновении проблем.

Используя библиотеки поддержки с Gradle, вы пропустите все вышеперечисленные проблемы и просто выполните:

dependencies {
    compile "com.android.support:appcompat-v7:18.0.+"
}

Ответ 3

Ваш путь кажется неправильным (вам не хватает части "совместимости" ). Библиотека v7-appcompat находится в

{sdkpath}/extras/android/compatibility/v7/appcompat

для меня (SDK Tools версии 22.0.5 на Max OS X 10.7.5)