Android開発をMavenでやってるから、Jenkinsさんの力も借りようぜ
android-maven-plugin 3.0.0を使いながら、
現在、Android開発をやってます。
んでJenkinsさんに乗せたところ、エラーが色々と続き、なかなか進まず。
そのエラーってのも、何かしらの設定ミスとかばっかり。
最初、64bitサーバー上でやってたら、
32bitのこのモジュールが必要だとか何とか言われたりと、頭がクラクラ。
今日、解決したのはこんなエラー。
[ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.0.0-alpha-14 略 Please provide a proper Android SDK directory path as configuration parameter <sdk><path>...</path></sdk> in the plugin <configuration/>. 略
環境変数は設定してあるので、じゃあ、pom.xmlの該当pluginとこにpathを設定しみたりと、色々。
だめだ、僕はダメな子だ。ここで躓いていたら、開発が前に進まない。
希望を失いかけたころ、Mavenのローカルリポジトリに、android.jarをつっこめと。
そんな情報を見つけた。さらに何人かは、このツールをgithubから落とせば、自動でやってやるぜとか。
pomにpathを書いてあるなら、消しとけよとか。
そもそも何でローカルとかに突っ込む必要があるんだ?
環境変数先にsdkあるんだし、pomにも必要なver書いてあるし、何でそんなことを。
なんか腑に落ちないし理由も分からないけど、下記の場所にインストールしてみた。
どっか/.m2/repository
んでこいつをドーン
mvn install:install-file -Dfile=$ANDROID_HOME/platforms/android-10/android.jar -DgeneratePom=true -DgroupId=android -DartifactId=android -Dversion=2.3.3 -Dpackaging=jar
結論からいうと、これでパスが解決し、ビルドが成功して万事解決した。
これでいいのか?
追記 12/05
やっぱ、mvn installを手動でやる必要はない気がして、会社の環境も対応してみた。
結論としては、こっちが原因でエラーが出ていたんだと思う。
今まで、pom.xmlでSDKのpathを明示的に記載していなかった。
そこで直書きに変えてみたら、うまくいった。
しかし、環境変数だとうまくいかない。
<plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.0.0-alpha-14</version> <configuration> <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> <assetsDirectory>${project.basedir}/assets</assetsDirectory> <resourceDirectory>${project.basedir}/res</resourceDirectory> <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> <sdk> <path>${env.ANDROID_HOME}</path> <!-- <path>/usr/android/android-sdk-linux</path> --></b></span> <platform>9</platform> </sdk> <undeployBeforeDeploy>true</undeployBeforeDeploy> </configuration> </plugin>
考えたら、ユーザーはjenkinsなので環境変数も糞もないか。
jenkinsの管理->システム設定->Global properties->環境変数
こいつに、自分の環境に基づいて設定。
キー:ANDROID_HOME
値:/usr/android/android-sdk-linux
これでここはクリアした。