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

Java 如何更改Android应用程序的包名,java,android,Java,Android,我的密钥库已损坏,因此Android Market要求我重命名应用程序并重新提交。然而,每当我去编辑清单和整个文件中的包名时,它都会给我带来大量错误 更改应用程序名称的正确方法是什么?如果您使用的是Eclipse,您可以在Android的开发者网站上尝试。它们专门用于GestureBuilder示例,但应适用于我所知的任何应用程序: [H] 以下是在Eclipse中如何做到这一点: 右键单击软件包名称(src/com.android.signature.builder) 选择重构>重命名并更改名

我的密钥库已损坏,因此Android Market要求我重命名应用程序并重新提交。然而,每当我去编辑清单和整个文件中的包名时,它都会给我带来大量错误


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

如果您使用的是Eclipse,您可以在Android的开发者网站上尝试。它们专门用于GestureBuilder示例,但应适用于我所知的任何应用程序:

[H] 以下是在Eclipse中如何做到这一点:

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

  • 另外,请确保记得重命名包本身以及文件中对它的引用。在Eclipse中,您可以在左侧的文件资源管理器窗口/树视图中看到包的名称。根据我的经验,Eclipse有时会有点芬尼奇,而且不可靠(例如,留下对旧包名的零散引用)。

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

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

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

    以下是如何在Eclipse中做到这一点:

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

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

  • 右键单击包名称,然后单击“折射器>重命名”
  • 右键单击项目名称安卓工具>重命名应用程序包
  • 在清单中手动设置之前步骤未更改的包名称

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

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="new.package.name"
        .....
    </manifest>
    
    
    
  • 首先更改清单文件中的包名
  • src
    文件夹中重新计算>重命名包的名称,并在
    重命名子包中打勾
  • 这就是你所做的一切
  • 没有日食:

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

  • 跨所有源文件更新包导入语句

  • 重命名所有文件夹以匹配包名称。文件夹位置:
    A.银行标识代码/类别
    Bgen
    Csrc

  • 在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\u example/oldapp并将BuildConfig.class放在那里。我不知道为什么来自同一位置的R.java没有这个问题。我怀疑BuildConfig.java是在中自动生成的。)预编译,但R.java不是)

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

    *除了dex和apkbuilder之外,我的版本中没有留下任何错误或警告。这两个版本都状态为“找到已删除的目标文件”,没有关于该文件是什么的详细信息。不确定这是否出现在每个版本中,在我弄乱包名之前是否存在,或者这是否是我删除的结果,我缺少了一个步骤。

    备选方案:

  • 打开AndroidManifest.xml
  • 在清单标记中更改package=“NEW NAME”
  • 福洛
    defaultConfig {
        applicationId "com.a.bc"
        minSdkVersion 13
        targetSdkVersion 19
    }
    
    defaultConfig {
            applicationId "org.mydomain.mynewapp" //update the new package name here
            minSdkVersion 15
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }