ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

值得庆幸的是,他们自 2010 年以来添加了一个“神奇的更改包名称按钮” - 请参阅 @Marc Bernstein 的回答 - stackoverflow.com/a/4025633/383414
谢谢理查德·勒...
Android Studio Rename Package 的可能重复项
3年前被问到时很难重复...

M
Marc Bernstein

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


刚刚尝试过 Eldar 的,它奏效了——但我相信这也会奏效。
这是正确的答案,但是当前的 ADT 已损坏,并且会破坏对您的 R 类的所有引用。因此,您必须单击每个单独的文件,执行“ctrl-shift-o”(或 Mac 上的 cmd-shift-o),然后选择名为 R 的新包(不要选择 android.R!事情会严重崩溃),然后点击保存。 ...并重复每个单独的文件:(
@Adam 只是为了让我们的生活更轻松,单击项目并使用 ctrl+shift+o,它将更新所有类/文件中的导入引用:D
这只是挽救了我的生命,因为我丢失了可笑的存储密钥并不得不重新发布我的应用程序。
我发现每个文件顶部声明的文件包名称与新包不匹配,也不匹配它们所在的文件夹。您可以右键单击仍然具有旧包名称的源文件夹(至少我的总是如此),选择“重构”,然后选择“重命名”并将其重命名为新包。然后,eclipse 会将文件夹和每个文件的包声明重命名为新的包名,就像它最初应该做的那样。
e
eldarerathis

如果您使用的是 Eclipse,则可以尝试从 Android 的开发者网站获取 these instructions。它们专门用于 GestureBuilder 示例,但据我所知应该适用于任何应用程序:

[H] 以下是在 Eclipse 中执行此操作的方法:右键单击包名称 (src/com.android.gesture.builder)。选择 Refactor > Rename 并更改名称,例如更改为 com.android.gestureNEW.builder。打开清单文件。在 标记内,将包名称更改为 com.android.gestureNEW.builder。打开两个 Activity 文件中的每一个,然后按 Ctrl-Shift-O 添加缺少的导入包,然后保存每个文件。在模拟器上运行 GestureBuilder 应用程序。

此外,请确保您记得重命名包本身以及文件中对其的引用。在 Eclipse 中,您可以在左侧的文件资源管理器窗口/树视图中看到包的名称。以我的经验,Eclipse 有时可能会有点笨拙且不可靠(例如,留下对旧包名称的杂散引用)。


这可能是最好的方法,没有神奇的,更改包名按钮。
就在这里。请参阅@Marc Bernstein 的回答。
我认为最初的提问者也不需要更改 Java 包名称。马克的应该是公认的答案。
第一步不是“右键单击”,应该是在菜单中选择“重构”。
您可能需要更改 res->values=>strings.xml 中的 app_name
E
El Bert

以下是在 Eclipse 中执行此操作的方法:

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

Link to post

https://i.stack.imgur.com/BR7sm.png


C
Community

Android Studio(老实说,您应该使用它)中,在 project structure -> Refactor -> Rename... 中的包名称上将包名称更改为 right-clicking

然后它提供了重命名目录或包的选项。选择包。目录应该跟上。输入您的新包名称,然后单击重构。它将更改所有导入并为您删除多余的导入。你甚至可以让它在评论和字符串等中为你修复它。

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

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

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

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

之后:在您应用的 build.gradle 中添加/编辑新的 applicationId。即(在我的情况下为 com.a.bc):

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

原始帖子和更多评论here


奇怪的是,当我这样做时,它没有给出选择目录/包......只有“模块名称”......
如果我右键单击根目录,它现在对我也一样。至少对我来说,这不是我的实际包名。如果你的包名是 com.a.bc,那么在根目录下面应该有一个叫做 bc 的目录。在那里你会得到不同的选择。现在,我正在获取目录或模块。尝试模块。如果它破坏了任何东西,您可以随时撤消它(Ctrl+z 应该这样做)。
谢谢..狗屎,你的意思是“.idea”目录还是“app”目录?我刚刚发布了一个解释性 Q .. stackoverflow.com/questions/23786361/… 啊.. 当我单击我的“应用程序”文件夹时,我现在看到“选择重构目录/模块”.. hoy caramba!
@JoeBlow 右键单击文件夹 java 下的 package
“老实说,您应该使用 Android Studio” 请记住,这个问题是在 2010 年提出的,而 AS 直到 2013 年才宣布,更不用说作为稳定版本发布(2014 年)。当然,现在的用户应该使用 AS。 :-)
c
clusterflux

没有 Eclipse:

