Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Travis CI build doesn't work with Android Constraint Layout

I am trying to make Travis build my Android project. It fails when it tries to download the library for ConstraintLayout. Do you know what I have to do to make it work?

My .travis.yml is this:

language: android
jdk:
  - oraclejdk8
android:
  components:
    - platform-tools
    - tools
    - build-tools-23.0.2
    - android-23
    - extra-android-support
    - extra-android-m2repository
    - extra-google-m2repository

My build.gradle is:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "my.example.bdd"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha2'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:23.4.0'
}

And the error I get on Travis is:

FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > Could not find com.android.support.constraint:constraint-layout:1.0.0-alpha2.
     Searched in the following locations:
         https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar
         file:/usr/local/android-sdk/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         file:/usr/local/android-sdk/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar
         file:/usr/local/android-sdk/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         file:/usr/local/android-sdk/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar

Any idea how to fix this? Is it even possible to build ConstraintLayout with Travis?

like image 317
Terry Avatar asked Jun 03 '16 13:06

Terry


4 Answers

After the new release of the Support Library version 25.0.0, the Constraint Layout Alpha1 library apparently doesn't work anymore on TravisCI. Using that version was the only workaround at the moment.

Now I found a new workaround to use the new Alpha9 version. In your .travis.yml file add:

before_install:
  - mkdir "$ANDROID_HOME/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

Do not forgot to accept all the licences on the main android object:

licenses:
  - android-sdk-license-.+
  - '.+'
like image 190
amouly Avatar answered Nov 01 '22 16:11

amouly


Your build.gradle is attempting to pull in com.android.support.constraint:constraint-layout:1.0.0-alpha2. My SDK Manager only offers me 1.0.0-alpha1 (Rev 32 of the Android Support Repository). Perhaps Travis CI also only has 1.0.0-alpha1 as well.

Since I presume that you have 1.0.0-alpha2 working on your development machine, I am not quite certain what is going on here. There might be a glitch in the distribution packaging of the Android Support Repository or something.

like image 36
CommonsWare Avatar answered Nov 01 '22 15:11

CommonsWare


There is an open issue https://code.google.com/p/android/issues/detail?id=212128

In short, com.android.support.constraint:constraint-layout:1.0.0-alpha1 is bundled into Google Repository but 1.0.0-alpha2 and later version is only available from gradle plugin which expects a license text being placed in $HOME/.android/license/ (if not found, try $ANDROID_HOME/licenses).

You can copy the license text file from your local machine (after agreed to the license from SDK Manager provided by Android Studio 2.2) to the CI server as mentioned in the issue. Or downgrade to 1.0.0-alpha1 to fix the problem.

like image 7
kamikat Avatar answered Nov 01 '22 16:11

kamikat


I have the same issue with com.android.support.constraint:constraint-layout:1.0.0-alpha9. In my case I directly tried to create the license file in Travis this way:

before_install:
  - mkdir "$ANDROID_SDK/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

But since I don't have permissions to write on $ANDROID_SDK and there is no support for sudo, I have no idea what to do next.

The only option I see is to wait until Google includes it in the license or downgrade to alpha1...

like image 1
Gnzlt Avatar answered Nov 01 '22 15:11

Gnzlt