【问题标题】:Android Studio - How to copy a project?Android Studio - 如何复制项目?
【发布时间】:2024-01-22 10:11:02
【问题描述】:

好的,我已经进行了一些搜索,并且似乎接近我正在寻找的答案。但是由于害怕弄乱我当前的项目(我是第一次应用程序开发人员,到目前为止我很高兴......我想保持这种状态),我正在寻找一个好的和清晰的逐步了解如何复制项目。我知道某些地方的某些东西需要导入/重命名,但我不确定具体是什么/在哪里。

那么,关于如何做到这一点,是否有一个很好的一步一步,或者我错过了它?如果没有,谁能给我详细解释一下?

编辑:我想复制一个应用项目来制作另一个非常相似的应用项目。我正在为我的应用程序使用 Android Studio。我希望能够使用一个应用程序来制作另一个类似的应用程序(当然有所不同)。因此,我不想创建一个新项目并制作所有 xml/java 文件并添加所有图像等。我希望能够使用我已有的东西并复制它来制作另一个与原始应用程序完全分开的应用程序。我根本没有使用 Eclipse,我将 Android Studio 用于我的应用程序。

【问题讨论】:

  • 某种意义上的复制?将文件保存在 zip 文件中?你用的是eclipse还是Android Studio?
  • 将项目从哪里复制到哪里?你想把eclipse项目复制到android studio吗?请在你的问题中明确说明。
  • 你项目的目录名不必和包名匹配。我只是想复制/克隆一个项目,这样我就可以进行新的修订并保持旧版本完好无损。我尝试了重构之类的东西,但没有用,我遇到了错误,但后来我注意到没有必要。如果我使用我的文件资源管理器复制一个项目并重命名它,我也不必更改包名称或其他任何内容。项目的目录名不必与包名匹配。

标签: android android-studio copy duplicates project


【解决方案1】:

