Android-使用新名称复制现有项目


68

使用Eclipse。假设我在eclipseworkspace中有一个项目“ ProjectA”(在ProjectA文件夹中)。我想复制项目,但是要使用新名称(ProjectB),并调整新项目中的所有引用。对于我认为是基本操作有所不同的方法,我找不到太多帮助。我想尝试原始设计/代码的变体,创建副本似乎是解决该问题的明显方法。

有任何建议请。

Answers:


93

今天我也需要它,而我的同事也提供了答案。

  1. 您只需将项目复制到新项目(ctrl + c和ctrl + v)。

  2. 您在清单中更改包名称

  3. 之后,您必须使用重构重命名您的主程序包。不要忘记选择。

  4. 只需在清单中更改您的应用程序名称

    应用程序android:icon =“ @ drawable / icon” android:label =“新名称

希望我没有忘记什么,对您有帮助


1
请参阅@iwpSoftware的重要附录-粘贴之前必须先打开原始项目。
LarsH'3

2
检查AndroidManifest.xml(eclipse ADT总是搞砸!!),然后将版本更改为1,修复<Application android:name =“” />,最后在源代码中查找并替换所有导入的com.old.R ; 使用import com.new.R; 清洁并建造
max4ever 2012年

1
如果您还分叉一个应用程序,也不要忘记更改android:authorities(和ContentProvider AUTHORITY),否则它不会与原始应用程序安装在同一设备上,因为新的密钥库,Google会映射密钥更改,因此库必须具有相同的Android支持库版本是项目还是无法编译
max4ever 2013年

3
一个小提示-应用名称实际上可以在字符串资源文件中定义,并且在清单文件中看起来像“ android:label =“ @ string / app_name””。在这种情况下,您只需在字符串资源文件中更新此条目-即'<string name =“ app_name”>新名称</ string>
Mick

1
如果您使用的是Android Studio,似乎还必须更改应用程序gradle文件中的applicationId,以便重构工作。
matthias_b_nz

23

我只想在Mur Votema的列表中添加一个项目:

5)不要忘记打开要复制的项目!

我花了几分钟时间才发现它不适用于封闭的项目。:-)


1
谢谢,这是我丢失的关键!如您所见,如果您要复制的项目已关闭,则“粘贴”会引发错误,并且没有任何迹象表明您可以做任何事情来使其正常工作。
LarsH 2012年

17

如果您使用的是Eclipse,而您要做的就是克隆您的Android项目并为其赋予新的项目名称,只需执行复制/粘贴操作(Ctrl-C和Ctrl-V-上面穆尔答案中的步骤1)。粘贴完成后,Eclipse将询问您新的项目名称。Eclipse项目名称和目录与应用程序名称和程序包无关。


2
最好的答案在这里。但是请记住,您需要打开项目才能以这种方式复制和粘贴它。
mwengler

@mwengler您所说的“开放”项目和“封闭”项目是什么意思?
Yatharth Agarwal

2
@YatharthROCK在项目浏览器中,您应该看到类似文件夹的图标,每个项目一个。右键单击该图标,出现的菜单将包括Open Project当前关闭Close Project的项目或当前打开的项目。您可能一直未打开所有项目,如果Close Unrelated Projects右键单击当前正在处理的项目,则可能会希望提高性能。
mwengler 2012年

当我这样做时,我所有的Java文件最终都出现与R.java文件相关的错误,我发现它不再自动生成,我该如何重新获得R.java文件。第一次导入是com.xxx。 .myoldappname.RI将其更改为导入com.xxx.newappname.R,但仍然出现错误,因为如果我可以重新生成R.java,则不会重新生成所有错误,并且所有错误都将消失,那么我该怎么办我得到R.java文件来重建。我已经尝试了多次清理和重建,但无所作为
Jeff Janes 2014年

5

强制性任务:

  1. 在Eclipse中,复制并粘贴项目。(给项目起一个新的名字)
  2. 在清单中,更新包名称并保存。(更新启动配置)
  3. 重构并重命名包名称。(更新参考)

