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

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

Я как бы новичок в Android.

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Помимо maven-android-sdk-deployer, если у вас всегда установлен Android SDK с такими дополнениями Google, как я, вы можете определить локальный репозиторий в своих проектах 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.

<repositories>
    <repository>
        <id>android-support</id>
        <url>file://${env.ANDROID_HOME}/extras/android/m2repository</url>
    </repository>
</repositories>
    ......
<dependency>
    <groupId>com.android.support</groupId>
    <artifactId>support-v4</artifactId>
    <version>19.0.1</version>
</dependency>

После этих шагов 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] ------------------------------------------------------------------------

Ответ 3

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

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

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

<repository>
  <id>android.support-mvn-repo</id>
  <url>https://raw.github.com/kmchugh/android.support/mvn-repo</url>
  <snapshots>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
  </snapshots>
</repository>

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

<!-- Android Support Libraries -->
<dependency>
  <groupId>uk.co.icatalyst</groupId>
  <artifactId>android-support-v4</artifactId>
  <version>18</version>
  <scope>compile</scope>
</dependency>

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

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

<dependency>
  <groupId>com.android.support</groupId>
  <artifactId>support-v4</artifactId>
  <version>18.0.0</version>
  <scope>compile</scope>
</dependency>

И для gridlayout:

<dependency>
  <groupId>com.android.support</groupId>
  <artifactId>gridlayout-v7</artifactId>
  <version>18.0.0</version>
  <scope>compile</scope>
</dependency>

Ответ 4

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

<dependency>
   <groupId>com.google.android</groupId>
   <artifactId>support-v4</artifactId>
   <version>19.0.1</version>
   <scope>system</scope>
   <systemPath>${env.ANDROID_HOME}/extras/android/support/v4/android-support-v4.jar</systemPath>
</dependency>

Ответ 5

Я бы порекомендовал держать 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 вашего репозитория.

Ответ 6

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

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

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

dependencies {
    ...
    compile "com.android.support:support-core-utils:25.3.1"
}