在 Android Studio 中使用新名称复制现有项目

Posted

技术标签:

【中文标题】在 Android Studio 中使用新名称复制现有项目【英文标题】:Copy existing project with a new name in Android Studio 【发布时间】:2013-08-21 21:13:58 【问题描述】:

我想复制我的 android 项目并使用相同的文件创建一个新项目,但名称不同。这样做的目的是让我可以拥有应用商店中支持广告的应用的第二个版本。

我在这里找到了这个答案:

Android - copy existing project with a new name

但它适用于 Eclipse。如何在 Android Studio 中执行此操作?

【问题讨论】:

【参考方案1】:

您指定的链接中的步骤也应该适用于 Android Studio。只需复制整个模块文件夹(使用文件管理器)并给它一个新名称。现在打开它并使用Refactor -> Rename(右键单击要重命名的项目)重命名您的模块和包。

有关在 IntelliJ/Android Studio 中重构的详细信息,请参阅 this。

【讨论】:

Windows 10 说文件路径太长。我有 aniversary 更新并使用组策略编辑器技巧来实现长文件路径。似乎资源管理器仍然无法处理长文件路径。见:superuser.com/questions/1114181/… 我试过这个,但是当我运行项目时,Android Studio 正在我的设备上覆盖我的旧应用程序。我想在设备上同时拥有这两个应用程序(用于测试 chrome 自定义选项卡)。如何强制 Android Studio 在设备上同时拥有这两个应用程序? 我选择了基础包文件夹并点击了重构 -> 重命名,“包重命名”选项出现错误,然后我成功执行了“文件夹重命名”选项。 还必须重构和重命名 de iml 文件!!!,如果你不这样做,它将不起作用【参考方案2】:

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

【讨论】:

这很重要,因为我忘记修改 build.gradle 文件中的 applicationId 并最终在 Play Store 上发布了一个包名错误的应用 这更多的是评论而不是实际答案。 这是关键!【参考方案3】:

如果您使用的是最新版本的 Android Studio,您可以让它在这方面为您提供帮助。

注意:我仅在 Android Studio 3.0 中对此进行了测试。

程序如下:

    在项目视图中(屏幕左侧带有捕获和结构),选择 Project 而不是 Android。 您的项目名称将位于树的顶部(与外部库一起)。 选择您的项目,然后转到Refactor -> Copy...。 Android Studio 会询问您的新名称以及您要将项目复制到哪里。提供相同的。

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

    打开 res/values/strings.xml 文件,更改项目名称。 不要忘记在“Gradle 构建模块:app”中更改您的应用程序 ID。 最后一步是清理并重建项目,否则在尝试运行项目时,Android Studio 会告诉您无法安装 APK(如果您运行了之前的项目)。 所以Build -> Clean project 然后Build -> Rebuild project。 现在您可以运行新的克隆项目了。

【讨论】:

第 4 步是我需要在复制我认为的文件夹后部署失败、复制的项目 重要:如果您使用的是 google play 服务。还要确保更新 google-services.json 文件中的包名称。 感谢您的回答!一个补充:我还在 settings.gradle 中更新了 rootProject.name。【参考方案4】:

作为free3dom pointed out,这是应该做的:

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

这似乎没有任何问题。

【讨论】:

