que - Android Studio: migra complex build.xml a build.gradle
importar proyecto android studio (2)
- Primero, le sugiero que importe el proyecto heredado a Android Studio. Creará la secuencia de comandos build.gradle apropiada para usted.
- Y luego, puede enumerar la lista de
gradlew tasks
ejecutandogradlew tasks
en la raíz de su proyecto. - Para depender de algunas tareas, puede usar un comando como
init.dependsOn anotherTask
.
He migrado mi proyecto de eclipse a Android Studio con éxito y se ha generado un archivo build.gradle predeterminado. El proyecto se crea correctamente y puedo implementar para depurar, etc.
Sin embargo, el problema real es crear archivos APK de lanzamiento (desde la línea de comandos) para los que solía tener una construcción de antigüedades personalizada (llamada a través de la línea de comandos, no fuera de eclipse).
Mi build.xml personalizado importó el archivo sdk build.xml estándar de la carpeta SDK a través de:
<import file="${sdk.dir}/tools/ant/build.xml" />
Así que todo lo que tenía que hacer en mi build.xml era anular los objetivos o engancharlos en "depends".
Un ejemplo para una anulación:
<target name="-set-release-mode" depends="-set-mode-check">
<!--Here I rename my output apk files to something like: myapp-versionFromAndroidManifest.apk -->
</target
Y un ejemplo para agregar dependencia:
<target name="-pre-build" depends="clean">
<!-- my custom code where I copy resource files, process command line arguments
use xpath to extract things like the version from the AndroidManifest.xml and
write them into custom xml files etc... -->
</target
Entonces, en general, todo el asunto fue muy simple usando hormiga. Pero ahora, cuando se trata de migrar a gradle, estoy en una pérdida total, cómo lograr lo mismo que hice anteriormente en hormiga, específicamente:
- Para build.xml hay un build.xml predeterminado que importé en mi compilación de ant. ¿Existe un archivo build.gradle estándar en algún lugar para que pueda verificar las tareas definidas?
- ¿Es posible anular las tareas de Gradle y, en caso afirmativo, cómo?
- Estoy bastante seguro de que depende = "..." de la hormiga se puede imitar en Gradle, pero no tengo idea de cómo y eso también requeriría una respuesta a la pregunta 1.
Busqué en Google un montón de tutoriales, también tutoriales de migración como (que lamentablemente no abordaron mis problemas):
http://keepsafe-engineering.tumblr.com/post/87818767721/migrating-android-app-from-ant-to-gradle
http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/
También leí este capítulo de los documentos de Gradle que realmente no me ayudaron en absoluto, porque no responde las preguntas 1 o 2 o 3 para el caso:
http://www.gradle.org/docs/current/userguide/ant.html
Lo siguiente dio algunos indicadores interesantes:
http://toastdroid.com/2014/03/28/customizing-your-build-with-gradle/
También intenté simplemente copiar el build.xml predeterminado de la carpeta sdk en mi propio build.xml y luego simplemente importar ese archivo de compilación ant en gradle y ejecutar la tarea ant que se ejecuta en la compilación:
<target name="release"
depends="-set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-build"
description="Builds the application in release mode.">
</target>
pero comencé a encontrarme con problemas que sugerían que ya no era una opción, ya que el build.xml predeterminado comenzaba a arrojar errores, que parecían estar relacionados con la versión del SDK. Y tuve que meterme mucho con el sdk build.xml original debido a la nueva estructura del proyecto de estudio de Android, por lo que los archivos no estaban donde se esperaban, etc.
Solo para que conste: abandoné la idea de usar mi ant-build anterior y migré completamente a gradle. La mayoría de las cosas que necesitaba hacer se podían lograr solo con la estructura del directorio. Puede encontrar detalles sobre cómo lo hice en mi otra pregunta:
Android Studio: Gradle Product Flavors: define propiedades personalizadas
Ahora la segunda parte fue llamar a mi código de Java que hizo algunas cosas que realmente no quería migrar a groovy / gradle. Así que descubrí cómo ejecutar mi clase java (aunque de hecho tuve que crear un archivo jar) desde el script de Gradle:
Android Studio Gradle: ejecutar el método Java estático (migración de ANT a Gradle)
Si alguien tiene preguntas, me complacerá intentarlo lo mejor posible y responderlas.