2013-08-22 5 views
24

私はAndroidにはまったく新しいものです。Androidサポートライブラリセットアップ(メーベック)

Googleサポートライブラリ(v4、v7、v13)を使用するアンドロイドアプリケーション用のmavenモジュール(既存のマルチモジュールプロジェクト内にあります)を設定しています。 Mavenで動作させる最も適切な方法は何ですか?

Jenkins(Maven)でプロジェクトをビルドできるようにしたいので、IDE固有のプロジェクトや非Maven依存関係をリンクすることはできません。

ジェンキンスでmaven/gradleを組み合わせるオプションも使用できます。

答えて

12

残念ながら、それらのライブラリは中央のリポジトリにありません。ライブラリをMavenリポジトリにインストールするには、maven-android-sdk-deployer(link)を使用する必要があります。 readmeの説明に従って、必要なライブラリをpom.xmlファイルに追加します。

+2

私はこれを追加しなければなりません。これは、Googleがアンドロイドライブラリとサポート-v4 lib on maven repoを更新しないことを非常に面倒です。 Googleは、MavenとEclipseのMavenプラグインがandroid devに適合していないと考えていますか? –

+0

正常に動作し、私も確認します。ありがとう。 – inteloid

10

私はちょうど同じ問題に遭遇し、公開gitgubリポジトリにデプロイしました。

あなたはまだそれを使用する必要がある場合は、次のいずれかを行うことができます

あなたのpom.xml内のリポジトリセクションにgithubのリポジトリを追加します。

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

gridlayout-v7もアップロードしていますが、プロジェクトに追加する方法が見つかりません。私が使用すべき依存関係を投稿してもらえますか? – mariosangiorgio

+1

@mariosangiorgio、私はあなたのコメントを反映するために答えを更新しました。 – kmchugh12

+0

生githubのURLは、はるかに良いその後、@bsorrentino – Stephane

54

maven-android-sdk-deployerのほかに、あなたは常にAndroidのSDKを持っている場合あなたのプロジェクトのPOMファイルにローカルリポジトリを定義して、ローカルのリポジトリから依存関係をダウンロードさせることができます。

これは、Googleがすでに追加のアドオンをmavenリポジトリと互換性のあるディレクトリレイアウトでリリースしていることを裏付けるものです。だから、私はちょうどこのように私のPOMファイル内のいくつかの余分な行を配置する必要があり、そして「env.ANDROID_HOMEは、」環境変数は、Android SDKのインストールを指摘している

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

:自分のマシンの場合、それはこのようなものですパス。こうした工程を経た後

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

、私のADTでMavenはこのように、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] ------------------------------------------------------------------------ 
+0

あなたの先生によって与えられた例を使用して、AndroidのSDK Managerを使用して、サポートリポジトリがインストールされていることを確認するために、リポジトリは今アンドロイドのツールに同梱されている400 – Vidhi

+0

これは完璧です。でも、私はappcompat-v7で成功を再現するようには思えません。 – twig

+1

パーフェクトな答え! –

10

私は単にシステムスコープを使用しました機能によって提供される

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

これはトップの回答でなければなりません – RusAlex

+0

私は、指定された名前 'Theme.AppCompat.Light.NoActionBar'と一致するNoリソースが見つかりました。私はpom.xmlファイルに以下のシステムパスを持つ3つの依存関係を持っています$ {env.ANDROID_HOME} /extras/android/support/design/libs/android-support-design.jar $ {env.ANDROID_HOME}/extras/android /support/v7/appcompat/libs/android-support-v7-appcompat.jar $ {env.ANDROID_HOME} /extras/android/support/v4/android-support-v4.jar – Stephane

+0

SystemPathが正しいと思われる場合は、その回答を確認してください[ここをクリック](http://stackoverflow.com/questions/17870881/cant-find-theme-appcompat-light-for-new-android-actionbar-support) – bsorrentino

2

私はあなたの一部としてAndroidのアーティファクトを保つことをお勧めします主要な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 

またはちょうどあなたのリポジトリの./rootMavenRepo/com/google/androidに./extras/android/m2repository/com/android/コピーします。これを行うか、このようなコマンドを実行するには

2

Googleに感謝します。


あなたは今、この

  • リポジトリのセクションでは、Mavenの

allprojects { 
    repositories { 
     jcenter() 
     maven { 
      url "https://maven.google.com" 
     } 
    } 
} 
  • が含まれていることを確認してくださいは、依存関係のセクションにサポートライブラリを追加しないことができます
    dependencies { 
        ... 
        compile "com.android.support:support-core-utils:25.3.1" 
    } 
    
関連する問題