android travis-ci android-constraintlayout constraint-layout

Travis CI build no funciona con el diseño de restricciones de Android



travis-ci android-constraintlayout (6)

Estoy tratando de hacer que Travis construya mi proyecto de Android. Falla cuando intenta descargar la biblioteca para ConstraintLayout . ¿Sabes lo que tengo que hacer para que funcione?

Mi .travis.yml es este:

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

Mi build.gradle es:

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

Y el error que recibo en Travis es:

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

¿Algúna idea de cómo arreglar esto? ¿Es incluso posible construir ConstraintLayout con Travis?


Después de la nueva versión de la biblioteca de soporte, versión 25.0.0 , la biblioteca Alpha1 de diseño de restricciones aparentemente ya no funciona en TravisCI. Usar esa versión era la única solución por el momento.

Ahora encontré una nueva solución para usar la nueva versión Alpha9 . En su archivo .travis.yml agregue:

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"

No olvide aceptar todas las licencias en el objeto principal de android :

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


Hay un problema abierto https://code.google.com/p/android/issues/detail?id=212128

En resumen, com.android.support.constraint:constraint-layout:1.0.0-alpha1 se incluye en el repositorio de Google, pero 1.0.0-alpha2 y la versión posterior solo están disponibles desde el plugin gradle que espera que se coloque un texto de licencia en $HOME/.android/license/ (si no lo encuentra, intente $ANDROID_HOME/licenses ).

Puede copiar el archivo de texto de licencia de su máquina local (después de haber aceptado la licencia de SDK Manager proporcionada por Android Studio 2.2) en el servidor de CI como se menciona en el problema. O baja a 1.0.0-alpha1 para solucionar el problema.



Lamentablemente, agregar hashes de licencia ya no funciona.

La solución más sencilla que me funcionó (en 2018) fue copiar las licencias de SDK a mi proyecto desde SDK y luego decirle a Travis que las copie a sí mismo mientras construye.

Ya existe un problema cerrado para esto en la página de Github de Travis y una de las soluciones mencionadas está funcionando actualmente.

Solución

  1. Copie la carpeta de licenses encuentra en el directorio raíz de Android SDK.
  2. Péguelo en el directorio raíz de su propio proyecto en la misma jerarquía donde se .travis.yml archivo .travis.yml .
  3. Agregue estos comandos al bloque before_install su before_install :

.travis.yml :

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

Enlace exacto a la solución: https://github.com/travis-ci/travis-ci/issues/6617#issuecomment-369580270

Enlace a mi respuesta original en otra pregunta SO: https://.com/a/49050480/1402616


Su build.gradle está intentando extraer com.android.support.constraint:constraint-layout:1.0.0-alpha2 . My SDK Manager solo me ofrece 1.0.0-alpha1 (Rev 32 del repositorio de soporte de Android). Quizás Travis CI también solo tiene 1.0.0-alpha1 también.

Como supongo que tiene 1.0.0-alpha2 trabajando en su máquina de desarrollo, no estoy muy seguro de lo que está pasando aquí. Puede haber una falla en el paquete de distribución del repositorio de soporte de Android o algo así.


Tengo el mismo problema con com.android.support.constraint:constraint-layout:1.0.0-alpha9 . En mi caso, traté directamente de crear el archivo de licencia en Travis de esta manera:

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

Pero como no tengo permisos para escribir en $ANDROID_SDK y no hay soporte para sudo , no tengo idea de qué hacer a continuación.

La única opción que veo es esperar hasta que Google la incluya en la licencia o descienda a alpha1 ...