Cómo cambiar el nombre del paquete de una aplicación de Android

133

Mi almacén de claves está dañado, por lo tanto, Android Market me exige que cambie el nombre de la aplicación y la vuelva a enviar. Sin embargo, cada vez que voy a editar los nombres de los paquetes en Manifiesto y en todos los archivos, me da muchos errores.

¿Cuál es la forma correcta de cambiar el nombre de la aplicación?

Allen Gingrich
fuente
3
afortunadamente agregaron un "botón mágico para cambiar el nombre del paquete" desde 2010 - vea la respuesta de @Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier
gracias Richard Le ...
DoruChidean
3
Posible duplicado de Android Studio Rename Package
Bo Persson
difícil ser un duplicado cuando se le preguntó esto 3 años antes ...
Ryan Ternier

Respuestas:

102

Si está utilizando Eclipse, puede probar estas instrucciones del sitio para desarrolladores de Android. Son específicamente para la muestra GestureBuilder, pero deberían aplicarse a cualquier aplicación, por lo que puedo decir:

[H] Hay cómo puedes hacer esto en Eclipse:

  1. Haga clic derecho en el nombre del paquete ( src/com.android.gesture.builder).
  2. Seleccione Refactorizar> Cambiar nombre y cambie el nombre, por ejemplo a com.android.gestureNEW.builder.
  3. Abre el archivo de manifiesto. Dentro de la <manifest>etiqueta, cambie el nombre del paquete a com.android.gestureNEW.builder.
  4. Abra cada uno de los dos archivos de Actividad y haga Ctrl-Shift-O para agregar los paquetes de importación que faltan, luego guarde cada archivo. Ejecute la aplicación GestureBuilder en el emulador.

Además, asegúrese de recordar cambiar el nombre del paquete junto con las referencias a él en los archivos. En Eclipse puede ver el nombre del paquete en la ventana del explorador de archivos / vista de árbol en el lado izquierdo. En mi experiencia, Eclipse a veces puede ser un poco quisquilloso y poco confiable con esto (dejando atrás referencias extrañas al antiguo nombre del paquete, por ejemplo).

eldarerathis
fuente
Esta es probablemente la mejor manera de hacerlo, no hay un botón mágico para cambiar el nombre del paquete.
blindstuff
13
Sí hay. Ver la respuesta de @Marc Bernstein.
Mark Phillip
No creo que el interrogador original también necesitara cambiar los nombres de los paquetes Java. Marc debe ser la respuesta aceptada.
mpellegr
El primer paso no es "hacer clic derecho en", debería elegir "Refactorizar" en el menú.
Deqing
Y es posible que deba cambiar app_nameen res-> values ​​=> strings.xml
Deqing
302

Hay una manera de cambiar el nombre del paquete fácilmente en Eclipse. Haga clic derecho en su proyecto, desplácese hacia abajo hasta Herramientas de Android y luego haga clic en Cambiar nombre de paquete de aplicación.

Marc Bernstein
fuente
2
Acabo de probar Eldar's y funcionó, pero estoy seguro de que esto también funcionará.
Allen Gingrich
44
Esta es la respuesta correcta, pero el ADT actual está roto y ROTA cada referencia a su clase R. Por lo tanto, debe hacer clic en cada archivo individual, hacer "ctrl-shift-o" (o cmd-shift-o en Mac) y seleccionar su nuevo paquete denominado R (NO seleccione android.R! Las cosas se romperán horriblemente ), luego presione guardar. ... y repita para CADA archivo individual :(
Adam
@ Adam solo para hacer nuestra vida más fácil, haz clic en el proyecto y usa ctrl + shift + o, actualizará la referencia importada en TODAS las clases / archivos: D
Blaze Tama
Esto me salvó la vida ya que perdí mi ridícula clave de tienda y tuve que volver a publicar mi aplicación.
Teoman shipahi
3
descubrí que los nombres de los paquetes de archivos declarados en la parte superior de cada archivo no coinciden con el nuevo paquete, ni con la carpeta en la que se encuentran. Puede hacer clic con el botón derecho en la carpeta de origen que todavía tiene el nombre del paquete anterior (al menos el mío siempre lo hace), seleccione 'refactorizar' y luego 'renombrar' y renómbrelo al nuevo paquete. eclipse cambiará el nombre de la carpeta y las declaraciones de paquete de cada archivo al nuevo nombre del paquete, como debería haber hecho en primer lugar.
Androidcoder
52

Así es como puedes hacer esto en Eclipse:

  1. Haga clic derecho en el nombre del paquete ( src/com.android.gesture.builder).
  2. Seleccione Refactor > Renamey cambie el nombre, por ejemplo a com.android.gestureNEW.builder.
  3. Abre el archivo de manifiesto. Dentro de la <manifest>etiqueta, cambie el nombre del paquete a com.android.gestureNEW.builder.
  4. Abra cada uno de los dos Activityarchivos y haga Ctrl+ Shift+ Opara agregar los paquetes de importación que faltan, luego guarde cada archivo.
  5. Ejecute la GestureBuilderaplicación en el emulador.

Enlace a la publicación

Actualice la manera súper fácil de hacer clic derecho en su proyecto ingrese la descripción de la imagen aquí

ARIZONA_
fuente
2
¡Una manera increíble de hacer esto!
Amigo
2
La solución más fácil. Esto debería haber sido aceptado;)
Nomade
12

