android - Documentación para el elemento aapt en script Ant
build (3)
Dudo mucho que haya documentación más allá del código fuente.
Estoy trabajando en algunos scripts Ant para un sistema de compilación de Android y he encontrado un elemento para llamar aapt. He visto muchos ejemplos con
exec executable = "$ {aapt}"
pero los que salen del archivo main_rules.xml usan 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 algunos?
Gracias
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 versión (er) del SDK de Android, el script de construcción de ant trabaja de una manera diferente. No invoca directamente el comando aapt a través de un elemento exec
, sino que define una tarea aapt. El último es implementado por la clase java com.android.ant.AaptExecTask
. Esta clase solo proporciona un subconjunto de las opciones de línea de comando aapt.
Puede encontrar una breve descripción de la asignación entre las opciones de la línea de comando aapt y los parámetros de la hormiga a continuación tal como se encuentran en el documento fuente 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 descubrí, no hay forma de proporcionar las opciones genéricas aapt a través de esta nueva tarea de compilación. Esto parece posible solo al tomar una copia modificada del build.xml del SDK con reemplazos para las invocaciones aapt.
Si alguien conoce una solución mejor, me encantaría leer sobre ella también ;-)
EDITAR: en versiones aún más nuevas del SDK, los paquetes de cambio de nombre introducidos nuevamente:
Aapt Option --rename-manifest-package package-name
Ant Name manifestpackage
Type attribute (String)