如何更改Android应用程序的程序包名称


133

我的密钥库已损坏,因此Android电子市场要求我重命名该应用并重新提交。但是,每当我在清单和整个文件中编辑软件包名称时,都会出现大量错误。

更改应用程序名称的正确方法是什么?


3
值得庆幸的是,他们增加了一个“神奇,变化包名称按钮”自2010年-看到@Marc伯恩斯坦的答案- stackoverflow.com/a/4025633/383414
理查德·勒Mesurier

感谢理查德·勒...
DoruChidean


3年前被问到时很难重复...
Ryan Ternier

Answers:


102

如果您使用的是Eclipse,则可以尝试从Android开发人员网站上获取这些说明。它们专门用于GestureBuilder示例,但据我所知应适用于任何应用程序:

[H] ere如何在Eclipse中执行此操作:

  1. 右键单击程序包名称(src/com.android.gesture.builder)。
  2. 选择“重构”>“重命名”并更改名称,例如 com.android.gestureNEW.builder
  3. 打开清单文件。在 <manifest>标签内,将包名称更改为 com.android.gestureNEW.builder
  4. 打开两个活动文件中的每个文件,然后按Ctrl-Shift-O添加缺少的导入包,然后保存每个文件。在模拟器上运行GestureBuilder应用程序。

另外,请确保您记得重命名程序包本身以及文件中对它的引用。在Eclipse中,您可以在左侧的文件浏览器窗口/树视图中查看包的名称。以我的经验,有时Eclipse可能有点精巧和不可靠(例如,遗漏了对旧软件包名称的引用)。


这可能是最好的方法,没有神奇的更改包名称按钮。
Blindstuff 2010年

13
就在这里。参见@马克·伯恩斯坦的答案。
马克·菲利普

我认为原始提问者也不需要更改Java包名称。马克应该是公认的答案。
mpellegr

第一步不是“右键单击”,应在菜单中选择“重构”。
德庆

您可能需要更改app_nameres-> values => strings.xml
Deqing

302

有一种方法可以在Eclipse中轻松更改软件包名称。右键单击您的项目,向下滚动到Android Tools,然后单击“重命名应用程序包”。


2
刚刚尝试了Eldar's,它就起作用了-但我敢肯定,它也能起作用。
艾伦·金里奇

4
这是正确的答案,但是当前的ADT已损坏,并且会破坏对R类的所有引用。因此,您必须单击每个单独的文件,然后执行“ ctrl-shift-o”(在Mac上为cmd-shift-o),然后选择以新程序包命名的R(请勿选择android.R! ),然后点击保存。...并对每个个人文件重复:(
亚当

@Adam只是为了让我们的生活更轻松,请单击该项目并使用ctrl + shift + o,它将更新所有类/文件中的导入参考:D
Blaze Tama 2014年

自从我失去了可笑的存储密钥并不得不重新发布我的应用程序以来,这才挽救了我的生命。
2014年

3
我发现每个文件顶部声明的文件包名称与新包都不匹配,也不与它们所在的文件夹匹配。您可以右键单击仍具有旧包名称的源文件夹(至少我的总是如此),选择“重构”,然后选择“重命名”,并将其重命名为新软件包。然后,eclipse会将文件夹和每个文件的软件包声明重命名为新的软件包名称,就像它首先应该所做的那样。
Androidcoder 2014年

52

您可以在Eclipse中执行以下操作:

  1. 右键单击程序包名称(src/com.android.gesture.builder)。
  2. 选择Refactor > Rename并更改名称,例如 com.android.gestureNEW.builder
  3. 打开清单文件。在<manifest>标签内,将包名称更改为com.android.gestureNEW.builder
  4. 打开两个Activity文件中的每个文件,然后执行Ctrl+ Shift+ O添加缺少的导入包,然后保存每个文件。
  5. GestureBuilder在模拟器上运行该应用程序。

链接到帖子

更新 超级简单的方法,右键单击您的项目... 在此处输入图片说明


2
很棒的方法!
杜德(Dude)2012年

2
更简单的解决方案。这应该已经被接受;)
Nomade 2015年

12

说实话,在您应该使用的Android Studio中,通过right-clickingproject structure -> Refactor -> Rename...

然后,它提供了重命名目录或程序包的选项。选择包。该目录应遵循。输入新的程序包名称,然后单击“重构”。它将更改所有导入,并为您删除多余的导入。您甚至可以在注释和字符串等中为它修复它。

最后,在顶部的AndroidManifest.xml中相应地更改包名称。否则,到处都是抱怨R.whatever的错误。

另一个非常有用的解决方案

