我的密钥库已损坏,因此Android Market要求我重命名该应用并重新提交。但是,每当我在Manifest和整个文件中编辑软件包名称时,它都会给我带来大量错误。
更改应用程序名称的正确方法是什么?
答案 0 :(得分:302)
有一种方法可以在Eclipse中轻松更改包名称。右键单击您的项目,向下滚动到Android Tools,然后单击Rename Application Package。
答案 1 :(得分:102)
如果您使用的是Eclipse,可以尝试使用Android开发者网站上的these instructions。它们专门用于GestureBuilder示例,但应该适用于任何应用程序,据我所知:
[H]在Eclipse中如何做到这一点:
- 右键单击包名称(
src/com.android.gesture.builder
)。- 选择重构>重命名并更改名称,例如更改为
com.android.gestureNEW.builder
。- 打开清单文件。在 - 的里面
<manifest>
标记,将包名更改为com.android.gestureNEW.builder
。- 打开两个Activity文件中的每一个 然后按Ctrl-Shift-O添加缺少的导入包,然后保存每个包 文件。在模拟器上运行GestureBuilder应用程序。
醇>
另外,请务必记住要重命名包本身以及文件中对它的引用。在Eclipse中,您可以在左侧的文件资源管理器窗口/树视图中查看包的名称。根据我的经验,Eclipse有时可能有点笨拙且不可靠(例如,留下对旧包名称的杂散引用)。
答案 2 :(得分:52)
以下是在Eclipse中如何做到这一点:
src/com.android.gesture.builder
)。Refactor > Rename
并更改名称,例如更改为
com.android.gestureNEW.builder
。 <manifest>
标记内,将包名称更改为com.android.gestureNEW.builder
。 Activity
文件中的每一个并执行 Ctrl + Shift + O 添加缺少的导入包,然后保存每个文件。 GestureBuilder
应用程序。<强>更新强> 超级简单的方法 右键单击您的项目......
答案 3 :(得分:11)
在 Android Studio 中,说实话,您应该使用,在right-clicking
project structure -> Refactor -> Rename...
的包名称
然后提供重命名目录或包的选项。选择包。该目录应该效仿。键入新包名称,然后单击“重构”。它将更改所有导入并删除多余的导入。您甚至可以在评论和字符串等中为它修复它。
最后,在AndroidManifest.xml中相应地更改软件包名称。否则你会在各处抱怨R.whatever。
另一个非常有用的解决方案
首先使用所需名称by right clicking on the
java文件夹创建一个新包 - &gt;新的 - &gt; package.`
然后,选择并将所有类拖到新包中。 AndroidStudio会在任何地方重新计算软件包名称。
之后:在你的应用程序的build.gradle
中添加/编辑带有新应用程序的applicationId。即(在我的情况下com.a.bc
):
defaultConfig {
applicationId "com.a.bc"
minSdkVersion 13
targetSdkVersion 19
}
原帖和更多评论here
答案 4 :(得分:8)
没有Eclipse:
更改AndroidManifext.xml中的包名称和活动名称以及.xml文件中显示的任何其他位置(自定义视图名称等)
更新所有源文件的包导入语句
重命名所有文件夹以匹配包名称。文件夹位置:
一个。斌/班
湾根
C。 SRC
在build.xml中更新项目名称(或者您的apk名称不会更改)
删除bin / classes / com / example / myapp /中的所有.class文件(如果跳过此步骤,则在构建期间不会重写文件,并且dex会给处理带来一些麻烦“类名称确实不匹配路径“错误
删除gen / com / example / myapp / BuildConfig.java(我不知道为什么在步骤3a中删除BuildConfig.class不会导致dex更新它的路径,但直到我删除了BuildConfig。 java它不断重新创建gen / com / oldapp_example / oldapp并将BuildConfig.class放在那里。我不知道为什么来自同一位置的R.java没有这个问题。我怀疑BuildConfig.java是在pre中自动生成的-compile但R.java不是)
以上6个步骤是我为更改我的包名并获得成功*版本所做的。可能有更好的方法通过dex命令来处理步骤5和6以更新路径,或者可能通过编辑项目根目录中的classes.dex.d。我不熟悉dex或者删除/编辑classes.dex.d是可以的,所以我选择了删除.class文件的方法,我知道这些文件将在构建中重新生成。然后我检查了classes.dex.d以查看仍需要更新的内容。
*我的构建中没有错误或警告EXCEPT dex和apkbuilder都声明“找到已删除的目标文件”,但没有关于该文件的具体内容。不确定这是否出现在每个构建中,如果它在我使用我的软件包名称之前就已存在,或者是否是我删除的结果并且我错过了一步。
答案 5 :(得分:6)
请按以下步骤操作: -
完成强>
答案 6 :(得分:6)
在Android Studio 1.3中执行此操作的最快方法:
manifest
Module Settings[F4]-> Flavors
,转到Application Id
,写相同的名称。[right-click-> new-> package]
[Right-click-> Refactor-> Move-> {Select package}-> Refactor]
P.S。如果您不遵循此顺序,您最终可能会使用新导入和一堆编译时错误逐个更改所有java文件,因此顺序非常重要。
答案 7 :(得分:5)
更改包名是一个痛苦的屁股。看起来不同的方法适用于不同的人。我的解决方案快速且无错误。看起来不需要清理或重置日食。
答案 8 :(得分:3)
Bernstein有方法,使用Eclipse工具“重命名应用程序包”,即使事后也可能需要进行一些清理。 此外,当您对项目进行更改时,Eclipse有时会丢失对事物的跟踪。您可能必须使用“清理项目”工具(在“项目”菜单下)。如果这不起作用,您可能必须关闭并重新启动Eclipse。 Voo-doo解决方案,但Eclipse可以这样。
答案 9 :(得分:3)
我发现最简单的解决方案是使用Regexxer将“com.package.name”替换为“com.newpackage.name”,然后正确地重命名目录。超级简单,超级快。
答案 10 :(得分:3)
src
文件夹中重命名包的名称,并勾选rename subpackages
答案 11 :(得分:2)
对于没有Eclipse的用户,还有另一种解决方案,只需更改&lt; manifest&gt;中的包属性即可。 AndroidManifest.xml中的标记,通过替换使用新包名称的旧包名称。 注意:您必须在项目中手动调整所有相关的导入语句和相关文件夹。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="new.package.name"
.....
</manifest>
答案 12 :(得分:1)
替代方案:
答案 13 :(得分:1)
因此,使用带有Android(Studio)插件的IntelliJ是:我在顶部转到AndroidManifest.xml
并通过右键单击更改包名称 - &gt;重构 - &gt;改名。
我们当时的软件包名称包含四个部分a.b.c.d
,新部分仅a.b.c
。
所以我改名前三。然后我转到生成的源(app\build\generated\source\r\development\debug\a\b\c\d
)目录,右键单击R
类和Refactor-&gt;将[d]移动到更高的一个包。与BuildConfig
中的app\build\generated\source\buildConfig\development\debug\a\b\c\d
相同。
通过使用Refactor-&gt; Move,IntelliJ更新了对BuildConfig
和R
的所有引用。
最后我更新了我在gradle.build找到的所有applicationId [s]。我点击了Clean Project,Make和Rebuild Project。从手机中删除了该应用,点击“播放”。这一切都很成功,因此重构很简单,也很快。
答案 14 :(得分: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上传到谷歌商店。确保您已将应用程序签名以将其上传到商店。
答案 15 :(得分:1)
我只是花了几个小时尝试所有解决方案。我确定,问题出现在我的代码中 - 在开始使用apk时,但在使用不同的类和活动时会出现一些错误。
只使用我的项目:
对我而言,它只有解决方案。
答案 16 :(得分:1)
右键单击项目&gt; Android工具&gt;重命名应用程序包
转到src并右键单击主包&gt;重构&gt;重命名
转到清单文件并更改您的包名称。
答案 17 :(得分:0)