どうも中田です。
環境をいろいろとupdateしたら $ionic build android
が通らなくなった!
ということでその解決までの道のりです。
第1のエラー
$ ionic build android Error during processing of action! Attempting to revert... Error: Uh oh! Invalid Version: undefined
どうやら調子に乗ってupdateしてたのが原因だったようです。
cordova cliのバージョンを確認しよう
$ ionic info Your system information: Cordova CLI: 5.4.1 Gulp version: CLI version 3.9.0 Gulp local: Local version 3.9.0 Ionic Version: 1.0.1 Ionic CLI Version: 1.7.12 Ionic App Lib Version: 0.6.5 ios-deploy version: Not installed ios-sim version: 3.1.1 OS: Mac OS X El Capitan Node Version: v0.12.0 Xcode version: Xcode 7.2 Build version 7C68
cordova cliのバージョンを落とそう!
npm install -g cordova@5.4.0
わちゃわちゃとインストールされて…
再確認
$ ionic info Your system information: Cordova CLI: 5.4.0 Gulp version: CLI version 3.9.0 Gulp local: Local version 3.9.0 Ionic Version: 1.0.1 Ionic CLI Version: 1.7.12 Ionic App Lib Version: 0.6.5 ios-deploy version: Not installed ios-sim version: 3.1.1 OS: Mac OS X El Capitan Node Version: v0.12.0 Xcode version: Xcode 7.2 Build version 7C68
では気を取り直して…
$ ionic build android
第2のエラー
/Users/user/git/project/platforms/android/src/com/plugin/gcm/GCMIntentService.java:13: エラー: パッケージandroid.support.v4.appは存在しません import android.support.v4.app.NotificationCompat; ^ /Users/user/git/project/platforms/android/build/intermediates/exploded-aar/com.google.android.gms/play-services-analytics/8.4.0/classes.jar(com/google/android/gms/analytics/GoogleAnalytics.class): 警告: タイプ'RequiresPermission'内に注釈メソッド'allOf()'が見つかりません: android.support.annotation.RequiresPermissionのクラス・ファイルが見つかりません /Users/user/git/project/platforms/android/src/com/plugin/gcm/GCMIntentService.java:101: エラー: パッケージNotificationCompatは存在しません NotificationCompat.Builder mBuilder = ^ /Users/user/git/project/platforms/android/src/com/plugin/gcm/GCMIntentService.java:102: エラー: パッケージNotificationCompatは存在しません new NotificationCompat.Builder(context) ^ 注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。 注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。 エラー3個 警告1個 FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileArmv7DebugJava'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 4.554 secs /Users/user/git/project/platforms/android/cordova/node_modules/q/q.js:126 throw e; ^ Error code 1 for command: /Users/user/git/project/platforms/android/gradlew with args: cdvBuildDebug,-b,/Users/user/git/project/platforms/android/build.gradle,-Dorg.gradle.daemon=true ERROR building one of the platforms: Error: /Users/user/git/project/platforms/android/cordova/build: Command failed with exit code 1 You may not have the required environment or OS to build this project Error: /Users/user/git/project/platforms/android/cordova/build: Command failed with exit code 1
android.support.v4.appがないようです
package android.support.v4.app does not exist
ここによるとライブラリをコピーしちゃえとあったのでコピー!んでplatform配下に持ってきました。
cp -p $ANDROID_HOME/extras/android/support/v4/android-support-v4.jar ${project}/platforms/android/libs/
気を取り直して(part2)
$ ionic build android ... ... なんだかんだで... ... ... :preDexX86Debug :dexX86Debug :processX86DebugJavaRes UP-TO-DATE :packageX86Debug :zipalignX86Debug :assembleX86Debug :assembleDebug :cdvBuildDebug BUILD SUCCESSFUL Total time: 51.328 secs Built the following apk(s):
Yeah!!!
学んだこと「新しけりゃいいってもんじゃない!」
補足
target=android-22 android.library.reference.1=CordovaLib cordova.system.library.1=com.android.support:support-v4:+ cordova.system.library.2=com.android.support:support-v4:+ cordova.system.library.3=com.android.support:support-v4:+ cordova.system.library.4=com.google.android.gms:play-services-analytics:+ cordova.system.library.5=com.google.android.gms:play-services-analytics:+ cordova.system.library.6=com.google.android.gms:play-services-analytics:+ cordova.gradle.include.1=cordova-plugin-crosswalk-webview/xxxx-xwalk.gradle今回なかったやつは、play-services-analyticsが使ってるんかなぁ。
余力のある時に調べてみましょうかね