在Android Studio中复制现有项目并赋予新名称

125

我想复制我的Android项目,并从相同的文件创建一个新项目,只是名称不同。这样做的目的是为了在应用商店中有一个支持广告的第二个版本。

我在这里找到了答案:

Android - copy existing project with a new name

但那是针对Eclipse的。在Android Studio中如何操作?

21个回答

81
您指定的链接中的步骤也适用于Android Studio。只需使用文件管理器复制整个模块文件夹并给它一个新名称。现在打开它并使用重构 -> 重命名(右键单击要重命名的项)来重命名您的模块和包。
有关在IntelliJ/Android Studio中进行重构的详细信息,请参见此处

Windows 10提示文件路径太长。我已经安装了周年更新,并使用组策略编辑器技巧启用了长文件路径。但似乎资源管理器仍无法处理长文件路径。请参见:http://superuser.com/questions/1114181/destination-path-too-long-windows-10-w-anniversary-update - Andrew S
3
我尝试过这个方法,但当我在Android Studio上运行项目时,它会覆盖我设备上的旧应用。我希望能够同时在设备上拥有两个应用程序(以测试Chrome自定义选项卡)。有什么办法可以强制Android Studio将这两个应用同时安装在设备上吗? - Locksleyu
我选择了基础包文件夹并点击了重构->重命名,使用“包重命名”选项出现错误,然后使用“文件夹重命名”选项成功进行了操作。 - Ismail Yavuz
1
还必须重构并重新命名 iml 文件!如果不这样做,它将无法工作。 - JoeCoolman

49

如果你使用的是最新版本的Android Studio,你可以让它来帮助你完成这个过程。

注意:我只在Android Studio 3.0中测试过此方法。

具体步骤如下:

  1. 在项目视图中(左侧屏幕上带有捕获和结构),请选择Project而不是Android
    你的项目名称将是树形结构的顶部(连同外部库)。
    选择你的项目,然后转到Refactor -> Copy...
    Android Studio会问你新名称和想要复制项目的位置。请提供相同的信息。

  2. 复制完成后,在Android Studio中打开你的新项目。
    包仍将位于旧项目名称下。
    这是Java类包、应用程序ID以及使用旧包名生成的所有其他内容。
    我们需要更改这些内容。
    在项目视图中,选择Android
    打开java子目录并选择主包。
    然后右键单击它,转到Refactor,然后选择Rename
    Android Studio会警告您多个目录与您要重构的包相对应。
    点击Rename package不是Rename directory
    完成此步骤后,你的项目现在完全使用新名称。

  3. 打开res/values/strings.xml文件,更改项目名称。
  4. 别忘了在“Gradle Build Module: app”中更改应用程序ID。
  5. 最后一步是清理并重新构建项目,否则当你尝试运行你的项目时,Android Studio会告诉你它无法安装APK(如果你运行了前一个项目)。
    因此,请先Build -> Clean project然后Build -> Rebuild project
    现在你可以运行你的新克隆项目了。

第四步是我需要的,以便在部署时出现故障,只需复制文件夹即可复制项目。 - Jim Factor
3
重要提示:如果您正在使用Google Play服务,请确保在google-services.json文件中更新包名称。 - Gihan Gamage
3
谢谢您的回答!另外补充一点:我还在settings.gradle中更新了rootProject.name。 - alexx

48
如果您使用Gradle - 不要忘记在app/build.gradle文件中更改applicationId属性。

3
非常重要,因为我忘记在build.gradle文件中修改applicationId,结果发布了一个包名错误的应用程序到Play Store上。 - wenjiun
2
这更像是一条评论而不是一个实际的答案。 - The Unknown Dev
那就是关键! - Greelings

42

正如free3dom指出的那样,以下是应该执行的操作:

  1. 使用文件管理器创建副本
  2. 手动编辑应用程序的build.gradle文件以更改包名称(可以使用文件管理器)。
  3. 手动编辑AndroidManifest.xml以更改包名称。
  4. 运行gradle sync
  5. 在Android Studio中打开项目,并重构包名称。
  6. 再次运行gradle sync。

这似乎可以毫无问题地工作。


14
我想知道如何在Android Studio之外进行Gradle同步。 - erdomester
1
按照这个步骤操作,但是没有执行第四步,只是打开了Android Studio并导入了复制的项目。同时删除了复制项目中的.iml文件,因为一个新的文件已经被创建了。效果很好!谢谢! - nommer
@nommer 你说的是哪个 .iml 文件?我可以在 project/prjectname.imlproject/app/app.iml 找到两个文件,应该删除哪一个? - Hirdesh Vishwdewa
@Veeru,你能解释一下第五步吗? - Hirdesh Vishwdewa
@HirdeshVishwdewa 很好的问题!我之前做过,但是现在记不清了,不过我猜应该是 project/*.iml。 - nommer
不要忘记更新位于 build.gradle 中的 defaultConfig 下的 applicationId,否则它将会覆盖之前的项目。 - ralphgabb

23
这是nt.bas的回答和Civic的第9步回答的结合,附有视觉示例,因为我是新手,花了一段时间才找到意图。已在Android Studio 3.2.1中测试。
  1. 在Android Studio中打开要克隆的项目(在此示例中,旧项目名称为test5,新项目名称为test6)。
  2. 在左侧文件概述窗格中,单击:Project(当前可能会显示android)。

fig0

  1. 在文件资源管理器窗格中右键单击项目,然后单击refactor>clone。

fig1

  1. 将“New name”更改为您的新项目名称,然后单击OK。

fig2

  1. 文件> 打开> 新窗口> 选择您的新项目> 在新项目窗口中打开。在新窗口中等待直到Android Studio底部的一行显示“Gradle Sync已完成”。

16

17

14

  1. 在文件概述窗格中:右键单击app.java/< your old project name>(不是com.example.<your old project name>(androidTest),也不是com.example.<your old project name>(test),只是空白的那个)。

fig8

  1. 输入您的软件包新名称并选中两个复选框,然后单击refactor。

fig9 fig10

  1. 在左下角的“Do refactor”中单击。

fig12

  1. 打开app/res/values/strings.xml并将旧项目名称(例如test5)更改为该行中项目的新名称。
<string name="app_name">test5</string>

fig3

  1. 打开Gradle脚本/build.gradle(模块:app),将以下行改为与新项目名称相同的行:%fig4

    applicationId "com.example.a.test5"

fig4

  1. 在代码面板顶部会出现黄色行,要求进行gradle同步,请点击“立即同步”。

fig5

  1. 在顶部菜单栏中,选择build>Clean project。

fig13

  1. 如果左下角显示“Gradle build finished”,则点击“Build>Rebuild project”。

fig14

fig15

  1. 现在,如果一切正常,你应该能够编译和运行你的项目。

1
很棒的答案!在上述第5步中,您也可以使用文件>新建>导入项目而不是打开项目。这对我很有效。 - Sasuke Uchiha
1
第8步,在AndroidStudio 3.1.4上,需要打开“搜索/查找”视图才能看到“重构”按钮。 - Atara

17

这样做的目的是为了让我的应用程序在应用商店中有一个支持广告的第二个版本。

目前最好的方法是不复制该项目。
您可以在build.gradle文件中使用不同的flavor来完成它。

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

以这种方式,您只拥有文件的副本,可以轻松处理它们之间的差异。


9
我按照以下步骤操作,并且目前一切正常:
1. 将文件夹复制并粘贴。 2. 打开Android Studio (v3.0.1)。 3. 选择“打开已有项目”。 4. 关闭弹出的标题为“导入Gradle项目”的消息。 5. 在Android选项卡的左侧,进入app -> java -> 选择第一个文件夹(你的项目文件夹)。 6. 重构 => 重命名... (Shift + F6)。 7. 选择包名,选中两个选项 - 使用小写字母输入新文件夹的名称。 8. 进行重构。 9. 在工具栏中选择: Sync Project with Gradle Files。 10. Build => 清理项目。 11. 进入app -> res -> values -> strings.xml文件,更改第二行的应用程序名称。

此外,如果您使用任何Google服务API,例如Maps、Firebase等等...请务必删除具有旧包名称引用的文件(例如app/src中的google_services.json)。[请参考此处获取完整的操作步骤。] (https://dev59.com/YloT5IYBdhLWcg3w2CMw#38122815) - varun

8

在Android Studio 4.0中,您只需要执行以下几个步骤:

  • 在文件管理器中复制项目目录并重命名新的项目
  • 进入该项目并在app/build.gradle内更改applicationId
  • 在Android Studio中打开新创建的项目
  • 打开一个类文件并高亮显示要更改的包名部分(例如从com.domain.appname更改为com.domain.newappname,高亮显示appname
  • 右键单击它- > "重构" - > "重命名"
  • 选择"重命名包"
  • 在对话框中选择"范围:所有位置"并单击"预览"或"重构"

4

希望这能帮助到某些人。

对于Android Studio 4.x项目,需要执行以下步骤:

  • 将项目目录复制到新的项目目录中
  • 从Android Studio中打开新的项目目录
  • 通过更新rootProject.name='newProjectName'编辑settings.gradle文件。
  • 然后同步gradle
  • 现在你可以开始更新清单、包、google-services.json和其他所有东西了,准备就绪!

3

前往项目所在的源文件夹。

  1. 复制项目并粘贴并更改名称。
  2. 打开Android Studio并刷新。
  3. 进入->Settings.gradle
  4. 包括':你的新项目名称'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接