前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Eclipseでgoogle-play-services_libを使いつつEclipseとMaven双方からapkビルドを可能にする

GoogleからGoogle Play Servicesが提供され、Eclipseからインポートしてapklibとして使えば
簡単にGoogleMapなどの機能が利用できるようになった。

がしかし、Mavenでビルドする際には別途依存関係を記述する必要があり、
maven-android-sdk-deployerのサイトには下記のようにせよと書いてある。

<dependency>
  <groupId>com.google.android.gms</groupId>
  <artifactId>google-play-services</artifactId>
  <version>7</version>
  <type>apklib</type>
</dependency>
<dependency>
  <groupId>com.google.android.gms</groupId>
  <artifactId>google-play-services</artifactId>
  <version>7</version>
  <type>jar</type>
</dependency>

Mavenだけならこれでいいんだけど、Eclipseからビルドしようとすると
jarが重複してエラーになる。そこで、上記の設定からjarの定義だけを
取り除き、Mavenビルド専用のプロファイルに依存関係を移動する。

<profile>
<!-- デフォルトはlocal -->
	<id>local</id>
        <activation>
	    <activeByDefault>true</activeByDefault>
	</activation>
	<properties>
		<overrideResourceName>local</overrideResourceName>
		<signDebug>true</signDebug>
	</properties>
</profile>
<profile>
	<id>release</id>
	<properties>
		<overrideResourceName>release</overrideResourceName>
		<signDebug>true</signDebug>
	</properties>
	<dependencies>
		<dependency>
			<groupId>com.google.android.gms</groupId>
			<artifactId>google-play-services</artifactId>
			<version>7</version>
			<type>jar</type>
		</dependency>
	</dependencies>
</profile>

ということでMavenはリリース用ビルドのみ行うこととし、-Pでプロファイル名を付けてあげればOK

//コマンドは適当
mvn package -P release