Использование android.support.v7.widget.CardView в моем проекте (Eclipse)

Я хотел бы использовать новый виджет CardView, который был представлен с новой библиотекой поддержки Android L Developer Preview (как упоминалось здесь), который, по-видимому, является частью новой версии библиотеки поддержки v7.

Теперь я обновил свою версию SDK, загрузил новейший пакет библиотеки поддержки, но я все еще не могу найти новый виджет CardView.

Я уже искал в Интернете и официальных документах, но не смог найти подсказок о том, где я могу получить новую библиотеку поддержки.

Любая помощь высоко ценится!

РЕДАКТИРОВАТЬ: я использую ADT/Eclipse


person FD_    schedule 27.06.2014    source источник
comment
На веб-сайте Android Developer есть примечание, возможно, это поможет: для подключаемого модуля Eclipse ADT требуется Java 7, если вашей целью компиляции является предварительная версия L для разработчиков.   -  person adboco    schedule 27.06.2014
comment
@FD_: Мне любопытно, почему вы все еще используете Eclipse. Что не так с Android Studio?   -  person dannyroa    schedule 10.09.2014
comment
@dannyroa: Тем временем я переключился;) Во время публикации вопроса я не хотел переключаться, потому что в то время AIDE, Android IDE, не поддерживала новую структуру проекта в приемлемой степени.   -  person FD_    schedule 10.09.2014
comment
@FD_: Ха-ха! Я надеюсь, что ваша жизнь станет лучше с AS. Моя есть.   -  person dannyroa    schedule 12.09.2014
comment
Я не знал, что CardView нуждается в собственной совместимой библиотеке. Я предполагал, что AppCompat также справится с этим представлением.   -  person Price    schedule 09.03.2015


Ответы (12)


Используя Gradle или Android Studio, попробуйте добавить зависимость от com.android.support:cardview-v7.

В настоящее время не существует обычного проекта библиотеки Android для cardview-v7, leanback-v17, palette-v7 или recyclerview-v7. Я понятия не имею, будет ли Google отправлять такие библиотечные проекты.

person CommonsWare    schedule 27.06.2014
comment
Спасибо за ответ! Проблема в том, что я все еще использую ADT/Eclipse. Есть ли способ использовать его там? - person FD_; 27.06.2014
comment
@FD_: Не сейчас - это то, о чем говорил мой второй абзац. Я также не вижу этого в репозитории исходного кода Android, поэтому мы не можем упаковать наши собственные проекты библиотек. AAR не могут быть легко преобразованы в исходные библиотечные проекты, поскольку они содержат скомпилированный код с числовыми ссылками на константы в стиле R. - person CommonsWare; 27.06.2014
comment
Хорошо. Тогда спасибо, проверим с помощью Android Studio. - person FD_; 27.06.2014
comment
Наконец-то я нашел способ сделать это! Скопировать ресурсы из AAR в библиотечный проект в Eclipse не составило труда, а поскольку включенные исходники хранились в собственном jar-файле, я мог просто повторно использовать и его. Я добавил свой собственный ответ. - person FD_; 28.06.2014
comment
Добавлено в Android Studio и работает отлично! Спасибо! - person Shudy; 24.12.2014

Наконец-то я нашел способ использовать CardView в ADT/Eclipse. На самом деле это довольно просто:

  1. Создайте новый проект в Android Studio
  2. Добавьте зависимость CardView, как описано в других ответах на этот вопрос.
  3. Откройте ADT и создайте новый проект библиотеки с именем пакета android.support.v7.cardview.
  4. Удалить все ресурсы, автоматически созданные ADT
  5. Find the exploded-aar folder in Android Studio and copy the following files to these locations:
    • res/values/values.xml to the same location in your ADT project
    • classes.jar в libs/ в вашем проекте ADT
    • AndroidManifest.xml используйте его для замены автоматически созданного манифеста в ADT
  6. Добавьте class.jar в путь сборки и убедитесь, что он экспортирован.
  7. Добавьте ссылку на проект библиотеки в проект, в котором вы хотите использовать CardView. Вы можете выполнить шаги, описанные в разделе Adding libraries with resources здесь: https://developer.android.com/tools/support-library/setup.html

В качестве альтернативы созданию нового проекта Android Studio для получения содержимого AAR вы также можете просто найти и разархивировать AAR из локального репозитория maven. Просто следуйте инструкциям Эндрю Чена ниже.

Обратите внимание, что библиотека CardView может быть недоступна в форме, совместимой с исходным кодом и ADT, поскольку это всего лишь предварительная версия и WIP. Поскольку в следующих выпусках могут быть исправления ошибок и улучшения, важно поддерживать библиотеку в актуальном состоянии, что легко сделать с помощью зависимости Gradle, но это необходимо делать вручную при выполнении описанных выше шагов.

person FD_    schedule 28.06.2014
comment
Ваш шаг № 5 относится к Studio. Должен ли шаг № 1 создавать новый проект в Android Studio? - person CommonsWare; 28.06.2014
comment
Кроме того, classes.jar будет содержать скомпилированные ссылки на значение AAR для R констант, и я не понимаю, как этот подход поможет научить Eclipse не изменять эти R константы. - person CommonsWare; 28.06.2014
comment
@CommonsWare Правильно, я исправил № 1, № 5 должен быть правильным. - person FD_; 28.06.2014
comment
@CommonsWare Хм, на самом деле, я по наивности только что попробовал скопировать и вставить, и это сработало. Насколько я понимаю, AAPT всегда генерирует один и тот же идентификатор ресурса для одного и того же ресурса (пакет, тип разрешения и имя), поэтому я предположил, что AAPT будет генерировать те же идентификаторы, что и в банке AAR. - person FD_; 28.06.2014
comment
AAPT всегда генерирует один и тот же идентификатор ресурса для одного и того же ресурса (пакет, тип разрешения и имя - не то, что я знаю. - person CommonsWare; 28.06.2014
comment
Хорошо, правильно, это не применяется, когда проект ссылается на библиотечные проекты. Однако, похоже, в банке нет скомпилированных ссылок. Классы внутри этого jar-файла получают свои идентификаторы ресурсов из R.java, сгенерированного для проекта библиотеки в Eclipse. - person FD_; 28.06.2014
comment
Очень интересно. Может быть, это что-то с процессом взрыва. Я пытался найти способ получить что-то из AAR, которое можно было бы использовать в Eclipse, и я убедил себя, что ссылки precompiled-R будут остановкой шоу. Я попробую вашу технику как-нибудь на следующей неделе (после того, как осядет пыль от всех взрывов инструментов на этой неделе). Большое спасибо! - person CommonsWare; 28.06.2014
comment
Наконец-то у меня появилась возможность попробовать это на более сложном примере mediarouter-v7, у которого масса ресурсов. И, кажется, это работает (сбой, который я получил, я также получаю при компиляции с AAR и, похоже, что-то не синхронизировано между Play Services и Chromecast в моей тестовой среде). В моем предыдущем исследовании меня серьезно беспокоил файл R.txt, в котором перечислены идентификаторы ресурсов. Я не уверен, для чего он нужен, но, похоже, он не требуется для преобразования проекта библиотеки AAR. Хорошо сделано! - person CommonsWare; 03.07.2014
comment
@CommonsWare да, изначально R.txt тоже немного смутил. В любом случае, рад, что это сработало и для вас! Прошу прощения, но не могли бы вы взглянуть на другой мой вопрос о проксировании R.java? (stackoverflow.com/questions/24534892/proxying-r-java) - person FD_; 03.07.2014
comment
Извините, я понятия не имею об этом бите проксирования. Что касается вашего ответа, я собрал сценарий Ruby для автоматизации преобразования и написал сообщение в блоге о вашем рецепте и сценарии: commonsware.com/blog/2014/07/03/using-aars-eclipse.html Еще раз, отличная работа! - person CommonsWare; 03.07.2014
comment
@CommonsWare Хорошо, спасибо за ответ! Выражаю, какая большая честь быть упомянутым в вашем блоге (я постоянный читатель)! - person FD_; 03.07.2014
comment
@FD_ Почему Google не может предоставить обычные образцы, как раньше, для поддержки пользователей Eclipse? - person android developer; 05.07.2014
comment
Разработчик @android: Ну, я думаю, они либо хотят заставить разработчиков перейти на Android Studio (вам действительно следует подумать об изменении, если у вас нет веских причин оставаться с ADT), либо они просто не хотят выпускать две версии так долго. так как библиотека все еще находится в режиме предварительного просмотра. - person FD_; 06.07.2014
comment
@FD_ очень плохо. Google, кажется, пренебрегает Eclipse. Мне очень нравится Eclipse, и раньше я пробовал Android Studio. У него были очень интересные функции, но он не удобен по сравнению с Eclipse и не подходит для людей, переходящих с Eclipse. Кроме того, он не поддерживает никаких плагинов Eclipse. - person android developer; 06.07.2014
comment
Разработчик @android: я попробовал AS однажды, когда был выпущен первый предварительный просмотр, и обнаружил, что он настолько глючит, что с удовольствием остановился на Eclipse. Тем не менее, я попробовал еще раз, так как я написал вопрос, и он работал довольно стабильно, поэтому я, наконец, сделал шаг. С тех пор AS получила средство импорта проектов Eclipse, которое безупречно работало для моих проектов. - person FD_; 06.07.2014
comment
@FD_ Понятно. Может быть, я попробую еще раз. Поддерживает ли он NDK сейчас? документация кажется немного старой, и, возможно, что-то изменилось. Кроме того, насколько важно научиться использовать Gradle в AS? - person android developer; 06.07.2014
comment
Разработчик @android: Нет, NDK еще не поддерживается, но скоро появится. Я настоятельно рекомендую изучить новую систему сборки Gradle. Чтобы понять основы, потребуется всего несколько часов (например, разные типы сборки и вкусы продуктов действительно крутые). - person FD_; 06.07.2014
comment
@FD_ хорошо, спасибо. Я попробую. все еще грустно из-за того, что Eclipse пренебрегают. - person android developer; 06.07.2014
comment
@FD_ любое решение, найденное сейчас, о том, как использовать Cardview с помощью Eclipse. - person Dory; 05.11.2014
comment
@Dory: в последней папке android-sdk \extras\android\support\v7\ теперь у нас есть папка с картами. Выполните вышеуказанные шаги, указанные в ответе. Вместо шага 5 импортируйте проект из папки cardview. Переименуйте его в android-support-v7-cardview. Установите его как библиотеку. А затем импортируйте ту же библиотеку в свой проект eclipse. - person SHS; 02.12.2014
comment
@FD_ это все еще процесс? Я только что получил похожую ошибку, и я немного удивлен, что это так сложно даже сейчас, почти через год после того, как вышел предварительный просмотр. - person vkislicins; 29.04.2015
comment
@vkislicins Да, насколько я знаю, если вы все еще используете Eclipse, вам все равно придется следовать этой процедуре. Однако я переключился на Android Studio. - person FD_; 01.05.2015
comment
@FD_, пожалуйста, ответьте и на это: stackoverflow.com/questions/36393540/ - person ; 04.04.2016

Вам нужно добавить это в свой build.gradle:

dependencies {
    ...
    compile 'com.android.support:cardview-v7:+'
}

А потом Sync Project with Gradle Files. Наконец, вы можете использовать CardView, как описано здесь.

person adboco    schedule 27.06.2014

Я сделал следующее, и это решает проблему с recyclerview, которую вы можете использовать и для другого виджета, если он не работает в проекте eclipse.

• Перейдите в каталог sdk\extras\android\m2repository\com\android\support\recyclerview-v7\21.0.0-rc1.

• Скопируйте файл recyclerview-v7-21.0.0-rc1.aar и переименуйте его в .zip.

• Разархивируйте файл, вы получите classes.jar (переименуйте файл jar в более осмысленное имя)

• Используйте следующий jar-файл в пути сборки вашего проекта или в каталоге lib.

и это устранит вашу ошибку.

удачного кодирования :)

