バスくる開発環境あれこれ其の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新機能のラムダ式を使用する場合は、 と
<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
まあ〜、ラムダ式は使わないから以前のままでイイや。
とりあえずビルド修正は完了したので、週末テストしてリリースしよう!!