Copie el proyecto existente con un nuevo nombre en Android Studio

100

Me gustaría copiar mi proyecto de Android y crear un nuevo proyecto a partir de los mismos archivos pero con un nombre diferente. El propósito de esto es que pueda tener una segunda versión de mi aplicación que sea compatible con anuncios en la tienda de aplicaciones.

Encontré esta respuesta aquí:

Android: copia el proyecto existente con un nuevo nombre

Pero es para Eclipse. ¿Cómo puedo hacer esto en Android Studio?

Miguel
fuente

Respuestas:

66

Los pasos del enlace que especificó también deberían funcionar para Android Studio. Simplemente haga una copia (usando un administrador de archivos) de toda la carpeta del módulo y asígnele un nuevo nombre. Ahora ábralo y úselo Refactor -> Rename(haga clic con el botón derecho en el elemento que desea cambiar de nombre) para cambiar el nombre de su módulo y paquete.

Consulte esto para obtener detalles sobre la refactorización en IntelliJ / Android Studio.

free3dom
fuente
Windows 10 dice que la ruta del archivo es demasiado larga. Tengo la actualización de aniversario e hice el truco del Editor de políticas de grupo para ebable rutas de archivo largas. Parece que Explorer todavía no puede manejar rutas de archivo largas. Ver: superuser.com/questions/1114181/…
Andrew S
3
Intenté esto, pero cuando ejecuto el proyecto, Android Studio escribe sobre mi aplicación anterior en mi dispositivo. Quiero tener ambas aplicaciones simultáneamente en el dispositivo (para probar pestañas personalizadas de Chrome). ¿Cómo puedo obligar a Android Studio a tener ambas aplicaciones a la vez en el dispositivo?
Locksleyu
Seleccioné la carpeta del paquete base y hice clic en Refactorizar -> Cambiar nombre, obtuve errores con la opción "cambiar el nombre del paquete", luego hice la opción "cambiar el nombre de la carpeta" con éxito.
Ismail Yavuz
También debe refactorizar y renombrar el archivo iml !!!, si no lo hace, no funcionará
JoeCoolman
43

Si usa Gradle, no olvide cambiar el atributo applicationId en el archivo app / build.gradle .

Sergii
fuente
3
Esto es muy importante ya que me olvido de modificar el applicationId en el archivo build.gradle y termino publicando una aplicación con un nombre de paquete incorrecto en Play Store
wenjiun
Esto es más un comentario que una respuesta real.
The Unknown Dev
¡Esa fue la clave!
Denis
39

Como señaló free3dom , esto es lo que se debe hacer:

  1. Crea una copia usando el administrador de archivos
  2. Edite manualmente el build.gradlearchivo de la aplicación para cambiar el nombre del paquete (puede usar el administrador de archivos).
  3. Edite manualmente AndroidManifest.xmlpara cambiar el nombre del paquete.
  4. Corre gradle sync.
  5. Abra el proyecto en Android Studio y refactorice el nombre del paquete.
  6. Ejecute la sincronización de Gradle, de nuevo.

Eso parece funcionar sin problemas.

Veeru
fuente
9
Me pregunto cómo se encuentra una sincronización Gradle fuera de Android Studio
erdomester
1
siguió esto, pero no hizo el paso # 4, simplemente abrió Android Studio e importó el proyecto copiado. También eliminó el archivo .iml del proyecto copiado cuando se creó uno nuevo. funcionó muy bien! ¡Gracias!
nommer
@nommer ¿de qué estás .imlhablando? Puedo encontrar uno en project/prjectname.imly otro en project/app/app.iml, ¿cuál debo eliminar?
Hirdesh Vishwdewa
@Veeru, ¿puedes explicar el quinto paso?
Hirdesh Vishwdewa
@HirdeshVishwdewa ¡Buena pregunta! lo hice hace un tiempo que no puedo recordar, pero estoy adivinando que es el proyecto / * IML.
nommer
31

Si está utilizando la versión más reciente de Android Studio, puede dejar que le ayude en esto.

Nota: He probado esto solo en Android Studio 3.0.

