2013-08-13 2 views
13

Я пытаюсь получить (унаследованный) проект Android для сборки. Я использую Ant & command line tools (и IDEA).Как правильно определить зависимость v7 appcomp?

В 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 конкретные советы не будет полезным для меня.)

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

enter image description here

+1

У вас есть пакет поддержки в '/ Opt/Android-СДК-MacOSX/дополнения/Android/поддержка/'? – Rajesh

+0

@ Реджеш: Да, знаю. И, более конкретно, '/ opt/android-sdk-macosx/extras/android/support/v7/appcompat /', кажется, устанавливается просто отлично. – Jonik

ответ

6

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

Мир.

+0

Ах, действительно. Я получил его, работая с 'android.library.reference.1 = ../../../../../../../opt/android-sdk-macosx/extras/android/support/v7/appcompat' Это также работает в 'local.properties', который я считаю лучшим местом, поскольку тот же путь не будет работать для всех разработчиков. – Jonik

+9

(Кроме того, для работы Ant-сборки мне понадобилось [сгенерировать build.xml] (http://stackoverflow.com/a/15718940/56285) для проекта appcompat, используя '/ opt/android-sdk-macosx/tools/android update project -p/opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat'.) – Jonik

+0

Я разместил символическую ссылку в моем проекте dir 'root => /', а затем Я могу иметь абсолютные пути относительные пути :) – singpolyma

0

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

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

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

+1

Хмм, для меня '{sdkpath}/extras/android' содержит только подкаталоги' support' и 'm2repository'. (И '{sdkpath}/extras/android/support/v7/appcompat' кажется именно тем, что мне нужно.) Если мне не хватает части SDK, как именно установить его? Я также использую Android SDK Tools 22.0.5. – Jonik

+0

У вас установлена ​​текущая версия поддерживаемых библиотек? (Мы находимся в версии 18 во время этого комментария). Вы можете проверить, запустив GUI менеджера обновления SDK (запустите программу «android» в подкаталоге tools.) Библиотека поддержки для меня почти в нижней части списка , – Patrick

+0

Да, [согласно Android SDK Manager] (http://i.stack.imgur.com/adUuX.png) У меня есть Android Support Library, версия 18 установлена. – Jonik

9

As Jay indicated, только Относительно Пути будут работать на Unix/Mac.

Для Ant сборки работать, я также необходимо generate 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, я призываю всех, у кого есть шанс вытолкнуть муравей и посмотреть на new Gradle-based build system, который полностью сладок в составе. Это CI-friendly и упрощает автоматизацию полезных вещей (например, использование имени и названия пакета для разных типов сборки). Stack Overflow will help, когда вы сталкиваетесь с проблемами.

Использование библиотеки поддержки с Gradle, вы бы пропустить все выше хлопот и simply do:

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

Мне также нужно было сменить target = android-19 на target = android-21 в /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat/project.properties, как описано в http://stackoverflow.com/questions/26457096/appcompat-v7-r21-returning-error-in-values-xml –

Смежные вопросы