更改 AndroidManifext.xml 中的包名称和 Activity 名称以及它显示在 .xml 文件中的任何其他位置(自定义视图名称等) 跨所有源文件更新包导入语句 重命名所有文件夹以匹配包名称。文件夹位置:垃圾箱/类 b. c. src 更新 build.xml 中的项目名称(或您的 apk 名称不会更改)删除 bin/classes/com/example/myapp/ 中的所有 .class 文件(如果您跳过此步骤,文件不会在此过程中被重写build 和 dex 处理“类名不匹配路径”错误时遇到一堆麻烦删除 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 个步骤是我为更改包名并成功构建 * 所做的。可能有更好的方法来处理步骤 5 和 6,通过 dex 命令更新路径,或者通过编辑项目根目录中的 classes.dex.d。我不熟悉 dex 或者是否可以删除/编辑 classes.dex.d 所以我采用了删除 .class 文件的方法,我知道这些文件会在构建中重新生成。然后我检查了 classes.dex.d 以查看仍需要更新的内容。

*我的构建中没有留下任何错误或警告,除了 dex 和 apkbuilder 都声明“找到已删除的目标文件”,但没有具体说明该文件是什么。不确定这是否出现在每个构建中,是否在我弄乱我的包名称之前就存在,或者它是否是我删除的结果并且我错过了一个步骤。


我像您一样解决了重命名问题,但进行了简化:删除 bin 和 gen 文件夹。此外,在修改隐藏文件 .project 之前,我无法在 Eclipse 中导入重命名的项目,它在 下具有旧项目名称
D
Deepak Sharma

按着这些次序:-

右键单击项目。

转到 Android 工具。

单击重命名应用程序包。

更改应用程序包名称。

完毕


这可行,但您还应该重构基本 src 文件夹包名称。
M
Movsar Bekaev

在 Android Studio 1.3 中最快的方法是:

更改清单中的包名称转到模块设置[F4]-> Flavors,在 Application Id 中写入相同的名称。创建具有该名称的新包:[右键单击-> 新建-> 包] 选择项目的所有 java 文件,然后继续 [右键单击-> 重构-> 移动-> {选择包}-> 重构]

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


使用这种方法,R 通过重构保持不变。所以import com.app.myapp.R DOES NOT 改成新的包名,还得一一取...
@OWADVL,当您将文件移动到新包时,R 会自动更改,当您移动 .java 文件时,Android Studio 会自动执行重建,我每天都这样做,只要我保持这个顺序,我就不会更改 .java 文件中的任何内容手动
但在 Eclipse 中,我们可以更改应用包 ID,而无需更改所有代码的包。该向导将为您重命名 BuildConfig & R 引用。我很困惑AS中不存在同样的东西。
e
erdomester

更改包名称是一件令人头疼的事情。看起来不同的方法适用于不同的人。我的解决方案快速且无错误。看起来不需要清洁或重置 Eclipse。

右键单击包名称,然后 Refractor > Rename。右键单击项目名称 Android 工具 > 重命名应用程序包。手动设置 Manifest 中未被前面步骤更改的包名称。


m
m0j0

Bernstein 有方法,使用 Eclipse 工具“重命名应用程序包”,即使事后您也可能需要进行一些清理。此外,当您对项目进行更改时,Eclipse 有时会丢失对事物的跟踪。您可能必须使用“清理项目”工具(在“项目”菜单下)。如果这不起作用,您可能必须关闭并重新启动 Eclipse。 Voo-doo 解决方案,但 Eclipse 可以这样。


r
robisaks

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


S
Sathirar

首先在清单文件中更改包名 Re-factor > Rename the name of the package in src folder and put a check for rename subpackages 这样就完成了。


我尝试使用 Marc Bernstein 的 Android 工具->重命名应用程序包,但它给了我错误。这更简单,尽管我必须在更改后修复一些东西
L
LikeYou

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

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

M
MapleLover

选择:

打开 AndroidManifest.xml 在清单标签中更改 package="NEW NAME"。


P
PassKit

右键单击 Project >Android Tools >Rename Application Package Go to src 并右键单击您的主包 >Refactor >Rename 转到清单文件并更改您的包名称。


D
Dudeist

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

与我的项目一起工作的唯一方法:

重命名它 - 文件/重命名并检查所有复选框检查未重命名的位置,我在其中一个布局中的旧名称仍在工具中:context=".. 创建新工作区导入项目到新工作区

对我来说它有效,只有解决方案。


R
Raul Pinto

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

通过使用 Refactor->Move,IntelliJ 更新对 BuildConfigR 的所有引用。

最后,我更新了我在 gradle.build 中找到的所有 applicationId[s]。我点击了清洁项目,制作和重建项目。从我的手机中删除该应用程序并点击“播放”。这一切都解决了,所以重构很容易而且很快。


A
Anup

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

https://i.stack.imgur.com/2KETr.png

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

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

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


H
Hanisha

在您的 Android 工作室中,在项目面板中,有齿轮图标“单击它”。取消选中 Compact Empty Middle Packages 现在包目录已被分解,即单独的目录。选择要重命名的目录。右键单击该特定目录。选择重构,然后重命名选项。对话框已打开,重命名。输入新名称后,单击重构。然后单击底部的 Do Refactor。然后 android studio 将更新所有更改。现在打开 build.gradle 文件并更新 applicationId 并同步它。现在转到清单文件并重命名包。重建您的项目。你完成了:)