Android支持库与Maven的设置

我对Android很陌生。

我正在为Android应用程序(它在一个现有的多模块项目中)设置一个maven模块,该模块使用Google支持库(v4,v7,v13)。 使用maven工作的最合适的方法是什么?

我希望我的项目能够与Jenkins(Maven)一起构build,所以我不能链接任何IDE特定的项目或任何非Maven依赖的方式。

在jenkins任何组合maven / gradle的选项也是可以接受的。

不幸的是这些库不在中央Maven仓库中。 所以你必须使用maven-android-sdk-deployer( 链接 )将库安装到你的Maven仓库中。 然后将所需的库添加到您的pom.xml文件中,如自述文件中所述。

除了maven-android-sdk-deployer之外 ,如果你总是安装Android SDK,像我这样的Google extras,你可以在你的项目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安装path的环境variables。

 <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] ------------------------------------------------------------------------ 

我刚刚遇到了同样的问题,最终在公共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> 

或者,分叉存储库,然后可以使用自己的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> 

我只使用了maven提供的系统范围function

 <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> 

我会build议保持Android artefacts作为您的主要MAVEN存储库的一部分。 使用这种方法,你将避免额外的configuration,因此任何mishmashes。 然后,您将可以使用简单的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" }