結論
.travis.yml
は最終的にこのようになりました。
記憶が残っている内になぜこの様に変更になったか、備忘録として残します。
どなたかのお役にたてれば幸いです。
language: java
sudo: false
env:
global:
- GRADLE_OPTS="-Xmx512m -XX:MaxPermSize=512m"
- ADB_INSTALL_TIMEOUT=10
jdk:
- oraclejdk7
script:
- ./gradlew test
language: android
android:
sudo: false
components:
- tools
- platform-tools
- build-tools-23.0.2
- android-23
- extra
- extra-android-m2repository
install:
- android-update-sdk --accept-licenses='android-sdk-license-.+' --components=tools
- android-update-sdk --accept-licenses='android-sdk-license-.+' --components=build-tools-23.0.2
- android-update-sdk --accept-licenses='android-sdk-license-.+' --components=android-23
- android-update-sdk --accept-licenses='android-sdk-license-.+' --components=extra-android-m2repository
- android-update-sdk --accept-licenses='android-sdk-license-.+' --components=extra-google-m2repository
env:
global:
- GRADLE_OPTS="-Xmx512m -XX:MaxPermSize=512m"
- ADB_INSTALL_TIMEOUT=10
jdk:
- oraclejdk7
script:
- ./gradlew test
cache:
directories:
- $HOME/.m2
- $HOME/.gradle
では、ここに行き着くまでの課程を順を追って記していきます。
そもそもこの .travis.yml
が正しいのかも不明。
環境
Android Studio 2.1.3
Android 23.0.2
kotlin 1.0.1-2
あらすじ
そもそも、下記の様なエラーが発生していてCIが壊れていた。
* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.application']
> Minimum supported Gradle version is 2.14.1. Current version is 2.10. If using the gradle wrapper, try editing the distributionUrl in /home/travis/build/IsaoCorp/goalous_app_android/gradle/wrapper/gradle-wrapper.properties to gradle-2.14.1-all.zip
CIが壊れる前後でgradleのバージョン関連のコミットが見つからず、幸先が不安な所からのスタート。プロジェクトからそれっぽいファイルを見つけてコミットしてみました。
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
これでなんとか該当箇所は抜けたものの、別のエラーに遭遇しました。
* What went wrong:
A problem occurred evaluating project ':app'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
ここでThe SDK directory does not exist Travis CIを参考に .travis.yml
を書き換えてみます。
language: android
sudo: false
env:
global:
- GRADLE_OPTS="-Xmx512m -XX:MaxPermSize=512m"
- ADB_INSTALL_TIMEOUT=10
jdk:
- oraclejdk7
script:
- ./gradlew test
install:
- true
- chmod +x ./gradlew; ls -l gradlew; ./gradlew wrapper -v
android:
components:
# Uncomment the lines below if you want to
# use the latest revision of Android SDK Tools
# - platform-tools
# - tools
# The BuildTools version used by your project
- build-tools-23.0.3
# The SDK version used to compile your project
- android-23
ANDROID_HOME
のエラーは解消されました。
* What went wrong:
A problem occurred configuring project ':app'.
> failed to find target with hash string 'android-23' in: /usr/local/android-sdk
しかし、エラーの場所が変わったので、次の様に下記を削除。
- android:
-
- components:
- # Uncomment the lines below if you want to
- # # use the latest revision of Android SDK Tools
- # - platform-tools
- # - tools
-
- # The BuildTools version used by your project
- - build-tools-23.0.3
-
- # The SDK version used to compile your project
- - android-23
ちょっと削除してみる。
0.00s$ build-tools-23.0.1
/home/travis/build.sh: line 45: build-tools-23.0.1: command not found
またエラー箇所が変わった。
だんだん辛みが増してくる。
```.travis.yml
+ # The BuildTools version used by your project
+ - build-tools-23.0.1
+
+ # The SDK version used to compile your project
+ - android-23
これではどうか。
* What went wrong:
A problem occurred configuring project ':app'.
> failed to find target with hash string 'android-23' in: /usr/local/android-sdk
ひとつ前のエラーの戻った。まぁ当然といえばそうだけれども。
今度は、'android-23'が見つからないという事でここを参考に以下の様に修正
install:
.
.
+ - android-update-sdk --accept-licenses='android-sdk-license-.+' --components=tools
+ - android-update-sdk --accept-licenses='android-sdk-license-.+' --components=build-tools-23.0.2
+ - android-update-sdk --accept-licenses='android-sdk-license-.+' --components=android-23
上記ブログでは、
Travis CIの場合はlanguageをandroidにしておけば、
toolsをアップデート対象に含めておくだけで良さそう。
(参考: https://github.com/travis-ci/travis-ci/issues/5036)
とありますが、自分のTravisだと解決しませんでした。
ともあれ該当のエラーは解消されたのですが、また以下のエラーが新しく発生しました。
* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_stgDebugCompile'.
> Could not find com.android.support:appcompat-v7:23.4.0.
.
> Could not find com.android.support:design:23.4.0.
.
> Could not find com.google.android.gms:play-services-gcm:8.4.0.
.
> Could not find com.google.android.gms:play-services-appindexing:8.4.0.
.
> Could not find com.android.support:support-v4:23.4.0.
.
こちらも、ここを参考に、下記の様に修正。
install:
.
.
+ - android-update-sdk --accept-licenses='android-sdk-license-.+' --components=extra-android-m2repository
+ - android-update-sdk --accept-licenses='android-sdk-license-.+' --components=extra-google-m2repository
上記のエラーは無くなりましたが、今度は次の様なエラーになりました。
* What went wrong:
Execution failed for task ':app:lint'.
> Lint found errors in the project; aborting build.
今度はAndroidのLintでエラーがでています。こちらを参考に修正。
+ lintOptions {
+ abortOnError false
+ }
ここまでやってようやくビルドが通りました👏👏👏
かなり煩雑になってしまったので、エラーの一覧をまとめていければと思います。
最後に
AndroidのCIの知識が皆無の状態から、Buildを通すところまでなんとかたどり着く事ができました。
今後は、テストの実行・Robolectric・Espressoあたりを触ってみたいと思います。
ご指摘などあれば、よろしくお願いします🙏
謝辞
https://googledevjp.blogspot.jp/2014/11/appcompat-v21-lollipop.html
Error:Cause: com.android.sdklib.repository.FullRevision - Stackoverflow
Android: Could not find com.android.support:support-v4:23.2.1 - Stackoverflow
https://github.com/mrmans0n/smart-location-lib/commit/2b873cb7fde647085ed67a490a189267ede7f1d4
Failed to find Build Tools revision 23.0.2 · Issue #5036 · travis-ci/travis-ci · GitHub
Travis CI for Android - Build Error: Failed to find target & Could not find dependencies
failed to find target with hash string 'android-22' - Stackoverflow
Gradle, Android and the ANDROID_HOME SDK location - Stackoverflow
Android studio - Failed to find target android-18 - Stackoverflow