22

che sto cercando di fare Travis costruire il mio progetto Android. Viene a mancare quando si tenta di scaricare la libreria per ConstraintLayout. Sai cosa devo fare per farlo funzionare?Travis CI build non funziona con Android vincolo layout

mio .travis.yml è questo:

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 

mio build.gradle è:

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' 
} 

E l'errore che ottengo sul Travis è:

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 

Qualsiasi idea di come risolvere questo problema? È anche possibile costruire ConstraintLayout con Travis?

+2

FWIW, Non vedo '1.0.0-alpha2' nella mia copia di' extras/android/m2repository/com/android/support/constraint/constraint-layout'. Vedo solo '1.0.0-alpha1'. E secondo l'SDK Manager, la mia configurazione è aggiornata (Rev. 32 di Android Support Repository). – CommonsWare

+0

Works. Sembra che '1.0.0-alpha2' non ci sia ancora. Se pubblichi questo come risposta, lo accetterò. – Terry

+0

Ho provato a estrarre il .aar/.jar dal mio SDK locale, ma non sono riuscito a farlo funzionare. Se qualcuno lo fa, potrebbe essere una soluzione temporanea finché le cose non verranno risolte? – virtualandy

risposta

13

tuo build.gradle sta tentando di tirare in com.android.support.constraint:constraint-layout:1.0.0-alpha2. Il mio manager mi SDK 1.0.0-alpha1 (Ap 32 del supporto Android Repository) offre solo. Forse Travis CI ha anche solo 1.0.0-alpha1.

Dal momento che ipotizza di poter disporre 1.0.0-alpha2 a lavorare sul computer di sviluppo, non sono certo quello che sta succedendo qui. Potrebbe esserci un problema tecnico nella confezione di distribuzione del repository di supporto Android o qualcosa del genere.

+2

'1.0.0-alpha2' viene fornito con l'anteprima 2 di Studio 2.2. Non sono sicuro di come lo rendono disponibile alla build di gradle ... Ho un problema simile sul mio server jenkins (non trovando 1.0.0-alpha2) – Dodge

+0

Lo stesso qui: jenkins. Ho provato un sacco di opzioni, incluso l'uso di http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz ed è in grado di risolvere alpha1, ma non alpha2. – virtualandy

+1

FWIW, ho archiviato [un bug report] (https://code.google.com/p/android/issues/detail?id=212128) a riguardo. – CommonsWare

7

C'è una questione aperta https://code.google.com/p/android/issues/detail?id=212128

Insomma, com.android.support.constraint:constraint-layout:1.0.0-alpha1 è impacchettato in Google Repository ma 1.0.0-alpha2 e poi la versione è disponibile solo dal plug Gradle che si aspetta un testo della licenza di essere immessi in $HOME/.android/license/ (se non trovato, provare $ANDROID_HOME/licenses).

È possibile copiare il file di testo della licenza dal computer locale (dopo aver accettato la licenza da SDK Manager fornito da Android Studio 2.2) al server CI come indicato nel problema. O effettuare il downgrade a 1.0.0-alpha1 per risolvere il problema.

1

Ho lo stesso problema con com.android.support.constraint:constraint-layout:1.0.0-alpha9. Nel mio caso ho cercato direttamente per creare il file di licenza in Travis questo modo:

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

Ma dal momento che non ho i permessi per scrivere su $ANDROID_SDK e non c'è alcun supporto per sudo, non ho idea di cosa fare Il prossimo.

L'unica possibilità che vedo è quella di aspettare fino a quando Google lo include nella licenza o downgrade a alpha1 ...

+0

Ho copiato le licenze forlder della mia macchina nel mio repository e 'dependencies: pre: - scp -r $ {HOME}/$ {CIRCLE_PROJECT_REPONAME}/licenze $ ANDROID_HOME' – oldergod

+1

@gonzalo controlla la mia soluzione proposta, è la stessa di il tuo, ma ha aggiunto una nuova licenza per l'ambito Anteprima. Funziona perfettamente con TravisCI.Non c'è bisogno di eseguire il rollback su Alpha1. – amouly

18

Dopo la nuova release della versione libreria di supporto 25.0.0, il layout vincolo Alpha1 Apparentemente la libreria non funziona più su TravisCI. L'utilizzo di quella versione era l'unica soluzione al momento.

Ora ho trovato una nuova soluzione per utilizzare la nuova versione Alpha9.Nel file .travis.yml aggiungere:

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" 

Non ha dimenticato di accettare tutte le licenze sulla principale android oggetto:

licenses: 
    - android-sdk-license-.+ 
    - '.+' 
+2

Funziona come un incantesimo! Grazie per la condivisione! – Gonzalo

0

Purtroppo, l'aggiunta degli hash delle licenze non funziona più.

La soluzione più semplice che ha funzionato per me (nel 2018) era copiare le licenze SDK nel mio progetto da SDK e quindi dire a Travis di copiarle su sé stesso durante la costruzione.

C'è già un problema chiuso per questo sulla pagina Github di Travis e una delle soluzioni menzionate su di esso è sicuramente funzionante al momento.

Soluzione

  1. Copiare la cartella licenses trovato nella directory principale di Android SDK.
  2. Incollarlo nella directory radice del proprio progetto nella stessa gerarchia in cui si trova il file .travis.yml.
  3. aggiungere questi comandi per l' tuoi .travis.ymlbefore_install blocco:

.travis.yml:

before_install: 
- mkdir "$ANDROID_HOME/licenses" || true 
- cp ./licenses/* "$ANDROID_HOME/licenses/" 

link esatto di soluzione: https://github.com/travis-ci/travis-ci/issues/6617#issuecomment-369580270

link alla mia risposta originale su un'altra domanda SO: https://stackoverflow.com/a/49050480/1402616