En Android Studio , que, honestamente, deberías usar, cambia el nombre right-clickingdel paquete en el nombre del paqueteproject structure -> Refactor -> Rename...

Luego da la opción de renombrar el directorio o el paquete. Selecciona el paquete. El directorio debe seguir su ejemplo. Escriba su nuevo nombre de paquete y haga clic en Refactorizar. Cambiará todas las importaciones y eliminará las importaciones redundantes por usted. Incluso puede hacer que lo arregle por usted en comentarios y cadenas, etc.

Por último , cambie el nombre del paquete en consecuencia en su AndroidManifest.xml hacia la parte superior. De lo contrario, obtendrá errores en todas partes quejándose de R. lo que sea.

Otra solucion muy util

Primero cree un nuevo paquete con el nombre deseado de la by right clicking on thecarpeta java -> nuevo -> paquete.`

Luego, seleccione y arrastre todas sus clases al nuevo paquete. AndroidStudio re-factorizará el nombre del paquete en todas partes.

Después de eso: en el build.gradleadd / edit applicationId de su aplicación con el nuevo. es decir ( com.a.bcen mi caso):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

Publicación original y más comentarios aquí

estirado
fuente
Curiosamente, cuando hago eso, no da el directorio / paquete de elección ... solo el "nombre del módulo" ...
Fattie
1
Me hace lo mismo ahora si hago clic derecho en el directorio raíz. Al menos para mí, ese no es el nombre real de mi paquete. Si el nombre de su paquete es com.a.bc, debería haber un directorio debajo del directorio raíz llamado bc. Ahí es donde obtendrás las diferentes opciones. En este momento, estoy obteniendo directorio o módulo. Prueba el módulo. Siempre puedes deshacerlo (Ctrl + z debería hacerlo) si rompe algo.
Craned
Gracias ... mierda, ¿te refieres al directorio ".idea" o al directorio "app"? Acabo de publicar una Q explicativa ... stackoverflow.com/questions/23786361/… Ahh .. Ahora veo "Seleccionar directorio / módulo de refactorización" cuando hago clic en mi carpeta "aplicación" ... ¡hoy caramba!
Fattie
@JoeBlow haga clic derecho packagedebajo de la carpetajava
Abu Shumon
"Android Studio, que, honestamente, deberías usar" Teniendo en cuenta que la pregunta se hizo en 2010, mientras que AS ni siquiera se anunció hasta 2013, y mucho menos se lanzó como una versión estable (2014). Por supuesto, los usuarios de hoy en día deberían estar usando AS. :-)
LarsH
8

Sin Eclipse:

  1. Cambie el nombre del paquete y los nombres de actividad en AndroidManifext.xml y en cualquier otro lugar que aparezca en archivos .xml (nombres de vista personalizados, etc.)

  2. Actualización de la declaración de importación del paquete en todos los archivos fuente

  3. Cambie el nombre de todas las carpetas para que coincidan con el nombre del paquete. Ubicaciones de carpeta:
    a. bin / clases
    b. gen
    c. src

  4. Actualice el nombre del proyecto en build.xml (o el nombre de su apk no cambiará)

  5. Elimine todos los archivos .class en bin / classes / com / example / myapp / (si omite este paso, los archivos no se reescriben durante la compilación y dex da un montón de problemas al procesar errores de "nombre de clase no coincide con la ruta"

  6. Eliminar gen / com / example / myapp / BuildConfig.java (no sé por qué eliminar BuildConfig.class en el paso 3a no causó que dex actualizara su ruta a esto, pero hasta que eliminé BuildConfig.java siguió recreando gen / com / oldapp_example / oldapp y poner BuildConfig.class allí. No sé por qué R.java desde la misma ubicación no tiene este problema. Sospecho que BuildConfig.java se genera automáticamente en la precompilación pero R.java no es)

Los 6 pasos anteriores son los que hice para cambiar el nombre de mi paquete y obtener una compilación * exitosa. Puede haber una mejor manera de manejar los pasos 5 y 6 a través de comandos dex para actualizar las rutas, o tal vez editando classes.dex.d en el directorio raíz del proyecto. No estoy familiarizado con dex o si está bien eliminar / editar classes.dex.d, así que utilicé el método de eliminación de archivos .class que sé que se regenerarán en la compilación. Luego revisé classes.dex.d para ver lo que todavía necesitaba ser actualizado.

* No quedan errores ni advertencias en mi compilación, EXCEPTO que dex y apkbuilder dicen "Archivo de destino eliminado encontrado" sin detalles sobre qué es ese archivo. No estoy seguro de si esto aparece en cada compilación, si estaba allí antes de que me metiera con el nombre de mi paquete, o si es el resultado de mis eliminaciones y me falta un paso.

Clusterflux
fuente
Resolví el cambio de nombre como lo hiciste, pero con una simplificación: eliminar las carpetas bin y gen. Tampoco pude importar el proyecto renombrado en Eclipse hasta que modifiqué el archivo oculto .project, tenía el antiguo nombre del proyecto bajo <nombre>
Jose_GD
6

Sigue estos pasos:-

  • Haga clic derecho en el proyecto.
  • Ir a las herramientas de Android.
  • Haga clic en Cambiar nombre del paquete de la aplicación.
  • Cambiar el nombre del paquete de la aplicación.

HECHO

Deepak Sharma
fuente
1
Esto funciona, pero también debe refactorizar el nombre del paquete de la carpeta src base.
ashishduh
6

La forma más rápida de hacerlo en Android Studio 1.3 :

  1. Cambie el nombre del paquete en el manifest
  2. Vaya a Module Settings[F4]-> Flavors, Application Idescriba el mismo nombre.
  3. Crea un nuevo paquete con ese nombre: [right-click-> new-> package]
  4. Seleccione todos los archivos java de su proyecto y luego continúe [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PD: si no sigue este orden, puede terminar cambiando todos los archivos java uno por uno con nuevas importaciones y un montón de errores de tiempo de compilación, por lo que el orden es muy importante.

Movsar Bekaev
fuente
1
Con este método, la R permanece sin cambios por la refactorización. así que import com.app.myapp.R NO cambia al nuevo nombre del paquete, y debe tomar uno por uno ...
OWADVL
@OWADVL, R cambia automáticamente cuando mueve los archivos al nuevo paquete, Android Studio realiza automáticamente la reconstrucción cuando mueve los archivos .java, hago esto todos los días y siempre que mantenga este orden, nunca cambio nada en los archivos .java manualmente
Movsar Bekaev
Pero en Eclipse, podríamos cambiar el ID del paquete de la aplicación, sin cambiar el paquete de todo el código. El asistente cambiaría el nombre de las referencias de BuildConfig & R por usted. Me sorprende que no exista lo mismo en AS.
Tom
5

Cambiar el nombre del paquete es un fastidio. Parece que diferentes métodos funcionan para diferentes personas. Mi solución es rápida y sin errores. Parece que no es necesario limpiar o restablecer el eclipse.

  1. Haga clic derecho en el nombre del paquete y luego en Refractor> Cambiar nombre.
  2. Haga clic derecho en el nombre del proyecto Herramientas de Android> Cambiar nombre del paquete de la aplicación.
  3. Establezca manualmente los nombres de paquete en el Manifiesto que no hayan sido modificados por los pasos anteriores.
erdomester
fuente
3

Bernstein tiene el método, use la herramienta Eclipse, "Renombrar paquete de aplicación", puede que tenga que hacer alguna limpieza incluso después del hecho. Además, Eclipse a veces pierde la noción de las cosas cuando realiza cambios en un proyecto. Puede que tenga que usar la herramienta "Proyecto limpio" (en el menú "Proyecto"). Si eso no funciona, puede que tenga que cerrar y reiniciar Eclipse. Soluciones Voo-doo, pero Eclipse puede ser así.

m0j0
fuente
3

Encontré que la solución más fácil era usar Regexxer para reemplazar "com.package.name" con "com.newpackage.name", luego cambiar el nombre de los directorios correctamente. Súper fácil, súper rápido.

robisaks
fuente
3
  1. Puño cambiar el nombre del paquete en el archivo de manifiesto
  2. Re-factorizar> Renombrar el nombre del paquete en la srccarpeta y marcarrename subpackages
  3. Eso es todo lo que has hecho.
Sathirar
fuente
Intenté usar las herramientas de Android de Marc Bernstein-> Cambiar nombre del paquete de aplicación, pero me dio un error. Esto fue más simple, aunque tuve que arreglar algunas cosas después del cambio
david-hoze
2

También hay otra solución para usuarios sin Eclipse, simplemente cambie el atributo del paquete en la etiqueta <manifest> en AndroidManifest.xml, reemplazando el antiguo nombre del paquete usado por uno nuevo. Nota: También debe ajustar manualmente todas las declaraciones de importación relacionadas y carpetas relacionadas en su proyecto.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>
Como tú
fuente
1

Alternativa:

  1. Abra AndroidManifest.xml
  2. Cambiar paquete = "NUEVO NOMBRE" dentro de la etiqueta de manifiesto.
MapleLover
fuente
1
  1. Haga clic derecho en Proyecto> Herramientas de Android> Cambiar nombre del paquete de la aplicación

  2. Vaya a src y haga clic derecho en su paquete principal> Refactorizar> Cambiar nombre

  3. Vaya al archivo de manifiesto y cambie el nombre de su paquete.

ritesh4326
fuente
1

Acabo de perder algunas horas probando todas las soluciones. Estaba seguro, el problema está en mi código: inicio de apk pero algunos errores al trabajar con diferentes clases y actividades.

Única forma de trabajar con mi proyecto:

  1. renombrarlo - archivo / renombrar y marcar todas las casillas de verificación
  2. compruebe los lugares no renombrados, tenía uno de los nombres antiguos del diseño todavía en las herramientas: context = "..
  3. crear nuevo espacio de trabajo
  4. importar proyecto a un nuevo espacio de trabajo

Para mí funciona, única solución.

Dudeista
fuente
1

Entonces, usar IntelliJ con el complemento de Android (Studio) fue: fui a la AndroidManifest.xmlparte superior y cambié el nombre del paquete haciendo clic derecho -> Refactorizar -> cambiar nombre. Nuestro nombre de paquete tenía cuatro partes a.b.c.d, la nueva solamente a.b.c. Entonces cambié el nombre de los tres primeros. Luego fui al directorio de fuentes generadas ( app\build\generated\source\r\development\debug\a\b\c\d), hice clic derecho en la Rclase y Refactor-> Mover [d] a un paquete más alto. Lo mismo con BuildConfigin app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Al usar Refactor-> Move, IntelliJ actualiza todas las referencias a BuildConfigy R.

Finalmente actualicé todos los ID de aplicación que encontré en gradle.build que encontré. Llegué a Clean Project, Make and Rebuild Project. Eliminé la aplicación de mi teléfono y presioné "Reproducir". Todo funcionó, por lo que la refactorización fue fácil y bastante rápida.

Raul Pinto
fuente
1

En Android Studio 1.2.2 Diga si desea cambiar com.example.myappa org.mydomain.mynewapp Puede seguir los pasos en cada uno de los directorios que se muestran en la siguiente captura de pantalla. Le dará la opción de vista previa para que pueda obtener una vista previa antes de realizar cualquier cambio.

Ve Refactor -> Renamey da tu nuevo nombre. Debe hacerlo para cada una de las carpetas, por ejemplo, para com, example y myapp. Actualizará automáticamente las importaciones para que no tenga que preocuparse por ello. ingrese la descripción de la imagen aquí

Actualice también el archivo build.gradleque no se actualiza automáticamente.

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Después de eso pedirá synchacerlo. Entonces todo estará bien. Puedo subir mi APK a la tienda de Google después de esto. Asegúrese de haber firmado su aplicación para subirla a la tienda.

Krishnadas PC
fuente
0
  1. En su estudio de Android, en el panel del proyecto, hay un ícono de engranaje "Haga clic en él".
  2. Desmarque los paquetes medios vacíos compactos
  3. Ahora el directorio del paquete se ha dividido, es decir, directorios individuales.
  4. Seleccione el directorio que desea renombrar.
  5. Haga clic derecho en ese directorio en particular.
  6. Seleccione refactorizar y luego renombrar opción.
  7. El cuadro de diálogo se ha abierto, cámbiele el nombre.
  8. Después de poner un nuevo nombre, haga clic en Refactorizar.
  9. Luego haga clic en Do Refactor en la parte inferior.
  10. Luego, Android Studio actualizará todos los cambios.
  11. Ahora abra el archivo build.gradle y actualice la aplicación Id y sincronícelo.
  12. Ahora vaya al archivo de manifiesto y cambie el nombre del paquete.
  13. Reconstruye tu proyecto.
  14. Estás listo :)
Hanisha
fuente