我是 Android 和 AndroidStudio (AS) 的新手,我努力使用 AS 来“克隆”一个项目已经工作了好几个小时。非常感谢上面给出的现有答案让我走上了正确的道路。对于像我这样的新手来说,以下详细的分步说明应该很有用:

  1. 使用 Windows 资源管理器,导航到 Android Studio 项目 目录选择要克隆的项目文件夹;

  2. 复制选中的文件夹;

  3. 将文件夹粘贴到 Android Studio (AS) 项目目录中;

  4. 将粘贴的文件夹重命名为克隆项目的新名称, 说“ViewPager_Shell”;

  5. 启动 Android Studio;

  6. 选择“打开现有的 Android Studio 项目”;

  7. 导航到 AS 项目目录;

  8. 选择文件夹“ViewPager_Shell”;

  9. 确保 AS 的资源管理器窗格在左侧可见 AS 主机;

  10. 为资源管理器窗格选择“Android”视图;

  11. 打开应用程序-> java;现在应该可以看到旧的包名,例如 'com.hulme.owm';

  12. 右键单击旧包名称并选择“重构-> 重命名';

  13. 现在应该会出现一个对话框;左键单击“重命名包”;

  14. 在弹出对话框中,将旧包(例如“owm”)替换为 新的包名(例如 viewpager_shell);

  15. 左键单击“重构”按钮;谨防!! ...一个新的“发现” Factoring Preview 窗格应在 AS 的左下角打开 主框架窗口;

  16. 选择“进行重构”;

  17. 使用 AS 资源管理器窗格,导航到“Gradle 脚本 -> build.gradle(Module:app);

  18. 双击 build.gradle(Module:app) 查看其内容 AS 编辑器窗格;

  19. 将 defaultConfig 'applicationID' 字符串更改为新的完整 包路径(例如“com.hulme.viewpager_shell”);

  20. 使用 AS 资源管理器窗格,导航到“应用程序 -> 清单 -> AndroidManifest.xml';

  21. 双击“AndroidManifest.xml”在 AS 编辑器中查看 窗格;

  22. ma​​nifest 标签下,您应该观察到新包 结果现在出现名称(例如“com.hulme.viewpager_shell”) 之前的重构步骤;

  23. application 标签下,将 android:label 更改为新名称(例如 "ViewPager Shell Demo") - 这是出现在列表中的名称 Android 的“设置 -> 应用程序”提供的已安装应用程序 经理;

  24. activity 标签下,将 android:label 更改为新名称(例如“VP Shell") - 这是显示在应用程序图标下方的名称,它 也是activity的默认ActionBar标题;

  25. 您现在应该能够构建和运行新克隆的项目了。

【讨论】:

  • 谢谢,帮了大忙。
  • 在app>java下选择包名Refactor > Rename > Rename Directory
  • 这一切在 Eclipse 中都非常简单 - 只需在项目资源管理器中复制粘贴项目
  • 谢谢。这对我有帮助。
  • @java 只是复制粘贴在 Eclipse 中也不会做得很好。我们也在 android studio 中这样做,但项目仍然需要更改包名称和应用程序名称
【解决方案2】:

要实现您的目标,请按照以下步骤操作:

  1. 通过导航到文件->关闭来关闭现有项目。
  2. 找出您的 Android Studio 工作区路径并导航到该路径。
  3. 在该目录中,您将拥有该项目。创建一个新文件夹并将该文件夹的内容复制到该新文件夹。 要么 复制现有文件夹和项目文件夹并将其粘贴到您想要的任何位置,然后重命名。

  4. 进入Android Studio,选择Import Existing project,从你保存的路径中选择新文件夹。

这必须足以实现您的目标。希望这对您有所帮助。

【讨论】:

  • 谢谢。但我一直在阅读需要重命名的不同文件/属性。这是真的?如果是这样,究竟需要重命名以适应新项目。您可以更新您的答案以包含此内容吗?我希望新项目具有不同的名称。也许这是一个单独的问题,但您能解释一下更改项目名称需要更改哪些内容吗?
  • 我不明白你所说的文件/属性到底是什么意思,你是指成绩还是别的什么?你可以通过给你想要的任何名字来重命名你的项目,或者你甚至可以通过去 Refactor -> Rename 来重命名
  • 也许折射器的东西会做我想要的。我还没有尝试,但计划很快这样做。对不起,我不是很清楚,但我也不完全理解。在查看项目的复制时,我看到提到在 gradle 和 manifest 中更改一些东西。我希望这会有所帮助。我只是想确保我正确地复制和重命名项目而不会出现问题。
【解决方案3】:

从另一个项目创建 Android STUDIO 项目的步骤
(从 2.3.3 版开始多次测试)


  1. 关闭 Android Studio
  2. 导航到项目目录并找到您要替换的项目文件夹
  3. 复制项目文件夹,粘贴到同一目录并重命名(无空格)
  4. 打开 Android Studio,打开复制/新建项目
  5. 如果提示从项目中删除 Gradle 导入,请选中并单击确定。
  6. 在 app、res、values 下,打开 strings.xml 并更新应用名称。您可能会回到这里编辑更多字符串以适应您的新应用。

    1. MainActivity.java 中,突出显示包名中需要更改的部分(通常是句号之后的最后一部分,例如在包net.androidbootcamp.concerttickets 中,您将选择concerttickets)。

    2. 右键单击选择并选择重构,然后重命名。

    3. 当提示重命名包或重命名目录时,首先选择重命名目录,选中 cmets 并继续。

    4. 请耐心等待,直到左下角显示“[n] 个发生次数已更改”。

    5. 重复步骤 8-10,但这次选择重命名包,然后选中两个框(cmets 和文本出现),然后继续。

    6. 它会在底部给你一个重构预览,点击“Do Refactor”。

    7. 单击同步按钮 (Ctrl+Alt+Y)。

    8. 选择构建,清理项目。

    9. 使用项目搜索和替换来仔细检查您的包名称。我的经验没有问题,但这只是以防万一。重构后,您可能还会注意到完整的包名称现在显示为代码中资源的前缀,例如,“net.androidbootcamp.concerttickets.R.id...”,而不仅仅是“R.id... " 两者都可以,但这可以根据需要通过搜索和替换来快速解决,以提高可读性。如果您执行此步骤,请选择构建和清理项目,然后。

    10. 在进一步修改之前运行应用程序进行测试。

注意:您可能需要为(内部)模拟器重新选择主题或进行其他类似的特定于环境的更改。

【讨论】:

  • 这些步骤对我有用,最后一步是项目搜索/替换旧包名和新包名。
  • 根据@arlomeia 的评论更新了第 15 步 - 谢谢您,先生。
【解决方案4】:

我尝试了上面写的很多答案,发现大多数都不完整 这是我在 ANDROID STUDIO 中复制我的项目的方法,它适用于所有版本的 ANDROID STUDIO

                          **Copy the project**

1 在您计算机的文件系统(不在 Android Studio 中)上,复制 ExistingProject 目录。

2 将复制的目录重命名为 NewProject。

                **Rename and refactor the project components** 

项目的旧名称 ExistingProject 仍会出现在项目新副本中的包和文件中。将应用中的文件和包引用更改为新名称,如下所示:

1 启动 Android Studio

2 点击打开现有的 Android Studio 项目。

3 导航到 NewProject 目录,选择它,然后单击确定。

4 选择 Build > Clean Project 以删除自动生成的文件。

5 单击 1:Project 侧选项卡并从下拉菜单中选择 Android 以在 Project 视图中查看您的文件。

6 展开应用程序> java.

7 右键单击​​ com.example.android.existingproject 并选择 Refactor > Rename。这将打开重命名对话框。

8 将现有项目更改为新项目。

9 检查在 cmets 和字符串中搜索并搜索文本出现并单击重构。

10 出现“查找重构预览”窗格,显示要重构的代码。

11 单击“重构”。

12 展开 res > values 并双击 strings.xml 文件。

13 将 name="app_name" 字符串更改为 New Project。

     **Update the build.gradle and AndroidManifest.xml files**

您创建的每个应用都必须具有唯一的应用 ID,如应用的 build.gradle 文件中所定义。即使上述步骤应该已经更改了 build.gradle 文件,您也应该检查它以确保,并将项目与 gradle 文件同步:

1 展开 Gradle Scripts 并双击 build.gradle (Module: app)。

2 在 defaultConfig 下,检查以确保 applicationID 键的值已更改为“com.example.android.newproject”。如果没有更改,请立即手动更改。

3 点击 Android Studio 窗口右上角的立即同步。

提示:您也可以选择“工具”>“Android”>“使用 Gradle 文件同步项目”来同步您的 gradle 文件。 此外,某些应用程序在 AndroidManifest.xml 文件中包含可读形式的应用程序名称(例如“New Project”而不是 newproject)作为标签。

4 展开 app > manifests 并双击 AndroidManifest.xml。 5 找到下面的语句,如有必要,将标签 if 更改为新应用名称的字符串资源:

android:label="@string/app_name"

【讨论】:

  • 系统而简单,我的项目的重命名克隆在 AS 3.5.2 上不到 5 分钟即可完美运行。谢谢哈沙尔。
  • 使用 AS 3.63 这行得通。 AS 无需编辑即可完成许多步骤。
  • 我在复制代码克隆时遇到了一些问题。我更改了所有重要的东西,但是当我从 PlayStore 下载应用程序时,当我删除名为 APK 的旧包时,它给了我一些错误代码,然后它允许我安装名为 APK 的新包。不知道导致该错误的原因。
【解决方案5】:

在 Android Studio 中复制项目的最简单方法是,

  1. 首先保存或运行您当前的项目。(假设您当前正在运行一个名为“ClientAppOne”的应用程序)。当您运行您的应用程序时,它会自动保存您对其所做的更改。
  2. 然后转到文件所在的文件夹。(假设您已将其保存在 Documents 文件夹中。“ClientAppOne”将显示为 Document 文件夹中的另一个子文件夹)
  3. 复制并粘贴到您想要的文件夹中(再次假设您想在 Document 文件夹中添加新应用程序)。
  4. 它将另一个文件夹显示为“ClientAppOnecopy”,因此,将其重命名为“ClientAppTwo”(重命名为您想要的名称)
  5. 在 Android Studio 中,转到 File->Open->然后选择 Document 并选择 ClientAppTwo 文件夹。
  6. 然后项目将加载到 Android Studio 屏幕上。
  7. 选择Java文件夹下的“com.example.clientappone”。
  8. 右键单击并选择重构->重命名->重命名包->然后添加“ClientAppTwo”->如果您愿意,可以通过单击“Do Prieview”进行预览->单击“Do Refactor”
  9. 然后当你运行它时,它不会创建另一个应用程序文件作为ClientAppTwo。这个应用程序也作为同一个应用程序运行,称为ClientAppOne。所以你必须将ClientAppTwo的gradle文件更改为-

这里我们必须选择build.gradle(Module.app)。然后在这里我们必须将applicationId更改为:applicationId "org.sliit.clientapptwo"

“org.sliit.clientapptwo”是我的包名。

这会帮助你:)

(注意:这里我使用“ClientAppOne”和“ClientAppTwo”仅用于演示)

【讨论】:

    【解决方案6】:

    我已经成功使用了 Andrew 的上述答案(包含 25 个步骤)。但它失败了几次。每次失败时,我都可以通过添加步骤 0 来修复克隆过程

    步骤 0: 在尝试克隆项目之前,对要克隆的项目执行 >Build> Clean Project。项目有时会积累重构遗漏的垃圾。至少这是我对错误信息的解释。 :)

    【讨论】:

      【解决方案7】:

      完成的其他步骤:在 Android Studio 欢迎窗口中更改名称。

      中更改oldPackageName
      1. settings.gradle
      2. oldPackageName(androidTest)
      3. oldPackageName(测试)
      4. oldPackageName.iml 文件有一行 <module external.linked.project.id=

      【讨论】:

        【解决方案8】:

        我是 Android 的新手,但这个有点粗糙的过程对我来说效果很好:

        在 Android Studio 中:

        1. 创建一个新的空项目。
        2. 进入您要克隆的项目。
        3. 在项目结构中,选择所有 Java 类文件 - MainActivity 除外(使用单击,然后单击向上箭头以一次性将它们全部选中),然后将它们复制到剪贴板。
        4. 进入您的新项目,并将 java 类文件粘贴到相应的文件夹中。对 PACKAGE NAME 的任何引用都是自动更新的。
        5. 对其他所有内容(可绘制对象、XML 布局等)重复第 3 步和第 4 步。
        6. 将 MainActivity 源代码从旧项目复制并粘贴到新项目中(手动更改包名称)。
        7. 您可能需要进行更多手动更改(例如,如果您在 XML 中标记任何类名)。
        8. 对于 Manifest,再次复制并粘贴内容,然后手动更改包名称。
        9. 这应该可以构建了。

        【讨论】:

          【解决方案9】:

          我发现其他建议的解决方案太复杂了。我就是这样做的。

          在 Android Studio 中,我在项目视图中选择项目文件夹,右键单击它,选择“重构”和“复制...”(或直接按 F5)。在对话框中,我只是给副本一个新的项目名称并选择一个新文件夹。

          为了选择项目文件夹,您首先必须确保项目视图显示整个项目,而不仅仅是“应用程序”。

          就是这样!只需一步。无需使用文件资源管理器或 Finder 来复制文件。 Android Studio 将所有文件复制到新文件夹中并进行必要的重构。

          我不知道这是否是 Android Studio 的新功能,或者这种方式是否存在其他问题。但是我经常使用这种方法将项目副本创建为“分叉”,以便在不更改原始项目的情况下尝试不同的方法来解决问题,并且似乎工作正常。

          【讨论】:

          • 这看起来很有希望,但是当我尝试时,Android Studio 显示了一个模糊的错误“无法创建类文件”并且结果项目打开时没有可见文件。 (文件被复制了,但 Android Studio 无法识别它们。)
          • 我在一些项目中也遇到过这种情况。尝试对项目进行干净的构建。如果项目使用旧的 Gradle 插件版本或旧的 Gradle 版本,请尝试升级。如果它仍然不起作用,请告诉我。也许我们可以弄清楚是什么原因导致它适用于某些项目,但不适用于其他项目。我目前正在使用带有 Gradle 插件 2.3.3 和 Gradle 3.3 的 Android Studio 2.3.3。
          【解决方案10】:

          我经常遇到这个问题,因为我一直希望能够快速完成您的要求 - 将项目完全复制到新项目并能够返回并运行旧版本。我从来没有尝试过任何步骤数荒谬的答案,因为我总是担心我会错过一些硬编码的路径,最终会损坏我的主副本。

          我的回答:

          在使用 Android 库后,我发现 Android Studio 几乎将应用程序视为库。它们都是模块。因此,您可以创建一个新的空项目,然后转到 File -> New -> Import Module 并从另一个项目浏览到一个应用程序。如果要重命名应用程序,可以在 Project 视图中右键单击并选择 Refactor -> Rename...

          此外,Android Studio 允许您在同一个项目中拥有多个应用。如果您的目的是开发两个类似(如付费与免费)的应用程序,您可以将许多重叠的功能放入一个库中,然后自定义应用程序以使其略有不同。

          【讨论】:

            【解决方案11】:

            上面的答案非常好。我还要添加一件事——在你完成所有重构之后,转到项目结构中的 settings.gradle 并将 rootProject.name 更改为你的项目的新名称。然后 build.gradle 脚本将在文件名后面的灰色描述中反映出来。

            【讨论】: