我的密钥存储库已损坏,因此安卓市场要求我重命名应用程序并重新提交它。但是,每当我在 Manifest 和整个文件中编辑包名称时,都会出现大量错误。
更改应用程序名称的正确方法是什么?
如果您正在使用 Eclipse,您可以在 Android 的开发者站点上尝试 这些指示。它们是专门针对 GestureBuilder 示例的,但是应该适用于我所知道的任何应用程序:
[ H ]在 Eclipse 中可以这样做: 右键单击软件包名称(src/com.android.gesture.builder)。 选择 Refactor > Rename 并将名称更改为 com.android.gestureNEW.builder. 打开清单文件 标记,将包名称更改为 com.android.gestureNEW.builder. 打开两个 Activity 文件中的每一个 并执行 Ctrl-Shift-O 以添加缺少的导入包,然后保存每个导入包 在模拟器上运行 GestureBuilder 应用程序。
[ H ]在 Eclipse 中可以这样做:
src/com.android.gesture.builder
com.android.gestureNEW.builder
另外,请确保您记得重命名包本身以及文件中对它的引用。在 Eclipse 中,您可以在左侧的文件浏览器窗口/树视图中看到包的名称。根据我的经验,Eclipse 有时候对此有点吹毛求疵和不可靠(例如,留下对旧包名的偏离引用)。
在 Eclipse 中有一种方法可以轻松地更改包名。右键单击您的项目,向下滚动到 Android 工具,然后单击重命名应用程序包。
Bernstein 有这个方法,使用 Eclipse 工具“重命名应用程序包”,你可能需要在事后做一些清理工作。 此外,当您对项目进行更改时,Eclipse 有时会丢失对事物的跟踪。你可能需要使用“清理项目”工具(在“项目”菜单下)如果这不起作用,您可能必须关闭并重新启动 Eclipse。Voo-doo 解决方案,但 Eclipse 可以采用这种方式。
我发现最简单的解决方案是使用 Regexxer将“ com.package.name”替换为“ com.newpackage.name”,然后正确地重命名目录。超级简单,超级快。
在 Eclipse 中可以这样做:
Refactor > Rename
<manifest>
Activity
GestureBuilder
链接到文章
更新 超级简单的方法 右键点击你的项目。
更改软件包名称是件麻烦事。看起来不同的方法适用于不同的人。我的解决方案是快速和无错误的。看起来不需要清洁或重置日食。
对于不使用 Eclipse 的用户,还有另一种解决方案,只需在 AndroidManifest.xml 中更改 < Manif> 标记中的包属性,将使用的旧包名称替换为新包名称。你必须在你的项目中手动调整所有相关的导入语句和相关文件夹。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="new.package.name" ..... </manifest>
src
rename subpackages
没有 Eclipse:
更改 AndroidManifext.xml 中的包名称和活动名称以及显示它的任何其他地方。Xml 文件(自定义视图名等)
更新跨所有源文件的包导入语句
重命名所有文件夹以匹配包名。文件夹位置: 甲类/类 基因 C src
在 build.xml 中更新项目名称(否则 apk 的名称不会更改)
删除所有。Bin/classes/com/example/myapp/中的类文件(如果跳过这个步骤,文件在构建期间不会被重写,并且 dex 会给处理“ class name does not match path”错误带来很多麻烦
删除 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个步骤就是我为了更改软件包名称和获得一个成功的 * build 所做的工作。可能有更好的方法通过 dex 命令更新路径来处理步骤5和步骤6,或者在项目的根目录中编辑 classes.dex.d。我不熟悉 dex 或者是否可以删除/编辑 classes.dex.d,所以我使用了删除的方法。我知道类文件将在构建中重新生成。然后,我检查 classes.dex.d 以查看还需要更新的内容。
* 没有错误或警告留在我的构建 EXCEPT dex 和 apkBuilder 都状态“发现已删除的目标文件”,没有详细说明该文件是什么。不确定这是否出现在每个构建中,是否在我弄乱包名之前就已经存在,或者是否是删除的结果,我错过了一个步骤。
选择:
遵循以下步骤:-
搞定
在 安卓工作室中,老实说,您应该使用 安卓工作室,将 project structure -> Refactor -> Rename...中的包名称上的包名称改为 right-clicking
project structure -> Refactor -> Rename...
right-clicking
然后它提供了重命名目录或包的选项。选择包。目录应该跟着做。键入新的包名称,然后单击“重构”。它将为您更改所有的导入并删除多余的导入。你甚至可以在注释和字符串中为你修复它。
最后 ,将 AndroidManifest.xml 中的包名相应地向顶部更改。否则你会得到错误到处抱怨 R 什么的。
另一个非常有用的解决方案
首先创建一个新包,包含所需的 nameby right clicking on thejava 文件夹-> new-> 包 然后,选择并将所有类拖动到新包中。 AndroidStudio 将在任何地方重构包名称。
首先创建一个新包,包含所需的 nameby right clicking on thejava 文件夹-> new-> 包
by right clicking on the
然后,选择并将所有类拖动到新包中。 AndroidStudio 将在任何地方重构包名称。
之后: 在你的应用程序的 build.gradle中添加/编辑 applicationId 和新的一个。例如(在我的例子中是 com.a.bc) :
build.gradle
com.a.bc
defaultConfig { applicationId "com.a.bc" minSdkVersion 13 targetSdkVersion 19 }
原文及更多评论
右击 Project > Android Tools > Rename Application Package
转到 src,右键单击主包 > Refactor > Rename
转到清单文件并更改包名称。
我只是花了几个小时尝试各种解决方案。我确信,问题在于我的代码启动时出现了一些错误,但是在处理不同的类和活动时出现了一些错误。
只有这样才能完成我的项目:
对我来说,这是唯一的解决办法。
在 Android Studio 1.3中最快的实现方法 :
manifest
Module Settings[F4]-> Flavors
Application Id
[right-click-> new-> package]
[Right-click-> Refactor-> Move-> {Select package}-> Refactor]
附言。如果您不遵循这个顺序,您可能最终改变所有的 Java 文件一个新的导入和一堆编译时错误,所以顺序是非常重要的。
在 Android Studio 1.2.2中 如果要将 com.example.myapp更改为 org.mydomain.mynewapp,请说明 您可以按照下面屏幕快照中显示的每个目录中的步骤操作。它将提供预览选项,以便您可以在进行任何更改之前进行预览。
com.example.myapp
org.mydomain.mynewapp
去 Refactor -> Rename给你的新名字。你必须对每个文件夹都这样做,比如 com,example 和 myapp。它会自动更新导入,这样您就不必担心了。
Refactor -> Rename
还要更新文件 build.gradle,它不会自动更新。
defaultConfig { applicationId "org.mydomain.mynewapp" //update the new package name here minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" }
之后,它会要求 sync做到这一点。那一切都会好起来的。我可以上传我的 APK 到谷歌商店后,这一点。请确保您已经签署您的应用程序上传到商店。
sync
因此,在 Android (Studio)插件中使用 IntelliJ 是: 我在顶部转到 AndroidManifest.xml,通过右键单击-> Refactor-> rename 更改软件包名称。 我们当时的包名称有四个部分 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也是如此。
AndroidManifest.xml
a.b.c.d
a.b.c
app\build\generated\source\r\development\debug\a\b\c\d
R
app\build\generated\source\buildConfig\development\debug\a\b\c\d
BuildConfig
通过使用 Refactor-> Move,IntelliJ 更新对 BuildConfig和 R的所有引用。
最后,我更新了在 gradle.build 中找到的所有 applicationId [ s ]。我点击清洁项目,制造和重建项目。从我手机上删除了应用程序然后点击“播放”。这一切都解决了,所以重构很容易,也很快。