首先用所需的名称by right clicking on thejava文件夹-> new-> package 创建一个新包。

然后,选择所有类并将其拖动到新包中。AndroidStudio将在任何地方重构软件包名称。

之后:在应用程序的build.gradle添加/编辑applicationId中添加新的。即(com.a.bc以我为例):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

原始文章和更多评论在这里


奇怪的是,当我这样做时,它没有给出选择目录/包...仅给出了“模块名称” ...
Fattie 2014年

1
如果我右键单击根目录,它现在对我也有作用。至少对我而言,这不是我的实际包裹名称。如果软件包名称为com.a.bc,则在根目录下应有一个名为bc的目录。那是您获得不同选择的地方。现在,我正在获取目录或模块。尝试模块。如果它破坏了任何内容,您始终可以撤消它(Ctrl + z应该这样做)。
2014年

谢谢..狗屎,您的意思是“ .idea”目录还是“ app”目录?我刚刚发布了一个解释性问:.. stackoverflow.com/questions/23786361/… 啊..当我单击“应用”文件夹时,我现在看到“选择重构目录/模块”...。
Fattie

@JoeBlow右键单击package文件夹下java
Abu Shumon 2014年

“老实说,您应该使用Android Studio。”请记住,这个问题是在2010年提出的,而AS直到2013年才宣布,更不用说以稳定的版本(2014)发行了。当然,如今的用户应该使用AS。:-)
LarsH

8

没有Eclipse:

  1. 更改AndroidManifext.xml中包名称和活动名称,以及在.xml文件中显示的其他任何位置(自定义视图名称等)

  2. 更新所有源文件中的程序包导入语句

  3. 重命名所有文件夹以匹配程序包名称。文件夹位置:
    一个。箱/班
    b。gen
    c。src

  4. 更新build.xml中的项目名称(否则您的apk名称不会更改)

  5. 删除bin / classes / com / example / myapp /中的所有.class文件(如果跳过此步骤,则在构建过程中文件不会被重写,并且dex给处理“类名与路径不匹配”错误带来了很多麻烦

  6. 删除gen / com / example / myapp / BuildConfig.java(我不知道为什么在步骤3a中删除BuildConfig.class不会导致dex更新其路径,但是直到我删除BuildConfig.java之前,它一直在重新创建gen / com / oldapp_example / oldapp并将BuildConfig.class放在那里,我不知道为什么来自同一位置的R.java不会出现此问题。我怀疑BuildConfig.java是在预编译时自动生成的,但R.java不是)

以上6个步骤是我更改包名并成功构建*的工作。可能有更好的方法通过dex命令更新路径,或者通过编辑项目根目录中的classes.dex.d来处理步骤5和6。我不熟悉dex,或者是否可以删除/编辑classes.dex.d,所以我采用了删除.class文件的方法,我知道该文件将在构建中重新生成。然后,我检查了classes.dex.d,以查看仍然需要更新的内容。

*在我的构建EXCEPT dex和apkbuilder中均未留下任何错误或警告,均声明“找到已删除的目标文件”,没有有关该文件的详细信息。不知道是否在每个版本中都显示了它,是否在我弄乱软件包名称之前就出现了,还是由于删除而导致的结果而我错过了一步。


我像您一样解决了重命名问题,但有一个简化:删除bin和gen文件夹。另外,在修改隐藏文件.project之前,我无法在Eclipse中导入重命名的项目,它在<name>下具有旧项目名称
Jose_GD 2013年

6

跟着这些步骤:-

  • 右键单击该项目。
  • 转到Android工具。
  • 单击重命名应用程序包。
  • 更改应用程序包名称。

完成


1
这可行,但是您还应该重构基本src文件夹的程序包名称。
ashishduh

6

在Android Studio 1.3中最快的方法

  1. 在中更改包名称 manifest
  2. 转到Module Settings[F4]-> Flavors,输入Application Id相同的名称。
  3. 使用以下名称创建新软件包: [right-click-> new-> package]
  4. 选择项目的所有Java文件,然后继续 [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS:如果您不遵循此顺序,则最终可能会用新的导入和一堆编译时错误一一更改所有的Java文件,因此顺序非常重要。


1
使用此方法,R通过重构保持不变。因此,导入com.app.myapp.R不会更改为新的程序包名称,而您必须一一接受...
OWADVL

@OWADVL,当您将文件移至新程序包时,R会自动更改,当您移至.java文件时,Android Studio会自动执行重建,我每天都会执行此操作,只要保持此顺序,我就不会更改.java文件中的任何内容手动
Movsar Bekaev 2015年

但是在Eclipse中,我们可以更改应用程序包ID,而无需更改所有代码的包。该向导将为您重命名BuildConfig和R引用。我感到困惑的是,AS中不存在相同的东西。
汤姆

5

更改程序包名称很麻烦。看起来不同的方法适用于不同的人。我的解决方案是快速且无错误的。看起来不需要清洁或重置日食。

  1. 右键单击包装名称,然后单击Refractor>重命名。
  2. 右键单击项目名称Android工具>重命名应用程序包。
  3. 在清单中手动设置以前步骤未更改的软件包名称。

3

Bernstein提供了使用Eclipse工具“重命名应用程序包”的方法,即使事实发生后,您也可能必须进行一些清理。而且,当您对项目进行更改时,Eclipse有时会失去对事物的跟踪。您可能必须使用“清理项目”工具(在“项目”菜单下。)如果这样不起作用,则可能必须关闭并重新启动Eclipse。Voo-doo解决方案,但是Eclipse可以做到这一点。


3

我发现最简单的解决方案是使用Regexxer将“ com.package.name”替换为“ com.newpackage.name”,然后正确重命名目录。超级容易,超级快速。


3
  1. 拳头更改清单文件中的软件包名称
  2. 重构>重命名src文件夹中的软件包名称,并在其中打勾rename subpackages
  3. 这样就完成了。

我尝试使用Marc Bernstein的Android工具->重命名应用程序包,但它给了我错误。这很简单,尽管更改后我不得不修复一些问题
david-hoze 2013年

2

对于没有Eclipse的用户,还有另一种解决方案,只需用新的包名替换旧的包名,即可更改AndroidManifest.xml中<manifest>标记中的包属性。注意:您还必须在项目中手动调整所有相关的导入语句和相关的文件夹。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>

1

选择:

  1. 打开AndroidManifest.xml
  2. 在清单标记中更改package =“ NEW NAME”。

1
  1. 右键单击项目> Android工具>重命名应用程序包

  2. 转到src并右键单击您的主包> Refactor> Rename

  3. 转到清单文件并更改包名称。


1

我花了几个小时尝试所有解决方案。我确定问题出在我的代码中-apk启动,但是在使用不同的课程和活动时出现一些错误。

处理我的项目的唯一方法:

  1. 重命名-文件/重命名并选中所有复选框
  2. 检查未重命名的地方,我仍然使用旧版式之一在tools:context =“。中。
  3. 创建新的工作区
  4. 将项目导入新的工作区

对我来说,这是唯一的解决方案。


1

因此,将IntelliJ与Android(Studio)插件一起使用是:我到AndroidManifest.xml了最顶层,并通过右键单击->重构->重命名来更改包名称。我们当时的软件包名称有四个部分a.b.c.d,只有新的部分a.b.c。因此,我将前三个重命名。然后,我转到生成源的目录(app\build\generated\source\r\development\debug\a\b\c\d),右键单击R类,然后将其Refactor-> Move [d]移至更高的包。同样的,BuildConfigapp\build\generated\source\buildConfig\development\debug\a\b\c\d

通过使用Refactor-> Move,IntelliJ更新了对BuildConfig和的所有引用R

最后,我更新了在gradle.build中找到的所有applicationId [s]。我点击了“清理项目”,“制作并重建项目”。从我的手机中删除了该应用,然后点击“播放”。一切都完成了,因此重构既简单又快速。


1

在Android Studio 1.2.2中说如果要更改com.example.myapp为,org.mydomain.mynewapp 您可以按照以下屏幕快照中显示的每个目录中的步骤进行操作。它将为您提供预览选项,以便您可以在进行任何更改之前进行预览。

转到Refactor -> Rename并输入您的新名字。您必须对每个文件夹都执行此操作,例如com,example和myapp。它将自动更新导入,因此您不必担心。 在此处输入图片说明

同时更新build.gradle不会自动更新的文件。

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

之后,它将要求sync执行此操作。那一切都会好起来的。之后,我可以将APK上传到Google商店。确保您已签署应用程序以将其上传到商店。


0
  1. 在Android Studio的项目面板中,有齿轮图标“单击它”。
  2. 取消选中紧凑空中间包装
  3. 现在,软件包目录已分解,即单个目录。
  4. 选择要重命名的目录。
  5. 右键单击该特定目录。
  6. 选择重构,然后重命名选项。
  7. 对话框已打开,重命名。
  8. 输入新名称后,单击“重构”。
  9. 然后单击底部的“执行重构”。
  10. 然后android studio将更新所有更改。
  11. 现在打开build.gradle文件并更新applicationId并同步它。
  12. 现在转到清单文件并重命名包。
  13. 重建您的项目。
  14. 你完成了:)
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.