Настройка библиотеки поддержки Android с помощью maven

Я отчасти новичок в Android.

Я создаю модуль maven для приложения для Android (он находится в существующем многомодульном проекте), который использует библиотеки поддержки Google (v4, v7, v13). Каков наиболее подходящий способ заставить его работать с maven.

Я хочу, чтобы мой проект имел возможность строить с Jenkins (Maven), поэтому я не могу связать какие-либо проекты IDE или любые другие средства, не связанные с maven.

Также приемлемы любые варианты комбинирования maven / gradle в Дженкинсе.

к сожалению, эти библиотеки не находятся в центральном репозитории maven. поэтому вам нужно использовать maven-android-sdk-deployer ( link ) для установки библиотек в ваш repository maven. затем добавьте необходимые библиотеки в файл pom.xml, как описано в readme.

Помимо maven-android-sdk-deployer , если у вас всегда установлен Android SDK с такими дополнениями Google, как я, вы можете определить локальный repository в файле POM проектов и позволить maven загружать зависимости из этого локального.

Рациональным из-за этого является то, что Google уже выпустил дополнительные дополнения в макете, совместимом с репозиторием maven. Для моей собственной машины это выглядит так:

jerry-mac-mini:android jerry$ pwd /Users/jerry/adt-bundle-mac-x86_64-20130917/sdk/extras/android jerry-mac-mini:android jerry$ tree m2repository m2repository ├── NOTICE.txt ├── com │  └── android │  └── support │  ├── appcompat-v7 │  │  ├── 18.0.0 │  │  │  ├── appcompat-v7-18.0.0.aar │  │  │  ├── appcompat-v7-18.0.0.aar.md5 │  │  │  ├── appcompat-v7-18.0.0.aar.sha1 │  │  │  ├── appcompat-v7-18.0.0.pom │  │  │  ├── appcompat-v7-18.0.0.pom.md5 │  │  │  └── appcompat-v7-18.0.0.pom.sha1 │  │  ├── 19.0.0 │  │  │  ├── appcompat-v7-19.0.0.aar │  │  │  ├── appcompat-v7-19.0.0.aar.md5 ............. 

Поэтому мне просто нужно добавить некоторые дополнительные строки в свой файл POM, а «env.ANDROID_HOME» – это переменная окружения, указывающая на путь установки Android SDK.

   android-support file://${env.ANDROID_HOME}/extras/android/m2repository   ......  com.android.support support-v4 19.0.1  

