Android 向已发布应用程序的新版本添加口味

Android 向已发布应用程序的新版本添加口味,android,google-play,android-productflavors,package-name,Android,Google Play,Android Productflavors,Package Name,是否可以为已经发布的应用程序的新版本添加口味? 如果是,请假设以下情况: 我在Play Store中发布了一个应用程序(例如,com.example.android)。在新版本的应用程序中,我添加了(例如,免费和付费)风格。此添加将应用程序的软件包名称更改为com.example.android.free和com.example.android.paid。 假设我只发布com.example.android.freeFlavor。 到Play store的链接是什么样子的 (事实已经如此) 或者

是否可以为已经发布的应用程序的新版本添加口味? 如果是,请假设以下情况: 我在Play Store中发布了一个应用程序(例如,
com.example.android
)。在新版本的应用程序中,我添加了(例如,
免费
付费
)风格。此添加将应用程序的软件包名称更改为
com.example.android.free
com.example.android.paid
。 假设我只发布
com.example.android.free
Flavor。 到Play store的链接是什么样子的

(事实已经如此) 或者它将被重命名为

您不能更改已发布应用程序的软件包名称,但是您可以有两种风格的
免费
/
付费
,但其中一种应该具有原始软件包名称:
e、 g

这将意味着免费应用程序将更新当前已有的应用程序,而付费应用程序将是
googleplay
上的一个新应用程序(没有统计数据和下载)

这两个应用程序的链接将如预期的那样: 和


如果你想享受这两个世界的最佳体验,请查看
[应用内计费][1]
,允许你的用户免费下载应用,并在应用内付费以解锁高级功能。

你不能更改已发布应用的软件包名称,但是你可以有两种风格
免费
/
付费
,但其中一个应具有原始包名:
e、 g

这将意味着免费应用程序将更新当前已有的应用程序,而付费应用程序将是
googleplay
上的一个新应用程序(没有统计数据和下载)

这两个应用程序的链接将如预期的那样: 和


如果您想享受两个世界的最佳体验,请查看
[应用内计费][1]
,允许您的用户免费下载应用,并在应用内付费以解锁高级功能。

请明确marmor的答案:

您可以在发布应用程序后创建风味。但是,如果您希望在Play Store上发布并更新应用程序,则同一应用程序必须具有原始软件包名称,这意味着它必须是创建的其中一种风格,并且其软件包名称保持不变

例如,假设您有一个已发布的应用程序,然后您决定要一个免费和专业版本的应用程序。将build.gradle文件更改为具有两种风格:

defaultConfig {
    applicationId "com.mycompany.awesomeapp"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
}
flavorDimensions "feature"
productFlavors {
    free{

    }
    pro{
        applicationIdSuffix ".pro"
    }
}
这意味着商店中的原始应用程序现在是免费产品,您可以在Play商店中签名并更新。你甚至可以改变它的名字。在本例中,重要的是它的包名保持不变

com.mycompany.awesomeapp

它是默认定义的,唯一标识您的应用程序

专业版是一个不同的应用程序,现在你可以发布和更新为一个新的应用程序。它的包名是now

com.mycompany.awesomeapp.pro


这意味着它是一个新的、不同的应用程序,尽管它共享一些代码库。

只是想澄清一下marmor的答案:

您可以在发布应用程序后创建风味。但是,如果您希望在Play Store上发布并更新应用程序,则同一应用程序必须具有原始软件包名称,这意味着它必须是创建的其中一种风格,并且其软件包名称保持不变

例如,假设您有一个已发布的应用程序,然后您决定要一个免费和专业版本的应用程序。将build.gradle文件更改为具有两种风格:

defaultConfig {
    applicationId "com.mycompany.awesomeapp"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
}
flavorDimensions "feature"
productFlavors {
    free{

    }
    pro{
        applicationIdSuffix ".pro"
    }
}
这意味着商店中的原始应用程序现在是免费产品,您可以在Play商店中签名并更新。你甚至可以改变它的名字。在本例中,重要的是它的包名保持不变

com.mycompany.awesomeapp

它是默认定义的,唯一标识您的应用程序

专业版是一个不同的应用程序,现在你可以发布和更新为一个新的应用程序。它的包名是now

com.mycompany.awesomeapp.pro


这意味着它是一个新的、不同的应用程序,尽管它共享一些代码库。

这太棒了。除此之外,下一步您可能要做的就是为这个“pro”版本创建文件。其基本思想是,您的“main/res/layout”文件结构将被复制,这样您就有了另一个“pro/res/layout”结构。您将为“pro/java/…”和此“pro”版本中所需的任何唯一文件创建此结构。这些被称为“源代码集”,您可以在这里阅读:这很好。除此之外,下一步您可能要做的就是为这个“pro”版本创建文件。其基本思想是,您的“main/res/layout”文件结构将被复制,这样您就有了另一个“pro/res/layout”结构。您将为“pro/java/…”和此“pro”版本中所需的任何唯一文件创建此结构。这些称为“源集”,您可以在此处阅读: