@neiraza

2匹の怪獣が寝た後にプログラマーしてる、最近はサイバーエージェントでゼミ長もしてる僕のネタ帳

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

これでここはクリアした。