我想知道你是如何在 android studio 之外进行 gradle 同步的 按照这个,但没有做第 4 步,只是打开 Android Studio 并导入复制的项目。还从复制的项目中删除了 .iml 文件,因为创建了一个新文件。工作得很好!谢谢! @nommer 你在说哪个.iml??我可以在project/prjectname.iml 找到一个,在project/app/app.iml 找到另一个,哪个必须删除? @Veeru 你能解释一下第五步吗?? @HirdeshVishwdewa 好问题!我前一段时间做过,我不记得了,但我猜它是 project/*.iml【参考方案5】:

这是 nt.bas 的答案和 Civic 答案的第 9 步与视觉示例的组合,因为我是 Android Studio 的新手,所以我花了一段时间才弄清楚它的意图。已在 Android Studio 3.2.1 中测试。

    在 Android Studio 中打开您要克隆的项目。 (在本例中,旧项目名称为test5,新项目名称为test6

    在左侧文件概览窗格中,单击:项目(当前可能显示为 android)。

    鼠标右键单击文件资源管理器窗格中的项目,然后单击重构>克隆。

    将“新名称”更改为您的新项目名称,然后单击确定。

    文件>打开>新窗口>选择您的新项目>在新项目窗口中打开。在新窗口中,等到 Android Studio 的底线完成/说:“Gradle Sync Finished”。

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

    输入包的新名称并选中两个复选标记,单击重构。

    在左下栏中单击“进行重构”。

    打开 app/res/values/strings.xml 并将旧项目的名称(例如 test5)更改为该项目的新名称:

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

    打开 Gradle scripts/build.gradle (Module:app) 并将该行更改为与您的新项目名称相同的行:%fig4

    applicationId "com.example.a.test5"

    代码窗格顶部会出现一条黄线,请求 gradle 同步。按“立即同步”。

    在顶部栏中,按 build>Clean project。

    如果左下方显示“Gradle build 已完成”,则单击“Build>Rebuild project”。

    现在您应该能够再次编译和运行您的项目(如果它首先工作的话)。

【讨论】:

很好的答案!也可以在上面的步骤 5 中使用文件>新建>导入项目而不是打开项目。这对我有用。 第8步,在AndroidStudio:3.1.4上,需要打开“search\find”视图才能看到“Do Refactor”按钮【参考方案6】:

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

目前最好的方法是不复制项目。 您可以在 build.gradle 文件中使用不同的风格。

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

通过这种方式,您只有文件的副本,您可以轻松处理差异。

【讨论】:

【参考方案7】:

我正在按照这些步骤操作,到目前为止它一直在工作:

    照旧复制并粘贴文件夹。 打开 Android Studio (v3.0.1)。 选择打开现有项目。 关闭将弹出标题为“Import Gradle Projects”的消息。 在 Android 选项卡左侧转到:app -> java -> 选择第一个文件夹(您的项目文件夹) 重构 => 重命名...(Shift + F6) 重命名包,同时选择两个选项 - 将新文件夹的名称用小写字母。 进行重构 选择:在工具栏中将项目与 Gradle 文件同步。 构建 => 清理项目 转到app -> res -> values -> strings.xml,并在第2行更改应用名称。

【讨论】:

此外,如果您使用任何 Google 服务 API,例如 Maps、Firebase 等...请务必删除包含旧包名称引用的文件(例如 app/src 中的 google_services.json)。 Please refer this for the entire procedure.【参考方案8】:

在 Android Studio 4.0 中,您只需要这几个步骤:

在文件管理器中复制项目目录并重命名为新目录 输入并在app/build.gradle中更改applicationId 在 Android Studio 中打开现有的新项目 打开一个类文件并突出显示要更改的包名称部分(例如,从com.domain.appnamecom.domain.newappname 突出显示appname) 右键单击它->“重构”->“重命名” 选择“重命名包” 在对话框中选择“范围:所有地方”并单击“预览”或“重构”

【讨论】:

【参考方案9】:

Android Developer Fundamentals Course Practicals gitbook 的附录包括复制和重命名现有项目的步骤:

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

【讨论】:

使用 Android Studio 3.3 对我来说非常好用,它是一个包含许多模块和依赖项的复杂项目。谢谢。 该链接已失效:“该网站将于 2019 年 7 月 31 日被删除。”【参考方案10】:

我已经从 nt.bas answer 和 gnyrfta answer 尝试过,这对我来说效果很好。

引用nt.bas answer:

如果您使用的是最新版本的 Android Studio,您可以让它在这方面为您提供帮助。

注意:我仅在 Android Studio 3.0 中对此进行了测试。

程序如下:

    在项目视图中(屏幕左侧带有捕获和结构),选择 Project 而不是 Android。 您的项目名称将位于树的顶部(与外部库一起)。 选择您的项目,然后转到Refactor -&gt; Copy...。 Android Studio 会询问您的新名称以及您要将项目复制到哪里。提供相同的。

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

    打开 res/values/strings.xml 文件,更改项目名称。 最后一步是清理并重建项目,否则在尝试运行项目时,Android Studio 会告诉您无法安装 APK(如果您运行了之前的项目)。 所以Build -&gt; Clean project 然后Build -&gt; Rebuild project

到目前为止,您只需重命名整个项目名称。要重命名包装名称,您需要遵循 gnyrfta answer 描述为:

在 Android Studio 中重构包名时,您可能需要点击 package/android/project/etc - navigator 右侧的小齿轮并取消选中“compact empty middle packages”才能看到每个部分包名作为自己的目录。然后对个别目录进行重构。


PS:如果你有一个

未能完成会话:INSTALL_FAILED_INVALID_APK:拆分 lib_slice_0_apk 被多次定义

只需删除 appmodule 的 build 文件夹并重新构建项目!

这将解决问题!

【讨论】:

【参考方案11】:

转到您的项目所在的源文件夹。

    复制项目并粘贴过去并更改名称。 打开 Android Studio 并刷新。 转到-&gt;Settings.gradle。 包括':your new project name '

【讨论】:

【参考方案12】:

在 Android Studio 中重构包名时,您可能需要点击 package/android/project/etc - navigator 右侧的小齿轮并取消选中“compact empty middle packages”才能看到每个部分包名作为自己的目录。然后对个别目录进行重构。

如果您需要更改包名称的所有部分,这很重要。例如,从 com.example.originalproject 到 org.mydomain.newproject。否则,重构/重命名操作只会让您将“originalproject”更改为“newproject”,而“com.example”将保持不变。有一个很好的视频显示了这一点:https://www.youtube.com/watch?v=dMK-RBVLeIY

【讨论】:

【参考方案13】:

也许这会对某人有所帮助。

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

复制项目目录到新项目目录 从 Android Studio,打开新的项目目录 通过更新 rootProject.name='newProjectName' 来编辑 settings.gradle 文件。 然后同步 gradle 到此,项目已准备就绪,您可以开始更新清单、包、google-services.json 和所有其他内容

【讨论】:

【参考方案14】:

当您复制项目时,您还需要从 C:...\AndroidStudioProjects(project_name)\app\build\intermediates\classes\release.. 中删除原始剩余的中间构建 (someActivity$4.class) 文件。 . 目录。 否则你几乎肯定会为新项目构建失败 如果您尝试编译复制的项目。重构不能解决这个问题。

【讨论】:

【参考方案15】:

我使用的是 Android 3.3,这就是它对我的工作方式:

1 - 选择项目视图

2 - 右键单击​​项目根目录中的项目名称并选择选项refactor -&gt; copy,它会提示您选择新名称。

3 - 在第 2 步之后,Android 将为您创建一个新项目,您必须使用新名称打开该新项目

4 - 在“string.xml”中更改应用程序的名称,它在“app/res/values/string.xml”中

现在你有了它,同一个项目有了一个新名称。现在您可能想要更改包的名称,它在以下步骤中进行了描述

(可选) 更改主包的名称

5 - 进入“app/java”,会有三个同名文件夹,一个主文件夹,一个(androidTest)和一个(test),右键主文件夹,选择format -&gt; rename,它会提示您有多个目录对应于该包的警告,然后单击“重命名包”。选择一个新名称并单击重构。现在,在代码视图下面,这里将是一个重构预览,点击“Do refactor”

6 - 转到“build”选项,点击“Clean project”,然后点击“Rebuild project”。

7 - 现在关闭项目并重新打开它。

【讨论】:

终于,一个不需要 20 分钟的解决方案!第一次尝试没有奇怪的错误。对于第 5 步,我只是重构->重命名了我的包。【参考方案16】:

Android Studio 3.5 的要求和测试

确保您的旧项目与您现有的 android studio 库一起正常工作。

    复制项目目录并将文件夹重命名为新项目名称,例如布拉马拉 使用 Android Studio 3.5 打开您现有的新项目。打开项目完成后,导航到 1:项目 -> 项目。您可能会看到您的项目只有两个目录指向新项目文件夹和旧项目文件夹。关闭您的项目。 使用文本编辑器在目录新项目 -> app -> appl.iml 上编辑 appl.iml。将所有旧项目名称替换为新项目名称。 重新打开现有的新项目。导航到 1:项目 -> 项目。您可能会看到您的项目只有一个目录。 导航到 1:项目 -> 包。右键单击您的组件 -> 重构 -> 重命名。 将弹出警告消息。确保所有更改都将应用于新项目文件夹!之后选择重命名包,例如com.dedetok.bramara。 导航到 1:项目 -> Android。打开应用程序 -> 清单 -> AndroidManifest.xml。将应用程序活动修复为新的包名称。将您的应用程序名称更改为新名称。 打开 Gradle Scripts -> build.gradle(模块:app),将您的 applicationId 更改为新项目,例如 com.dedetok.bramara 并同步项目。 清理并重建您的新项目。 您的新项目已准备好进行编辑/更改。

注意:如果 adb run 显示未找到活动,请编辑您的运行/调试配置。模块应指向模块应用程序,例如应用程序。

【讨论】:

在第 7 步我找不到 app->manifests。因此,我打开了 Project->Project 并从 src 文件夹中打开了清单。工作室要求同步以编辑文件,然后就可以了【参考方案17】:

截至 2020 年 2 月,对于 Android Studio 3.5.3,我找到的最简单的答案是 this 视频。

注意 1: 在 01.24,“查找”标签出现在下方。单击“Do Refactor”并按照视频中的方式继续。

注意 2:如果你有任何 Java/Kotlin 文件“标记为纯文本”,你需要手动修改顶部的包名,即package com.example.thisplaceneedstobemanuallyupdated

注意 3:重命名时要注意字母大小写,就像视频中一样。

注意4:如果要更新项目窗口标题栏上的项目名称,修改“settings.gradle”文件中的rootProject.name = 'YourProjectName' >Gradle Scripts”目录。

【讨论】:

【参考方案18】:

最简单(而且绝对是最快)的方法需要 WINRAR、7zip 或类似的存档软件:

    在 Windows 资源管理器中找到项目文件夹 - 双击打开此文件夹。

    创建一个新文件夹并将其命名为“备份”。

    仍在项目文件夹中时,选择所有文件/文件夹,“备份”文件夹除外。

    右键单击并选择“添加到存档”或“创建存档”(命令会因您的存档软件而异)

    为存档命名并点击确定。

    将此存档移动到“备份”文件夹。

您已完成 - 打开备份存档,打开“备份”文件夹并右键单击备份文件。选择“提取”或创建一个新文件夹,文件将被提取到其中并点击“确定”,然后像往常一样从 Android Studio 等打开项目。

【讨论】:

【参考方案19】:

我遇到了以下问题:

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

在 Android Studio 版本上:3.3.2

直到我杀死了 .idea/workspace.xml 文件。

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

在此之前,Android Studio 仍将指向原始源文件夹,并且所有重命名都应用于原始源文件(在我上面的示例中的 Testcopysource 中)。

【讨论】:

【参考方案20】:

在 android studio 4.1.1 中:

第 1 步 您在文件资源管理器中复制项目并为其命名。

第 2 步 在 android studio 中打开复制的项目,然后转到 Gradle Scrips 文件并将项目名称更改为 settingsbuild 文件中的新名称。

第 3 步 转到 properties Gradle 文件并添加以下行: android.overridePathCheck=true

【讨论】:

在 Android Studio 4.2.1 中更新您可以省略第 2 步。【参考方案21】:

最简单的方法是将项目文件上传到 Github 存储库,然后将存储库克隆或再次下载到您的计算机上

【讨论】:

以上是关于在 Android Studio 中使用新名称复制现有项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中更改我的项目名称? [复制]

如何在 Android Studio 3.4 中复制和重命名项目?

如何在 Android Studio 中更改项目名称

如何在android studio中更改包名? [复制]

Android Studio编译旧图标

Android Studio“清洁项目”不起作用