После этих шагов Maven в моем ADT, включенном Eclipse и консоли, с радостью разрешит нужные зависимости, например:

 jerry-mac-mini:android-app-project jerry$ mvn dependency:tree [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building android-app-project 0.0.5-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: file:///Users/jerry/adt-bundle-mac-x86_64-20130917/sdk/extras/android/m2repository/com/android/support/support-v4/19.0.1/support-v4-19.0.1.pom Downloaded: file:///Users/jerry/adt-bundle-mac-x86_64-20130917/sdk/extras/android/m2repository/com/android/support/support-v4/19.0.1/support-v4-19.0.1.pom (403 B at 28.1 KB/sec) Downloading: file:///Users/jerry/adt-bundle-mac-x86_64-20130917/sdk/extras/android/m2repository/com/android/support/support-v4/19.0.1/support-v4-19.0.1.jar Downloaded: file:///Users/jerry/adt-bundle-mac-x86_64-20130917/sdk/extras/android/m2repository/com/android/support/support-v4/19.0.1/support-v4-19.0.1.jar (621 KB at 16783.8 KB/sec) [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ android-app-project --- [INFO] team.apollo:android-app-project:apk:0.0.5-SNAPSHOT [INFO] +- com.google.android:android:jar:2.3.3:provided [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.0.1:provided [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.0.1:provided [INFO] | | \- commons-codec:commons-codec:jar:1.3:provided [INFO] | +- org.khronos:opengl-api:jar:gl1.1-android-2.1_r1:provided [INFO] | +- xerces:xmlParserAPIs:jar:2.6.2:provided [INFO] | \- org.json:json:jar:20080701:provided [INFO] +- com.android.support:support-v4:jar:19.0.1:compile [INFO] +- com.google.code.gson:gson:jar:2.2.2:compile [INFO] +- de.mindpipe.android:android-logging-log4j:jar:1.0.3:compile [INFO] \- log4j:log4j:jar:1.2.16:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.339s [INFO] Finished at: Mon Mar 24 14:32:00 CST 2014 [INFO] Final Memory: 10M/325M [INFO] ------------------------------------------------------------------------ 

Я просто столкнулся с одной и той же проблемой и закончил развертывание в публичном репозитории gitgub.

Если вам все еще нужно использовать его, вы можете сделать одно из следующего:

Добавьте repository github в раздел репозиториев в pom.xml:

  android.support-mvn-repo https://raw.github.com/kmchugh/android.support/mvn-repo  true daily   

Затем вы можете добавить зависимость следующим образом:

   uk.co.icatalyst android-support-v4 18 compile  

Или, разблокируйте repository, вы можете использовать свой собственный URL-адрес для URL-адреса репозитория.

[Изменить] Я обновил библиотеки, альтернативная зависимость:

  com.android.support support-v4 18.0.0 compile  

И для gridlayout:

  com.android.support gridlayout-v7 18.0.0 compile  

Я просто использовал функцию системной области, предоставляемую maven

  com.google.android support-v4 19.0.1 system ${env.ANDROID_HOME}/extras/android/support/v4/android-support-v4.jar  

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

Чтобы сделать это или выполните команду следующим образом:

 mvn install:install-file -DgroupId=com.google.android -Dversion=23.1.1 -Dpackaging=jar -DartifactId=support-v13 -Dfile=support-v13-23.1.1-sources.jar 

или просто скопируйте файл ./extras/android/m2repository/com/android/ в ./rootMavenRepo/com/google/android вашего репозитория.

Благодаря Google. Теперь вы можете сделать это

  • Убедитесь, что раздел репозиториев включает maven

 allprojects { repositories { jcenter() maven { url "https://maven.google.com" } } } 
  • Добавить библиотеку поддержки в раздел зависимостей

 dependencies { ... compile "com.android.support:support-core-utils:25.3.1" } 
  • Как отключить режим сдвига BottomNavigationView?
  • Как вы можете отображать перевернутый текст с текстовым просмотром в Android?
  • Mipmap drawables для значков
  • Изменение размера указателя большого пальца
  • Android WIFI Как обнаружить, когда доступно специальное WIFI-соединение
  • Google Analytics в приложении для Android - работа с несколькими действиями
  • Как получить HTML-контент из WebView (в виде строки)
  • Использование контекстного меню со списком в android
  • Разрешение на манифест не работает в Android 6
  • Как удалить приложение из недавнего списка
  • Как передавать данные между fragmentами
  • Interesting Posts

    Как настроить routeProvider и locationProvider в angularJS?

    Сжатые папки NTFS: можно ли настроить коэффициент сжатия?

    Создание Qt5 с Visual Studio 2012 / Visual Studio 2013 и интеграция с IDE

    Подключение через VPN – могут ли они видеть мои сайты в приватном режиме просмотра?

    Может ли новая батарея разрядиться, если не используется

    Строка состояния становится белой и не отображает содержимое за ней

    сценарий, чтобы получить код статуса HTTP списка URL-адресов?

    Как сделать загрузочный USB с Windows XP liveCD от linux (debian)

    Как вы отлаживаете React Native?

    Не удалось загрузить тип ‘XXX.Global’

    Моя материнская плата имеет 24-контактный разъем питания, но мой блок питания имеет только 20-контактный разъем. Будет ли он работать без адаптера?

    Используя LINQ для поиска элемента в списке, но получите «Значение не может быть нулевым. Имя параметра: источник “

    Как создать простой прокси-сервер в C #?

    Каковы значения ascii вверх по левому краю?

    Что делает домен Rails 3 session_store: все действительно?

    Давайте будем гением компьютера.