如何在风味之间使用不同的包名称?

我试图创build一个单一的项目有两种口味:免费和亲(版本)。

我的应用程序已经在PlayStore中使用不同的包(例如:com.example.appfree和com.example.app)

这是我的build.gradle:

defaultConfig { applicationId "com.example.appfree" } productFlavors{ lite { applicationIdSuffix 'lite' } pro { } } 

这是我的清单文件:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".SplashScreenActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"/> </application> </manifest> 

我试图上传免费和亲口味的构buildapk。 临味道是好的,但免费的味道不被Google接受,因为包是不正确的。 我该如何解决这个问题?

======解决:====== applicationIdSuffix只适用于buildTypes。

Solutions Collecting From Web of "如何在风味之间使用不同的包名称?"

使用新的Android Gradle构build系统,您可以轻松构build应用程序的多个不同版本; 例如,您可以同时构build应用程序的“免费”版本和“专业版”(使用风格),并且这些应用程序在Google Play商店中应该有不同的软件包,以便它们可以分别安装和购买,同时,等等。 同样,您也可以构build应用程序的“debugging”和“alpha”和“beta”版本(使用构buildtypes),这些也可以类似地贡献于唯一的包名称。

应用程序/的build.gradle:

 apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "19.1" defaultConfig { applicationId "com.example.my.app" minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" } ... 

应用程序/的build.gradle:

 productFlavors { pro { applicationId = "com.example.my.pkg.pro" } free { applicationId = "com.example.my.pkg.free" } } buildTypes { debug { applicationIdSuffix ".debug" } } .... 

从Android Studio项目网站 – ApplicationId与PackageName