首页 文章

谷歌播放说:“你需要使用不同的包名” - 为什么?

提问于
浏览
10

我已经在google play上发布了一个名为com.mycompany.mygame的应用程序 .

然后我决定发布它的广告免费版本 . 我没有在eclipse中更改包名,因为我注意到在“导出”过程中你有机会将最终的apk设置为你喜欢的任何东西 . 所以我把它设置为com.mycompany.mygameaf - 注意最后的附加“af” . 但是当试图将其上传到市场时,谷歌说:

You need to use a different package name because "com.mycompany.mygame" is already used by one of your other applications

所以现在我很困惑 . 是投诉,因为我不允许有一个apk,这是一个名称,是以前的应用程序的扩展名?或者最终的apk是否知道原始名称是什么?

解决这个问题的最简单方法是什么?

6 回答

  • 0

    无论.apk文件的名称如何,其中的Application内容的包名必须是唯一的 .

    您可以使用refactor-rename来更改它,但要确保更改渗透到清单文件,proguard配置等 .

  • 0

    除了更正清单中的应用程序名称外,我还必须在应用程序的gradle.build文件中更改 applicationId .

    defaultConfig {
        applicationId "com.example.changednameofmyapp"
        ...
    }
    

    此外,如果您使用的是ProGuard,请不要忘记更改proguard-rules.pro中的相应规则

  • 9

    APK的名称无关紧要,它在AndroidManifest文件中的包名称是重要的 .

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.yourcompany.yourapp"
    

    市场上只有一个应用程序名称的应用程序,因此,为了发布您的广告免费版本,您必须更改清单文件中的包名称,例如将af添加到清单中包名称的末尾 .

  • 2

    正如其他答案中所提到的,如果您将所有共享代码和资产放在一个公共库项目中,那么您的开发会更简单,该项目是您的付费版本和免费版本的依赖项 .

    您可能还希望使用新的Gradle构建系统(在Android Studio中),它允许您在运行时动态设置包名称之类的内容 . 它还允许您在构建期间切换资源,这非常方便;您可以使用boolean resource来表示当前应用是否为付费版本 . 这允许您基于对该值的检查来启用/禁用应用程序功能 .

  • 1

    APK的文件名无关紧要,您的应用程序的包名称将用作唯一标识符 - 它位于AndroidManifest.xml的根元素中

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.example.packagename"
       android:versionCode="1"
       android:versionName="1.0" >
    

    当您最初在Eclipse中创建项目时,它会创建一个实际的包结构,该结构与此包名称相匹配,以便将源文件放入其中 .

    您可以通过修改此清单值来实际包装您的包名称,您可以保持文件夹/包结构不变 - 它不需要与您的实际应用程序包名称匹配 .

    或者,在Eclipse中右键单击您的项目,转到“Android Tools”,然后选择“重命名应用程序包”

    执行此操作后,您应该能够提交二进制文件

  • 0

    清单中的包名称用于标识Android和Google Play中的应用程序 . 所以不同的应用需要不同的名称

    最简单的解决方法可能是创建一个没有代码的新包,并将其用作清单中应用程序包的名称 .

    我为解决我的多个应用程序从一个代码库问题所做的工作是将所有应用程序的代码放在库项目中,然后我有几个使用该库的应用程序项目 . 应用程序项目不包含代码,只包含清单和自定义资源 .

相关问题