person Rajat Sharma    schedule 02.07.2014
comment
Это не сработает, если у рассматриваемого AAR есть ресурсы. Так получилось, что у RecyclerView AAR в настоящее время нет ресурсов, поэтому это работает, но это не гарантируется для будущих версий AAR. - person CommonsWare; 03.07.2014

https://github.com/yongjhih/CardView

Проект затмения CardView v7. (из sdk/extras/android/m2repository/com/android/support/cardview-v7)

Проект строился поэтапно:

cp {sdk}/extras/android/m2repository/com/android/support/cardview-v7/21.0.0-rc1/cardview-v7-21.0.0-rc1.aar cardview-v7-21.0.0-rc1.zip
unzip cardview-v7-21.0.0-rc1.zip
mkdir libs/
mv classes.jar libs/cardview-v7-21.0.0-rc1.jar
person Andrew Chen    schedule 02.07.2014
comment
Спасибо, это помогло мне. - person sourabhkumbhar; 28.01.2015

Я смог решить это только после того, как добавил эти два ВМЕСТЕ:

dependencies {
...
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
...
}

в моем файле build.gradle (Module:app)

а затем нажмите кнопку синхронизировать сейчас

person Roy Doron    schedule 20.11.2016

Хотя он немного скрыт, он находится в официальной документации здесь, где можно ли найти библиотеку среди кода sdk и как ее получить с помощью ресурсов (способ Eclipse)

person Eloi Navarro    schedule 05.11.2014

Откуда: https://developer.android.com/tools/support-library/setup.html#libs-with-res

Добавление библиотек с ресурсами Чтобы добавить в проект приложения библиотеку поддержки с ресурсами (например, appcompat версии 7 для панели действий), выполните указанные ниже действия.

Использование затмения

