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.
- Error en la compilación de Android Gradle: no se pudo encontrar com.google.android:support-v4:r18
- Evitar que la dependencia de Gradle para la biblioteca de soporte sea reemplazada por una versión más reciente
- Configuraciones de compilación de Android para varios clientes
- ¿Cómo utilizo las librerías de android (apklibs) con maven y eclipse?
- Android Maven Eclipse todavía no puede importar apklib
Estamos utilizando plugin de maven android y es muy difícil lograrlo.
-
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.
-
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.
- Bibliotecas nativas que no están conectadas al APK usando android-maven-plugin
- Maven Compilation Error paquete R no existe
- Error de compilación de Android en Crosswalk
- Importar biblioteca en Eclipse sin jar
- Android Studio 1.0.2 m2responsory gradle issue
- Android protobuf nano uso
- ¿Cómo uso andengine con maven?
- Maven desarrolla la aplicación Android - BuildConfig
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
- Documentación sobre el proyecto Guardian ffmpeg android
- Gradle genera errores al integrar DroidAR en un proyecto de estudio de android