El procedimiento es el siguiente:

  1. En la vista del proyecto (esto viene junto con las capturas y la estructura en el lado izquierdo de la pantalla), seleccione Proyecto en lugar de Android .
    El nombre de su proyecto será la parte superior del árbol (junto con las bibliotecas externas).
    Seleccione su proyecto y luego vaya a Refactor -> Copy....
    Android Studio le preguntará el nuevo nombre y dónde desea copiar el proyecto. Proporcione lo mismo.

  2. Una vez finalizada la copia, abra su nuevo proyecto en Android Studio.
    Los paquetes seguirán estando bajo el nombre del proyecto anterior.
    Esos son los paquetes de clases de Java, el ID de la aplicación y todo lo demás que se generó con el nombre del paquete anterior.
    Necesitamos cambiar eso.
    En la vista del proyecto, seleccione Android .
    Abra el subdirectorio de Java y seleccione el paquete principal.
    Luego haga clic derecho sobre él y vaya a Refactorentonces Rename.
    Android Studio le dará una advertencia diciendo que varios directorios corresponden al paquete que está a punto de refactorizar.
    Haga clic en Rename packagey no Rename directory .
    Después de este paso, su proyecto ahora está completamente bajo el nuevo nombre.

  3. Abra el archivo res / values ​​/ strings.xml y cambie el nombre del proyecto.
  4. No olvide cambiar su ID de aplicación en el "Módulo de compilación de Gradle: aplicación".
  5. Un último paso es limpiar y reconstruir el proyecto; de lo contrario, cuando intente ejecutar su proyecto, Android Studio le dirá que no puede instalar el APK (si ejecutó el proyecto anterior).
    Entonces Build -> Clean projectentonces Build -> Rebuild project.
    Ahora puede ejecutar su nuevo proyecto clonado.
nt.bas
fuente
El paso 4 es lo que necesitaba para obtener un proyecto copiado y fallado en la implementación después de simplemente copiar la carpeta, creo
Jim Factor
2
Importante: si está utilizando los servicios de Google Play. También asegúrese de actualizar los nombres de los paquetes en el archivo google-services.json.
Gihan Gamage
¡Gracias por esta respuesta! Una adición: también actualicé rootProject.name en settings.gradle.
alexx
16

El propósito de esto es que pueda tener una segunda versión de mi aplicación que sea compatible con anuncios en la tienda de aplicaciones.

Actualmente la mejor forma de hacerlo es sin copiar el proyecto.
Puede hacerlo usando diferentes sabores en su build.gradlearchivo.

 productFlavors {
        flavor1 {
            applicationId = "com.example.my.pkg.flavor1"
        }
        flavorAdSUpport {
            applicationId = "com.example.my.pkg.flavor2"
        }
  }

De esta manera, solo tiene una copia de los archivos y puede manejar la diferencia fácilmente.

Gabriele Mariotti
fuente
14

Esta es una combinación de la respuesta de nt.bas y el paso 9 de la respuesta de Civic con ejemplos visuales porque me tomó un tiempo descubrir qué se pretendía ya que soy nuevo en Android Studio. Ha sido probado en Android Studio 3.2.1.

  1. Abra el proyecto que desea clonar en Android Studio. (En este ejemplo, el nombre del proyecto anterior era test5y el nombre del nuevo proyecto era test6)

  2. En el panel de descripción general de archivos de la izquierda, haga clic en: Proyecto (donde actualmente podría decir Android).

fig0

  1. Haga clic con el botón derecho del mouse en el proyecto dentro del panel del explorador de archivos y haga clic en refactorizar> clonar.

Figura 1

  1. Cambie el "Nuevo nombre" a su nuevo nombre de proyecto y haga clic en Aceptar.

Figura 2

  1. Archivo> abrir> Nueva ventana> Seleccione su nuevo proyecto> Abrir en una nueva ventana de proyecto. En la nueva ventana, espere hasta que finalice la línea inferior del estudio de Android / diga: "Gradle Sync Finished".

dieciséis

17

14

  1. En el panel de descripción general del archivo y haga clic con el botón derecho del mouse (RMB) en: app.java/ <el nombre de su antiguo proyecto (no el de prueba, no el de androidTest, solo el en blanco)>

fig8

  1. Ingrese el nuevo nombre de su paquete y seleccione ambas marcas de verificación, haga clic en refactorizar.

fig9 fig10

  1. En la barra inferior izquierda, haga clic en "Refactorizar".

fig12

  1. Abra app / res / values ​​/ strings.xml y cambie el nombre del proyecto anterior (por ejemplo, test5) por el nuevo nombre del proyecto en línea:

    <string name="app_name">test5</string>
    

Fig. 3

  1. Abra Gradle scripts / build.gradle (Módulo: aplicación) y cambie la línea a la misma línea con el nombre de su nuevo proyecto:% fig4

    applicationId "com.example.a.test5"    
    

fig4

  1. Aparecerá una línea amarilla en la parte superior de su panel de código, solicitando la sincronización de Gradle. Pulsa "sincronizar ahora".

fig5

  1. en la barra superior, presione construir> Proyecto limpio.

fig13

  1. Si dice "Construcción de Gradle terminada" en la parte inferior izquierda, haz clic en "Construir> Reconstruir proyecto".

fig14

fig15

  1. Ahora debería poder compilar y ejecutar su proyecto nuevamente (si funcionó en primer lugar).
a
fuente
1
¡gran respuesta! también se puede usar archivo> nuevo> proyecto de importación en lugar de proyecto abierto en el paso 5 anterior. Eso fue lo que funcionó para mí.
Sasuke Uchiha
8

Estoy siguiendo estos pasos y hasta ahora ha funcionado:

  1. Copie y pegue la carpeta como solía hacerlo.
  2. Abra Android Studio (v3.0.1).
  3. Seleccione Abrir un proyecto existente.
  4. Cierre el mensaje que aparecerá con el título: "Importar proyectos de Gradle".
  5. En el lado izquierdo de la pestaña de Android, vaya a: aplicación -> java -> seleccione la primera carpeta (la carpeta de su proyecto)
  6. Refactor => Cambiar nombre ... (Shift + F6)
  7. Cambiar el nombre del paquete, seleccionar ambas opciones: ponga el nombre de la nueva carpeta en minúsculas.
  8. Refactorizar
  9. Seleccione: Sincronizar proyecto con archivos Gradle en la barra de herramientas.
  10. Construir => Proyecto limpio
  11. Vaya a aplicación -> res -> valores -> strings.xml y cambie el nombre de la aplicación en la segunda línea.
Cívico
fuente
Además, si usa alguna API de servicio de Google, como Maps, Firebase y demás ... Asegúrese de eliminar los archivos que tienen referencias de nombres de paquetes antiguos (como google_services.json en app / src). Consulte esto para conocer todo el procedimiento.
varun
3

El apéndice del gitbook de prácticas del curso de conceptos básicos para desarrolladores de Android incluye pasos para copiar y cambiar el nombre de un proyecto existente:

https://google-developer-training.gitbooks.io/android-developer-fundamentals-course-practicals/content/en/appendix_utilities.html#copy_project

Bryon Nicoson
fuente
Me funcionó muy bien con Android Studio 3.3, con un proyecto complejo que tiene muchos módulos y dependencias. Gracias.
nat101
1
Ese enlace está en sus últimas etapas: "Este sitio se eliminará el 31 de julio de 2019".
Peter Mortensen
3

Al refactorizar el nombre del paquete en Android Studio, es posible que deba hacer clic en la pequeña rueda dentada situada a la derecha junto al navegador package / android / project / etc - y desmarcar 'paquetes intermedios vacíos compactos' para ver cada parte del nombre del paquete como un directorio propio. Luego, para directorios individuales, refactorice.

Esto es importante si necesita cambiar todas las partes del nombre del paquete. Por ejemplo, de com.example.originalproject a org.mydomain.newproject. De lo contrario, la operación de refactorización / cambio de nombre solo le permitirá cambiar "originalproject" a "newproject", y dejará "com.example" sin cambios. Hay un buen video que muestra esto: https://www.youtube.com/watch?v=dMK-RBVLeIY

gnyrfta
fuente
2

Cuando copie su proyecto, también deberá eliminar los archivos de compilación intermedia remanente original (alguna clase de actividad $ 4.) de los directorios C: ... \ AndroidStudioProjects (nombre_proyecto) \ app \ build \ intermediates \ classes \ release ... directorios. De lo contrario, es casi seguro que tendrá fallas de compilación para el nuevo proyecto si intenta compilar el proyecto copiado. La refactorización no resolverá esto.

Mark Rossmiller
fuente
2

Lo intenté desde nt.bas answer y gnyrfta answer, que funciona bien para mí.

Citando la respuesta de nt.bas :

Si está utilizando la versión más reciente de Android Studio, puede dejar que le ayude en esto.

Nota: He probado esto solo en Android Studio 3.0.

El procedimiento es el siguiente:

  1. En la vista del proyecto (esto viene junto con las capturas y la estructura en el lado izquierdo de la pantalla), seleccione Proyecto en lugar de Android .
    El nombre de su proyecto será la parte superior del árbol (junto con las bibliotecas externas).
    Seleccione su proyecto y luego vaya a Refactor -> Copy....
    Android Studio le preguntará el nuevo nombre y dónde desea copiar el proyecto. Proporcione lo mismo.

  2. Una vez finalizada la copia, abra su nuevo proyecto en Android Studio.
    Los paquetes seguirán estando bajo el nombre del proyecto anterior.
    Esos son los paquetes de clases de Java, el ID de la aplicación y todo lo demás que se generó con el nombre del paquete anterior.
    Necesitamos cambiar eso.
    En la vista del proyecto, seleccione Android .
    Abra el subdirectorio de Java y seleccione el paquete principal.
    Luego haga clic derecho sobre él y vaya a Refactorentonces Rename.
    Android Studio le dará una advertencia diciendo que varios directorios corresponden al paquete que está a punto de refactorizar.
    Haga clic en Rename packagey no Rename directory .
    Después de este paso, su proyecto ahora está completamente bajo el nuevo nombre.

  3. Abra el archivo res / values ​​/ strings.xml y cambie el nombre del proyecto.
  4. Un último paso es limpiar y reconstruir el proyecto; de lo contrario, cuando intente ejecutar su proyecto, Android Studio le dirá que no puede instalar el APK (si ejecutó el proyecto anterior).
    Entonces Build -> Clean projectentonces Build -> Rebuild project.

Hasta este punto, solo cambia el nombre de todo el proyecto . Para cambiar el nombre del paquete, debe seguir la respuesta de gnyrfta, que se describió como:

Al refactorizar el nombre del paquete en Android Studio, es posible que deba hacer clic en la pequeña rueda dentada situada a la derecha junto al navegador package / android / project / etc - y desmarcar 'paquetes intermedios vacíos compactos' para ver cada parte del nombre del paquete como un directorio propio. Luego, para directorios individuales, refactorice.


PD: si tienes un

No se pudo finalizar la sesión: INSTALL_FAILED_INVALID_APK: Split lib_slice_0_apk se definió varias veces

¡Simplemente elimine la carpeta de compilación de appmodule y reconstruya el proyecto!

¡Esto solucionará el problema!

Mukyuu
fuente
2

Estoy usando Android 3.3 y así me funcionó:

1 - Elija la vista del proyecto

2 - Haga clic derecho en el nombre del proyecto, que está en la raíz del proyecto y elija la opción refactor -> copy, le mostrará una ventana para elegir el nuevo nombre.

3 - Después del paso 2, Android te hará un nuevo proyecto, tienes que abrir ese nuevo proyecto con el nuevo nombre

4 - Cambie el nombre de la aplicación en "string.xml", está en "app / res / values ​​/ string.xml"

Ahora lo tienes, el mismo proyecto con un nuevo nombre. Ahora es posible que desee cambiar el nombre del paquete, se describe en los siguientes pasos

(opcional) Para cambiar el nombre del paquete principal

5 - vaya a "app / java", habrá tres carpetas con el mismo nombre, una principal, una (androidTest)y una (test), haga clic derecho en la principal y elija format -> rename, le avisará con una advertencia de que varios directorios corresponden a ese paquete , luego haga clic en "Cambiar el nombre del paquete". Elija un nuevo nombre y haga clic en refactorizar. Ahora, debajo de la vista de código, aquí habrá una vista previa de refactorización, haga clic en "Hacer refactorización"

6 - Vaya a la opción "construir", haga clic en "Limpiar proyecto", luego en "Reconstruir proyecto".

7 - Ahora cierre el proyecto y vuelva a abrirlo.

vinicius de novaes
fuente
1
¡Por fin, una solución que no tarda 20 minutos! Funcionó al primer intento sin errores extraños. Para el paso 5, simplemente refactoricé-> renombré mi paquete.
Muñeco de nieve
2

Vaya a la carpeta de origen donde está su proyecto.

  1. Copie el proyecto y el pasado y cambie el nombre.
  2. Abra Android Studio y actualice.
  3. Ir a ->Settings.gradle.
  4. Incluir ':your new project name '
Bassem Qoulta
fuente
2

Requisito y prueba en Android Studio 3.5

Asegúrese de que su antiguo proyecto funcione correctamente con su biblioteca de estudio de Android existente.

  1. Copie el directorio del proyecto y cambie el nombre de la carpeta para el nuevo nombre del proyecto, por ejemplo, Bramara
  2. Abra su nuevo proyecto existente con Android Studio 3.5. Después de abrir el proyecto completo, navegue a 1: Proyecto -> Proyecto. Puede ver que su proyecto solo tiene dos directorios que apuntan a la carpeta del proyecto nuevo y la carpeta del proyecto anterior. Cierre su proyecto.
  3. Edite appl.iml en el directorio nuevo proyecto -> aplicación -> appl.iml usando el editor de texto. Reemplace todo el nombre del proyecto antiguo por el nuevo Nombre del proyecto.
  4. Vuelva a abrir su nuevo proyecto existente. Vaya a 1: Proyecto -> Proyecto. Es posible que vea que su proyecto solo tiene un directorio.
  5. Vaya a 1: Proyecto -> Paquetes. haga clic derecho en su componente -> Refactorizar -> Cambiar nombre.
  6. Aparecerá un mensaje de advertencia. ¡Asegúrese de que todos los cambios se apliquen a la nueva carpeta del proyecto! Después de eso, elija Renombrar paquetes, por ejemplo, com.dedetok.bramara.
  7. Vaya a 1: Proyecto -> Android. Abra la aplicación -> manifiestos -> AndroidManifest.xml. Corrija la actividad de la aplicación con el nuevo nombre del paquete. Cambie el nombre de su aplicación por uno nuevo.
  8. Abra Gradle Scripts -> build.gradle (Módulo: aplicación), cambie su applicationId a un nuevo proyecto, por ejemplo, com.dedetok.bramara y sincronice el proyecto.
  9. Limpia y reconstruye tu nuevo proyecto.
  10. Su nuevo proyecto está listo para editar / cambiar.

Nota: si adb run mostrando actividad no encontrada, edite su configuración de ejecución / depuración. El módulo debe apuntar a la aplicación del módulo, por ejemplo, app.

Dedetok
fuente
En el paso 7 no pude encontrar app-> manifiestos. Así abrí Proyecto-> Proyecto y desde la carpeta src abrí el manifiesto. El estudio pidió sincronizar para editar el archivo y luego estuvo bien
makkasi
1

La forma MÁS FÁCIL (y definitivamente la más rápida) de hacerlo requiere WINRAR, 7zip o software de archivo similar:

  1. Busque la carpeta del proyecto en el explorador de Windows: haga doble clic para abrir esta carpeta.

  2. Cree una nueva carpeta y asígnele el nombre "Copia de seguridad".

  3. Mientras todavía está en la carpeta del proyecto, seleccione todos los archivos / carpetas, excepto la carpeta "copia de seguridad".

  4. Haga clic con el botón derecho y seleccione "agregar al archivo" o "crear archivo" (el comando será diferente según su software de archivo)

  5. Nombra el archivo y haz clic en Aceptar.

  6. Mueva este archivo a la carpeta "Copia de seguridad".

Listo: para abrir el archivo de copia de seguridad, abra la carpeta "Copia de seguridad" y haga clic con el botón derecho en el archivo de copia de seguridad. Seleccione "Extraer" o cree una nueva carpeta en la que se extraerán los archivos y presione "Aceptar", luego abra el proyecto como lo haría normalmente desde Android Studio, etc.

Tulio Pérez
fuente
0

Tuve problemas con lo siguiente:

https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/appendix/appendix-utilities/appendix-utilities.html

en la versión de Android Studio: 3.3.2

hasta que maté el archivo .idea / workspace.xml.

$ cp -rv Testcopysource/ TestCopyDest
$ rm TestCopyDest/.idea/workspace.xml
$ stdio.sh & # Run Android Studio on Linux

Antes de hacer eso, Android Studio seguiría apuntando a la carpeta de origen original y todos los cambios de nombre se aplicaron a los archivos de origen originales (dentro de Testcopysource en mi ejemplo anterior).

Daveb
fuente
0

A partir de febrero de 2020, para Android Studio 3.5.3, la respuesta más simple que encontré es este video.

Nota 1: A las 01.24 aparece la pestaña "Buscar" a continuación. Haga clic en "Do Refactor" y continúe como en el video.

Nota 2: Si tiene archivos Java / Kotlin "Marcados como texto sin formato", debe modificar el nombre del paquete en la parte superior manualmente, es decirpackage com.example.thisplaceneedstobemanuallyupdated

Nota 3: tenga cuidado con los casos de letras al cambiar el nombre, como en el video.

Nota 4: Si desea actualizar el nombre del proyecto en la barra de título de la ventana del proyecto, modificar rootProject.name = 'YourProjectName'dentro " settings.gradle archivo" bajo " Scripts Gradle directorio".

Xfce4
fuente