LoginSignup
6
4

More than 5 years have passed since last update.

AndroidでTravisCIしようとしてハマった話

Last updated at Posted at 2016-09-21

結論

.travis.yml は最終的にこのようになりました。
記憶が残っている内になぜこの様に変更になったか、備忘録として残します。
どなたかのお役にたてれば幸いです。

(before).travis.yml
language: java
sudo: false
env:
  global:
  - GRADLE_OPTS="-Xmx512m -XX:MaxPermSize=512m"
  - ADB_INSTALL_TIMEOUT=10
jdk:
  - oraclejdk7
script:
  - ./gradlew test
(after).travis.yml
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が壊れていた。

Job.log
* 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のバージョン関連のコミットが見つからず、幸先が不安な所からのスタート。プロジェクトからそれっぽいファイルを見つけてコミットしてみました。

gradle/wrapper/gradle-wrapper.properties
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

これでなんとか該当箇所は抜けたものの、別のエラーに遭遇しました。

Job.log
* 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 を書き換えてみます。

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 のエラーは解消されました。

Job.log
* What went wrong:
A problem occurred configuring project ':app'.
> failed to find target with hash string 'android-23' in: /usr/local/android-sdk

しかし、エラーの場所が変わったので、次の様に下記を削除。

travis.yml
- 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

ちょっと削除してみる。

Job.log
0.00s$ build-tools-23.0.1
/home/travis/build.sh: line 45: build-tools-23.0.1: command not found

またエラー箇所が変わった。
だんだん辛みが増してくる。

build-tools-23.0.1```がないと言われているので、先程削除したものを戻してみる。

```.travis.yml
+ # The BuildTools version used by your project
+   - build-tools-23.0.1
+ 
+ # The SDK version used to compile your project
+   - android-23

これではどうか。

Job.log
* 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'が見つからないという事でここを参考に以下の様に修正

travis.yml
  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だと解決しませんでした。
ともあれ該当のエラーは解消されたのですが、また以下のエラーが新しく発生しました。

Job.log
* 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.
   . 

こちらも、ここを参考に、下記の様に修正。

travis.yml
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

上記のエラーは無くなりましたが、今度は次の様なエラーになりました。

Job.log
* What went wrong:
Execution failed for task ':app:lint'.
> Lint found errors in the project; aborting build.

今度はAndroidのLintでエラーがでています。こちらを参考に修正。

app/build.gradle
+ lintOptions {
+     abortOnError false
+    }

ここまでやってようやくビルドが通りました👏👏👏
かなり煩雑になってしまったので、エラーの一覧をまとめていければと思います。

最後に

AndroidのCIの知識が皆無の状態から、Buildを通すところまでなんとかたどり着く事ができました。
今後は、テストの実行・Robolectric・Espressoあたりを触ってみたいと思います。
ご指摘などあれば、よろしくお願いします🙏

謝辞

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4