android - tools - ¿Cómo funciona el nuevo applicationId en build.gradle?
install gradle android studio (1)
package
especificado en AndroidManifest.xml identifica una aplicación instalada en el dispositivo. El nombre de la propiedad en sí es engañoso porque uno puede pensar que la refactorización de las clases java también puede requerir el cambio de nombre de la propiedad del package
. package
propiedad del package
puede ser cualquier cadena que respete la limitación descrita en javadoc.
Debido a esta confusión, los chicos de Google decidieron cambiar el nombre del package
a applicationId
. Sin embargo, este cambio se aplica solo al archivo de gradle. Cambiar el nombre de la propiedad del manifiesto rompería la compatibilidad con versiones anteriores, esa es mi suposición.
Entonces, cuando construye su APK, gradle reemplaza el valor de la propiedad del package
del manifiesto con el valor de applicationId
especificado en el script de gradle.
Si quieres probarlo tú mismo. Simplemente configure applicationId
con un valor diferente al de su package
de manifiesto y cree APK. Luego vaya a la carpeta / build / intermedios / manifiestos / dev / debug y abra AndroidManifest.xml. Encontrará el valor de applicationId
.
Google lanzó la versión 0.11 del plugin Android Gradle.
Las notas de publicación contienen lo siguiente:
Uno de los cambios visibles del usuario en 0.11 es que hemos desaprobado las configuraciones packageName y packageNameSuffix, y las hemos renombrado a applicationId y applicationIdSuffix. El propósito de esto es dejar en claro que este ID de aplicación está desacoplado de las declaraciones de paquetes en su manifiesto, y en particular, la clase R y la clase BuildConfig, y todas las clases de implementación dentro de su aplicación, pueden ser renombradas y refactorizadas libremente; solo necesitas mantener applicationId igual. Si abre su archivo build.gradle, lint resalta estas llamadas en desuso y ofrece soluciones rápidas para actualizarlas:
Qué significa esto exactamente. ¿Cómo se desvincula el nombre de paquete en el script de compilación del que está en el manifiesto?