Windows 7
Eclipse Juno 4.3
※Android Development Tools for Eclipse と Android for Maven Eclipse プラグインのインストールも必要です
Android Development Tools(ADT)20130514
※事前にeclipseおよびADTのインストールは完了しているものとします
Eclipse Juno 4.3
※Android Development Tools for Eclipse と Android for Maven Eclipse プラグインのインストールも必要です
Android Development Tools(ADT)20130514
※事前にeclipseおよびADTのインストールは完了しているものとします
■手順
1. JDK1.6のインストール
2. maven3.1.1のインストール
3. ANDROID_HOMEの確認
4. mavenプロジェクトへのコンバート
5. pom.xmlの編集
6. ソースコードおよびリソースファイル(プロパティファイル)の確認
7. ローカルリポジトリへjarの登録
8. apkファイルの作成
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
からJDK1.6の最新版のupdateをダウンロードします
ダウンロードにはOracleのアカウントが必要になりますのでない場合は作成してください
2014/02/19時点での1.6の最新は「update 65」でした
.exeファイルをダウンロードしインストールしたらeclipse上にJDKを登録します
からJDK1.6の最新版のupdateをダウンロードします
ダウンロードにはOracleのアカウントが必要になりますのでない場合は作成してください
2014/02/19時点での1.6の最新は「update 65」でした
.exeファイルをダウンロードしインストールしたらeclipse上にJDKを登録します
Window -> Preferences -> Java -> Installed JREsから設定します
2. maven3.1.1のインストール
http://maven.apache.org/download.cgi
から3.1.1以上のmavenをダウンロードします
zipファイルを展開後、適当な場所に配置すればインストール完了です
インストール完了後はeclipseにmaven3.1.1を登録してあげます
から3.1.1以上のmavenをダウンロードします
zipファイルを展開後、適当な場所に配置すればインストール完了です
インストール完了後はeclipseにmaven3.1.1を登録してあげます
Windows -> Preferences -> Maven -> Installations -> Addから配置したパスを選択すれば完了です
3. ANDROID_HOMEの確認
環境変数にANDROID_HOMEが設定されているか確認してください
設定がない場合は環境変数の追加を実施してください
※Macの場合は.bash_profileにANDROID_HOMEの設定を記載してください
設定がない場合は環境変数の追加を実施してください
コントロールパネル -> システムとセキュリティ -> システム -> システムの詳細設定 -> 環境変数 -> 新規※ユーザー環境変数に追加してください
※Macの場合は.bash_profileにANDROID_HOMEの設定を記載してください
4. mavenプロジェクトへのコンバート
eclipseからAndroidプロジェクトをmavenプロジェクトにコンバートします
おそらくJDKのエラーがでるのでプロジェクトに設定されているJavaをインストールしたJDK1.6に変更します
プロジェクトを右クリック -> Configure -> Convert to Maven Projectmavenプロジェクトに変更するとプロジェクトの再ビルドが走ります
おそらくJDKのエラーがでるのでプロジェクトに設定されているJavaをインストールしたJDK1.6に変更します
プロジェクトを右クリック -> Build Path -> Configure Build Pathでデフォルトで設定されているJRE1.5を選択しEditからインストールしたJDK1.6に変更します
5. pom.xmlの編集
以下はサンプルとなります
ポイントとなる部分を説明します
まず<plugins>タグを使って本題のmaven-android-pluginを有効にします
<version>タグに設定する値は最新のプラグインのバージョンを入力するようにしてください
<platform>タグにはAndroid SDK ManagerでインストールしてあるSDKのバージョンを入力してください、ここも最新のバージョンを入れておけば問題ないです
次に<packaging>タグをjarからapkに変更します
apkの指定はmaven-android-pluginをpom.xmlに定義していないとエラーとなります
3つ目にAndroidのコンパイルに必要なライブラリを定義します
<groupId>com.google.android</groupId>
のgroupIdに属するライブラリ2つを追加します
なおpom.xmlのdependencyでmavenのセントラルリポジトリからjarをダウンロードできる場合はローカル側のjarファイルは削除して問題ないです
後述しますがmavenのセントラルリポジトリに存在しないjarファイルはそのまま残しておいてください、あとでローカルのmavenリポジトリに登録します
(なので上記pom.xmlを記載しても現段階ではローカルリポジトリにjarが登録されていないのでエラーになるかと思います)
ポイントとなる部分を説明します
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>android_ncmb_sample</artifactId> <version>1.0</version> <packaging>apk</packaging> <name>android_ncmb_sample</name> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r7</version> </dependency> <dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>3.0.5</version> </dependency> <dependency> <groupId>local.lib1</groupId> <artifactId>gcm</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>local.lib2</groupId> <artifactId>NCMB</artifactId> <version>1.2.0</version> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src/resource</directory> </resource> </resources> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.8.2</version> <configuration> <sdk> <path>${env.ANDROID_HOME}</path> <platform>19</platform> </sdk> </configuration> <extensions>true</extensions> </plugin> </plugins> </build> </project>
まず<plugins>タグを使って本題のmaven-android-pluginを有効にします
<version>タグに設定する値は最新のプラグインのバージョンを入力するようにしてください
<platform>タグにはAndroid SDK ManagerでインストールしてあるSDKのバージョンを入力してください、ここも最新のバージョンを入れておけば問題ないです
次に<packaging>タグをjarからapkに変更します
apkの指定はmaven-android-pluginをpom.xmlに定義していないとエラーとなります
3つ目にAndroidのコンパイルに必要なライブラリを定義します
<groupId>com.google.android</groupId>
のgroupIdに属するライブラリ2つを追加します
なおpom.xmlのdependencyでmavenのセントラルリポジトリからjarをダウンロードできる場合はローカル側のjarファイルは削除して問題ないです
後述しますがmavenのセントラルリポジトリに存在しないjarファイルはそのまま残しておいてください、あとでローカルのmavenリポジトリに登録します
(なので上記pom.xmlを記載しても現段階ではローカルリポジトリにjarが登録されていないのでエラーになるかと思います)
6. ソースコードおよびリソースファイル(プロパティファイル)の確認
同じくpom.xmlの説明になりますがソースコードおよびリソースファイルが存在するパスを<sourceDirectory>および<resources> -> <resource> -> <directory>でちゃんと定義してください
mavenのデフォルト設定の場合、ソースコードは「src/main/java」でリソースファイルは「src/main/resources」となります
今回は既存のAndroidプロジェクトからmavenプロジェクトへコンバートしているのでディレクトリが掘られていません
なのでpom.xmlでデフォルトとは違うソースのパスを指定してあげる必要があります
(src/main/javaとsrc/main/resourcesを作成してそれぞれにソースとリソースファイルを移動して対応しても問題ないとは思います(未検証))
mavenのデフォルト設定の場合、ソースコードは「src/main/java」でリソースファイルは「src/main/resources」となります
今回は既存のAndroidプロジェクトからmavenプロジェクトへコンバートしているのでディレクトリが掘られていません
なのでpom.xmlでデフォルトとは違うソースのパスを指定してあげる必要があります
(src/main/javaとsrc/main/resourcesを作成してそれぞれにソースとリソースファイルを移動して対応しても問題ないとは思います(未検証))
7. ローカルリポジトリへjarの登録
mavenのセントラルリポジトリに存在しないjarファイルをローカルのリポジトリに登録します
実はmaven-android-pluginではscopeにsystemを利用することができないらしく、ダウンロードできないjarはローカルに登録してから参照する必要があります
http://code.google.com/p/maven-android-plugin/issues/detail?id=422
ローカルリポジトリへのjar登録はmavenコマンドかeclipseから実施する必要があります
mavenコマンドの場合はpom.xmlが配置しているパスで以下のコマンドを実行してください
eclipseから実施する場合は
この作業は使用するjarの数だけパラメータを変更して実施する必要があります
ただ、ビルド時に毎回実施する必要はなく、一度登録すれば再度ローカルのリポジトリに登録する必要はありません
ローカルのリポジトリに登録完了後も念のためjarファイルはプロジェクト内に残しておきましょう
実はmaven-android-pluginではscopeにsystemを利用することができないらしく、ダウンロードできないjarはローカルに登録してから参照する必要があります
http://code.google.com/p/maven-android-plugin/issues/detail?id=422
ローカルリポジトリへのjar登録はmavenコマンドかeclipseから実施する必要があります
mavenコマンドの場合はpom.xmlが配置しているパスで以下のコマンドを実行してください
mvn install:install-file -Dfile=libs/gcm.jar -DgroupId=local.lib1 -DartifactId=gcm -Dversion=1.0.2 -Dpackaging=jar
eclipseから実施する場合は
Run Configurations -> Maven Build -> NewでBase directoryにプロジェクトを選択したあとGoalsに「install:install-file」を設定しkey-valuesでパラメータを追加できるのでAddから以下のパラメータをそれぞれ追加します
- file -> libs/gcm.jar
- groupId -> local.lib.1
- artifactId -> gcm
- version -> 1.0.2
- packaging -> jar
この作業は使用するjarの数だけパラメータを変更して実施する必要があります
ただ、ビルド時に毎回実施する必要はなく、一度登録すれば再度ローカルのリポジトリに登録する必要はありません
ローカルのリポジトリに登録完了後も念のためjarファイルはプロジェクト内に残しておきましょう
8. apkファイルの作成
ようやくここまで来ました。。。
あとはgoalsに「clean install」を指定してmavenビルドすれば完了です
失敗する場合はeclipseに設定されているJavaやmavenのバージョンを再度確認してください
あとはTipsにトラブルシューティング的なことも記載しているのでそちらも御覧ください
あとはgoalsに「clean install」を指定してmavenビルドすれば完了です
失敗する場合はeclipseに設定されているJavaやmavenのバージョンを再度確認してください
あとはTipsにトラブルシューティング的なことも記載しているのでそちらも御覧ください
以上で設定は完了です
今回は既存のandroidプロジェクトをmaven化しましたが、m2e-androidなるプラグインもあるようで、それのquickstartを使う方法もあるようです
全体的に結構大変でした。。。特にscopeにsystemが使えないのはハマりました
■Tips
・dex2jar
作成されたapkファイル内にclasses.dexというバイナリファイルがあります
これがAndroid上で動作するために必要なファイルなのですが、逆コンパイルしてJavaのソースコードを確認することができます
dex2jarがそのためのツールでdexふぁいるからjarファイルにファイル形式をコンバートしてくれます
.apkファイルはただのアーカイブファイルなので解凍したあとにclasses.dexに対してツールを実行すればOKです
http://code.google.com/p/dex2jar/downloads/list
・Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.2:generate-sources (execution: default-generate-sources, phase: generate-sources)
上記がエラーに対してはeclipseの場合はQuickFixから修正すればOKです、QuickFixの上から2番目のやつを選択すればOKです
・No Android SDK path could be found.
Android SDKへのパスがうまく通っていません
ANDROID_HOMEを設定しましたが、その環境変数をeclipseがうまく認識していない可能性があります
システムを再起動してみたり、Macの場合はlaunchctlから環境変数を再度設定してからeclipseを起動してください
作成されたapkファイル内にclasses.dexというバイナリファイルがあります
これがAndroid上で動作するために必要なファイルなのですが、逆コンパイルしてJavaのソースコードを確認することができます
dex2jarがそのためのツールでdexふぁいるからjarファイルにファイル形式をコンバートしてくれます
.apkファイルはただのアーカイブファイルなので解凍したあとにclasses.dexに対してツールを実行すればOKです
http://code.google.com/p/dex2jar/downloads/list
・Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.2:generate-sources (execution: default-generate-sources, phase: generate-sources)
上記がエラーに対してはeclipseの場合はQuickFixから修正すればOKです、QuickFixの上から2番目のやつを選択すればOKです
Mark goal generate-sources as ignored in Eclipse build on Eclipse preferences (experimental)
・No Android SDK path could be found.
Android SDKへのパスがうまく通っていません
ANDROID_HOMEを設定しましたが、その環境変数をeclipseがうまく認識していない可能性があります
システムを再起動してみたり、Macの場合はlaunchctlから環境変数を再度設定してからeclipseを起動してください
0 件のコメント:
コメントを投稿