バスくる開発環境あれこれ其の4

「バスくる for 東急」のOrmLite対応は完了し、引き続きビルド修正の為、pom.xml を修正した。

まずは、修正せずビルドしてエラー

[exec] Caused by: java.lang.ClassNotFoundException: org.eclipse.aether.spi.connector.Transfer$State
[exec] 	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
[exec] 	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
[exec] 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
[exec] 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)


android-maven-pluginを最新すれば良いという記事を見つけたので修正してみた。

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.8.2</version>
</plugin>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<plugin>
    <groupId>com.simpligility.maven.plugins</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>4.1.1</version>
</plugin>

で、ビルドするとエラー

[exec] [ERROR] Failed to execute goal com.simpligility.maven.plugins:android-maven-plugin:4.1.1:generate-sources (default-generate-sources) on project buskuru:
[exec] [ERROR] 
[exec] [ERROR] Found files or folders in non-standard locations in the project!
[exec] [ERROR] ....This might be a side-effect of a migration to Android Maven Plugin 4+.
[exec] [ERROR] ....Please observe the warnings for specific files and folders above.
[exec] [ERROR] ....Ideally you should restructure your project.
[exec] [ERROR] ....Alternatively add explicit configuration overrides for files or folders.
[exec] [ERROR] ....Finally you could set failOnNonStandardStructure to false, potentially resulting in other failures.


android-maven-plugin4.x系はダメっぽいので、3.x系の最新にしてみた。

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.9.0-rc.3</version>
</plugin>

で、ビルドするとエラー

[exec] [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (zipalign) on project buskuru: Command execution failed. Cannot run program "C:\Android\android-sdk\tools\zipalign" (in directory "C:\Work\dev\Java\buskuru\buskuru-android-tokyu\buskuru-android-tokyu"): CreateProcess error=2, 指定されたファイルが見つかりません。 -> [Help 1]


zipalign.exeのパスが変わってた。
ついでに、プラグインのバージョンも上げた。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.4.0</version>
</plugin>

<configuration>
    <executable>${ANDROID_HOME}/build-tools/22.0.1/zipalign</executable>
    <arguments>
        <argument>-f</argument>
        <argument>-v</argument>
        <argument>4</argument>
        <argument>target/${project.build.finalName}.apk</argument>
        <argument>target/${project.build.finalName}-zipped.apk</argument>
    </arguments>
</configuration>

で、ビルドしたら通った!

     [exec] [INFO] ------------------------------------------------------------------------
     [exec] [INFO] BUILD SUCCESS
     [exec] [INFO] ------------------------------------------------------------------------


尚、Java8新機能のラムダ式を使用する場合は、〜 と を 1.8 にするらしい。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

で、ビルドしたらエラー

[exec] [INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[exec] [INFO] com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
[exec] [INFO] 	at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
[exec] [INFO] 	at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
[exec] [INFO] 	at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
[exec] [INFO] 	at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.processClass(Main.java:704)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[exec] [INFO] 	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[exec] [INFO] 	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.run(Main.java:246)
[exec] [INFO] 	at com.android.dx.command.dexer.Main.main(Main.java:215)
[exec] [INFO] 	at com.android.dx.command.Main.main(Main.java:106)
[exec] [INFO] ...while parsing org/buskuru/tokyu/util/StringUtil.class


まあ〜、ラムダ式は使わないから以前のままでイイや。

とりあえずビルド修正は完了したので、週末テストしてリリースしよう!!