可选任务:

  1. 在清单中,更改应用程序标签和图标,以便
    将应用程序安装到设备上后不会与第一个混淆。
  2. 重构并重命名Java文件名,这样它们就不会与原始项目文件混淆。
  3. 如果您在项目中使用了UTF-8之类的编码(以便处理英语以外的语言),则可能需要编辑并保存这些文件,以便正确显示其字体。

注意:如果您在执行第二项任务之前执行了第三项任务,则会将某些不希望的导入添加到您的java类中。然后,您将需要删除这些导入。


3

现在有一个自动工具,它是ADT的一部分。

  1. 确保原始项目在Eclipse中打开,复制并粘贴到新名称
  2. 右键单击新项目> Android工具>重命名应用程序包

完成了


1

如上所述,您要做的就是复制并粘贴项目并将其重命名为[“ myApp.11”],但有时此功能会在Eclipse中出错。当您拥有多个版本的jdk时,就会发生这种情况。要解决此日食,请使用下划线将_jdk17.2重命名为旧版本的jdk,然后重试。如果您不需要这些版本,请删除它们。


0

我注意到的另一件事是,android:label="@string/app_name"当您在“应用程序”列表中查看复制的应用程序时(Settings > Applications > Manage applications如果将其更改为)时,如果保留它,则以某种方式保留原始应用程序名称android:label="Your App Name"它似乎可以正常工作。

另外,请确保通过删除旧图标并导入新图标来正确更改图标。


这是因为@string/app_name引用values目录中.xml文件中的字符串。这是由Android SDK设置的模板,因此,在更改应用程序名称时,您也应该更改此字符串。
d3dave

0

我转到C:/(所有路径均不同)上的工作区文件夹,复制了项目文件夹(项目A),并粘贴了新名称(项目B)。在资源管理器中更改名称。然后,通过Eclipse,使用新名称(项目B)创建了一个新的android项目。不同的方式。


0

我只是想在我正在使用的代码中苦苦挣扎之后添加:

不要在您的JAVA代码中明确使用软件包名称。您可能需要重命名您的项目。示例是:getResource()并设置位图源等等

看来我对软件包名称的引用不正确。它的名称被明确地用作String(例如“ com.pakge.mypkg”),而不是Context.getPackageName()。

尝试以任何方式尝试使用此方法,您可以按照我刚才提到的方法使用它,可能对您不起作用...尝试从其他对象访问方法名称“ getPackageName()”。


0

我必须回答不作任何评论,因为声誉不够高-说我同意@jengelsma是最好的答案,只需复制和粘贴,但要注意(隐藏的)SVN文件(在.svn文件夹中)!除非您想要与其他项目相同的引用,否则您将不需要这些引用。

小组>断开连接,然后在新副本上选中“同时删除SVN元数据”,以执行此操作。


0

只想增加一些要点:-如果两个项目都将要安装在同一台计算机上,请确保新项目和旧项目的软件包名称必须不同。

还可以在Mainfest.xml中修改相同的内容


0

我使用了月食Eclipse,我尝试如下复制现有项目(Project_A)

  1. 创建一个新的Java项目(其名称为Project_B)
  2. 右键单击Project_B(以弹出上下文菜单)
  3. 选择菜单项“导入...”(显示“导入”对话框)
  4. 在“选择导入源”字段下的列表中,以扩展项目“常规”
  5. 双击子项“文件系统”(显示“文件系统”页面)
  6. 在“从目录”字段中输入“ Project_A”目录的路径(或单击“浏览...”按钮以查找并选择“ Project_A”目录)
  7. 选中“来自目录”字段下的“ Project_A”目录的复选框
  8. 要查看“进入文件夹”字段是否将文件夹名称显示为“ Project_B”(如果没有,请单击“浏览...”按钮以查找并选择“ Project_B”)
  9. 单击“完成”按钮(因为Project_B为空,不再需要关心)
  10. 将Project_A的所有内容复制到Project_B中,我们可以将Project_B作为Project_A运行(如果需要,我们可以重构Project_B)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.