Cambiar el nombre de paquetes con plugin de maven de Android

Como de costumbre te quedaste con maven cuando intentas hacer algo no estándar.

Actualmente estoy intentando cambiar el nombre de mi paquete de aplicación principal para la aplicación de Android para poder ejecutar diferentes aplicaciones de marca de las mismas fuentes.

Estamos utilizando plugin de maven android y es muy difícil lograrlo.

  1. Estaba intentando la primera manera fácil – uso renameManifestPackage configuración. Pero esto parece que no es lo que esperaba. Porque no es posible instalar ahora apk.

  2. Intenté un segundo acercamiento. Ejecute ant en la fase de inicialización para cambiar el nombre de paquetes desde sources / resources / tests / AndroidManifest.xml. Esto casi funciona si omito las pruebas. Si no es que Robolectric falla porque está usando el manifiesto original. Si no copiar el manifiesto y hacer el reemplazo en el archivo original todo funciona, pero ahora he modificado AndroidManifest y esto rompe mi entorno de trabajo (IDE).

¿Alguien tiene pasos claros cómo tener el paquete de cambio de nombre y todavía tienen entorno de trabajo?

UPD: La cuestión mencionada en el punto 1 fue que usé el nombre incorrecto del paquete "devapp". Debe contener al menos un '.'. Se arregla con "my.package.devapp". Y la instalación se realizó correctamente. Pero no puedo instalar una nueva aplicación ahora porque:

Can't install because provider name my.package.app (in package my.package.devapp) is already used by my.package.live 

No estoy seguro de qué hacer a continuación. Va a profundizar más en apktool.

Tengo que está trabajando con 3.5.1 plugin de maven android y las siguientes líneas en la configuración:

 <renameManifestPackage>my.package.${environment}</renameManifestPackage> <manifest> <providerAuthorities> <property> <name>my.package.provider.Provider1</name> <value>my.package.${environment}</value> </property> <property> <name>my.package.provider.Provider2</name> <value>my.package.${environment}.media</value> </property> </providerAuthorities> </manifest> 

Evitar que el archivo AndroidManifest.xml se sobrescriba

Un problema con el uso de android-maven-plugin para cambiar el archivo AndroidManifest.xml es que puede ser confiado a su SCM por error.

Una nueva característica se ha introducido desde android-maven-plugin versión 3.8.0 que le da la oportunidad de guardar el AndroidManifest.xml actualizado en otra ubicación.

Muestra:

  <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.8.2</version> <extensions>true</extensions> <configuration> <renameManifestPackage>com.domain.android${environment}</renameManifestPackage> <updatedManifestFile>${project.build.directory}/AndroidManifest.xml</updatedManifestFile> <manifestApplicationLabel>Appname${environment}</manifestApplicationLabel> <manifest> <providerAuthorities> <property> <name>com.domain.android.vc2.utility.SearchSuggestionsProvider</name> <value>com.domain.android${environment}.searchsuggestionsprovider</value> </property> <property> <name>com.domain.android.widget.VPWidgetDataProvider</name> <value>com.domain.android${environment}.widget.provider</value> </property> </providerAuthorities> </manifest> </configuration> <executions> <execution> <id>update-manifest</id> <goals> <goal>manifest-update</goal> </goals> </execution> </executions> </plugin> 

A continuación, el contenido del elemento updatedManifestFile resultará en una copia del archivo original de AndroidManifest.xml creada con este nombre y utilizada para actualizaciones. Por supuesto también para el empaquetado del apk.

Al agregar el entorno de propiedad a su comando mvn, puede crear diferentes compilaciones que se instalen una junto a otra en el mismo dispositivo.

  mvn clean package -Denvironment=.beta 

Más para leer

Este enlace explica esto y más sobre las propiedades del complemento:

http://jayway.github.io/maven-android-plugin/manifest-update-mojo.html#updatedManifestFile

  • Error al ejecutar el objetivo com.jayway.maven.plugins.android.generation2
  • Maven - lee el número de versión del archivo de propiedades
  • Dependencia de la biblioteca de Android Gradle con la dependencia de la biblioteca mediante Nexus
  • Gradle Sube la aplicación android apk a maven repo (nexus)
  • No se pudieron resolver todas las dependencias para la configuración ': classpath'
  • Configuración de gradiente y maven espresso para Android
  • El edificio con maven falla
  • ¿Por qué Gradle necesita un archivo settings.gradle?
  • Cree la Biblioteca de Archivos de Android (AAR) con maven solamente
  • ¿Cómo se integra Robolectric, Maven, ActionBarSherlock (y preferiblemente + IntelliJ) en un proyecto de Android?
  • Ionic Gradle failure "No se pudo encontrar com.android.tools.build:gradle:2.2.3"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.