Documentación para el elemento aapt en la secuencia de comandos Ant
Estoy trabajando en algunos scripts de Ant para un sistema de compilación de Android y he encontrado un elemento para llamar aapt. He visto muchos ejemplos con
Exec ejecutable = "$ {aapt}"
- Cómo especificar la carpeta lib para JARs cuando se utiliza un archivo de generación de hormigas generado por Android?
- Hormiga construida con archivos .so
- Android ant error: nombre del directorio de recursos no válido: ./bin/res\crunch
- Adición de una tarea de hormigón personalizada a custom_rules.xml en mi proyecto de Android
- Android: use ant para crear configuraciones de compilación que cambien los valores de configuración
Pero los que salen del archivo main_rules.xml utilizan un formato diferente
<aapt executable="${aapt}" command="package" debug="${build.packaging.debug}" manifest="AndroidManifest.xml" assets="${asset.absolute.dir}" androidjar="${android.jar}" apkfolder="${out.absolute.dir}" resourcefilename="${resource.package.file.name}" resourcefilter="${aapt.resource.filter}"> <res path="${resource.absolute.dir}" /> <!-- <nocompress /> forces no compression on any files in assets or res/raw --> <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw --> </aapt>
Me gustaría cambiar el nombre del paquete utilizando este elemento, pero no puedo encontrar ninguna documentación sobre cómo usarlo. ¿Alguien sabe dónde puedo encontrar algo?
Gracias
- Ant Build AAPT Crunch está eliminando la información draw9 de las imágenes de recursos de la biblioteca
- Fallar pruebas de Android JUnit, no romper mi script Ant como espero?
- Diferencia entre build.xml y project_name.xml
- Android form build.xml con proguard no se construye en la versión
- Mi compilación falla cuando uso Ant para construir y el proyecto de Android con múltiples bibliotecas
- archivo ant.properties que falta en el proyecto android
- Lanza el proyecto cocos2dx con Android
- ¿Cómo pasar argumentos a aapt al construir android apk?
No pude encontrar nada y terminé usando lo siguiente que parece funcionar
<exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-f" /> <arg value="-v" /> <arg value="-M" /> <arg path="AndroidManifest.xml" /> <arg value="-A" /> <arg path="assets" /> <arg value="-I" /> <arg path="${android.jar}" /> <arg value="-m" /> <arg value="-J" /> <arg path="${out.absolute.dir}" /> <arg value="-F" /> <arg path="${out.absolute.dir}/${resource.package.file.name}" /> <arg value="-S" /> <arg path="res" /> <arg value="--rename-manifest-package" /> <arg value="my.new.package.name" /> </exec>
En la nueva (er) versión del SDK de Android, el script de construcción de hormigas funciona de una manera diferente. No invoca directamente el comando aapt a través de un elemento exec
, sino que define una tarea aapt. Este último es implementado por la clase java com.android.ant.AaptExecTask
. Esta clase sólo proporciona un subconjunto de las opciones de la línea de comandos aapt.
Puede encontrar una breve descripción de la correlación entre las opciones de línea de comandos de aapt y los parámetros de hormigas que aparecen a continuación como se encuentran en el documento de origen de java:
Aapt Option Ant Name Type --------------------------------------------------------------------------------- path to aapt executable attribute (Path) command command attribute (String) -v verbose attribute (boolean) -f force attribute (boolean) -M AndroidManifest.xml manifest attribute (Path) -I base-package androidjar attribute (Path) -A asset-source-dir assets attribute (Path -S resource-sources <res path=""> nested element(s) with attribute (Path) -0 extension <nocompress extension=""> nested element(s) <nocompress> with attribute (String) -F apk-file apkfolder attribute (Path) outfolder attribute (Path) deprecated apkbasename attribute (String) basename attribute (String) deprecated -J R-file-dir rfolder attribute (Path) -m always enabled
Por lo que he descubierto, no hay manera de proporcionar las opciones genéricas aapt a través de esta nueva tarea de construcción. Esto parece ser posible sólo tomando una copia modificada de build.xml del SDK con reemplazos para las invocaciones aapt.
Si alguien conoce una solución mejor, yo estaría encantado de leer, también 😉
EDIT: Incluso en las versiones más recientes del SDK, los paquetes de cambio de nombre introducidos nuevamente:
Aapt Option --rename-manifest-package package-name Ant Name manifestpackage Type attribute (String)
Dudo mucho que haya alguna documentación más allá del código fuente.
- MediaPlayer error: pausa llamada en el estado 64
- RecyclerView no se desinscribe del adaptador en el cambio de orientación