Создайте проект библиотеки на основе кода вспомогательной библиотеки:

  • Убедитесь, что вы загрузили библиотеку поддержки Android с помощью диспетчера SDK.

  • Создайте проект библиотеки и убедитесь, что необходимые файлы JAR включены в путь сборки проекта:

  • Выберите «Файл» > «Импорт».

  • Выберите «Существующий код Android в рабочую область» и нажмите «Далее».

  • Перейдите в каталог установки SDK, а затем в папку Support Library. Например, если вы добавляете проект appcompat, перейдите в /extras/android/support/v7/appcompat/.

  • Нажмите Готово, чтобы импортировать проект. Для проекта v7 appcompat теперь вы должны увидеть новый проект под названием android-support-v7-appcompat.

  • В новом проекте библиотеки разверните папку libs/, щелкните правой кнопкой мыши каждый файл .jar и выберите «Сборка».

  • Путь > Добавить в путь сборки. Например, при создании проекта appcompat v7 добавьте файлы android-support-v4.jar и android-support-v7-appcompat.jar в путь сборки.

  • Щелкните правой кнопкой мыши папку проекта библиотеки и выберите Путь сборки > Настроить путь сборки.

  • На вкладке «Порядок и экспорт» проверьте JAR-файлы, которые вы только что добавили в путь сборки, чтобы они были доступны для проектов, зависящих от этого проекта библиотеки. Например, для проекта appcompat необходимо экспортировать файлы android-support-v4.jar и android-support-v7-appcompat.jar.

  • Снимите флажок Зависимости Android.

  • Нажмите OK, чтобы завершить изменения.

  • Теперь у вас есть проект библиотеки для выбранной библиотеки поддержки, которую вы можете использовать с одним или несколькими проектами приложений.

  • Добавьте библиотеку в свой проект приложения:

  • В Project Explorer щелкните проект правой кнопкой мыши и выберите «Свойства».

  • На панели категорий в левой части диалогового окна выберите Android.

  • На панели «Библиотека» нажмите кнопку «Добавить».

  • Выберите проект библиотеки и нажмите OK. Например, проект appcompat должен быть указан как android-support-v7-appcompat.

  • В окне свойств нажмите ОК.

person I'm_With_Stupid    schedule 12.11.2014

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

Хотя в документах говорится, что RecyclerView и CardView являются частью библиотеки appcompat v7. Но, как я пытался и обнаружил, RecyclerView и CardView на самом деле зависят от библиотеки appcompat v7. Поэтому, если вы хотите использовать RecyclerView или CardView, вам нужно добавить как библиотеку appcompat версии 7, так и RecyclerView/CardView.

Перейдя по ссылке здесь, если вы хотите используйте CardView в своем проекте Android Eclipse, вам необходимо импортировать библиотеку appcompat v7 и CardView в рабочее пространство Eclipse и сделать их проектами библиотеки. Затем сделайте проект CardView зависимым от проекта библиотеки appcompat v7 и сделайте свой проект зависимым от проекта CardView.

person Michelle    schedule 24.06.2015

Просто добавьте следующую строку в свой проект build.gradle

dependencies {
    ...
    compile 'com.android.support:cardview-v7:24.0.0'
}

И синхронизируйте проект с gradle.

person Pihu    schedule 06.04.2016

Я сделал то, что сказал FD_, и он вылетел с ошибками, так как искал «Landroid/support/v7/cardview/R$styleable;», который не был скомпилирован с ним.

Если вы действительно хотите использовать CardView раньше в eclipse, прежде чем он получит свою собственную библиотеку, вы можете извлечь классы из class.jar, скопировать и вставить их в свой проект с помощью values.xml сверху из Android Studio и изменить все ссылки на android.support.v7.R на yourpackagename.R в скопированных классах. Это сработало и побежало для меня

person Kieron    schedule 28.06.2014
comment
Какое имя пакета было у вашего проекта библиотеки Eclipse? Содержит ли автоматически созданный R.java в вашем проекте библиотеки Eclipse тег ‹declare-styleable› из файла res/values/values.xml AAR. Сначала у меня был такой же сбой, но я решил его, исправив имя пакета проекта библиотеки. Как вы извлекли классы из банки? Вы его декомпилировали? - person FD_; 29.06.2014
comment
У него действительно было такое же имя, так что это могло быть просто причудой, и да, у него были правильные ресурсы. Я декомпилировал JAR с помощью стандартного декомпилятора (JD) - person Kieron; 29.06.2014

В самой последней версии Android мы реализуем представление карты следующим образом:

файл build.gradle:

dependencies {
    ...
    compile 'com.android.support:cardview-v7:24.0.0'
}

и в файле xml на него ссылаются как:

<androidx.cardview.widget.CardView
…>
…
</androidx.cardview.widget.CardView>

это означает, что его класс изменился на: androidx.cardview.widget.CardView

person user3044482    schedule 02.06.2020