如何在新 gradle 中配置产品风味
How to configure product flavor in new gradle
我正在配置我的应用程序的付费版和免费版,但出现以下错误。我已经在 android 3 之前进行了相同的配置,没有问题。
请问如何解决?
Gradle 脚本
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "capstone.nanodegree.udacity.com.mypodcast"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
//flavorDimensions "default"
flavorDimensions "free", "paid"
productFlavors {
free {
applicationId "capstone.nanodegree.udacity.com.mypodcast.free"
dimension "free"
}
paid {
applicationId "capstone.nanodegree.udacity.com.mypodcast.paid"
dimension "paid"
}
}
}
def AAVersion = '4.4.0'
def GLIDEVersion = '4.3.1'
def supportVersion = '26.1.0'
检查你的 google-services.json
中是否有两个包的条目......另外,这可能是一个单独的问题,我相信你应该只需要定义一个维度(你的两种口味会有相同的dimension
值)
我使用的 Flavors 和你一样,为了简单比较,我将删除我的 2 个 flavor 并重命名:
compileSdkVersion 26
buildToolsVersion googleBuildTools
dataBinding {
enabled = true
}
defaultConfig {
applicationId "com.myapp"
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
signingConfigs {
releaseMyApp {
storeFile file("$projectDir/../myappkeystore.jks")
storePassword System.getenv('MYAPP_STORE_PASSWORD')
keyAlias System.getenv('MYAPP_KEY_ALIAS')
keyPassword System.getenv('MYAPP_KEY_PASSWORD')
}
}
productFlavors {
myapp {
applicationId "com.myApp.one"
buildConfigField "String", "SERVER_URL", '"https://api.myappone.com"'
versionCode 24
versionName "1.18"
minSdkVersion 21
}
myappStaging {
applicationId "com.myapp.one.staging"
buildConfigField "String", "SERVER_URL", '"https://stg.api.myappone.com"'
versionCode 24
versionName "1.18"
minSdkVersion 21
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors.myapp.signingConfig signingConfigs.releaseMyapp
productFlavors.myappStaging.signingConfig signingConfigs.releaseMyapp
}
}
没有问题,但我会 post 以防万一你注意到我没有注意到的不同之处,但你的错误可能与你的 firebase json 有关。您可以为所有风格使用相同的 json 文件,您只需要为每个应用程序标识符创建一个客户端部分。您可以通过 firebase 门户在线创建。
我错误地为每种风格制作了单独的 firebase json 文件,后来发现我不需要这样做,因为它们与其中的所有客户端都是相同的。
最初我只为两种不同的应用程序类型使用了 flavors,但后来不得不为 staging 制作 flavor 以在多个环境中支持 PUSH。祝你好运。希望这有帮助,但我猜你需要修复你的 firebase json 文件。
我正在配置我的应用程序的付费版和免费版,但出现以下错误。我已经在 android 3 之前进行了相同的配置,没有问题。
请问如何解决?
Gradle 脚本
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "capstone.nanodegree.udacity.com.mypodcast"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
//flavorDimensions "default"
flavorDimensions "free", "paid"
productFlavors {
free {
applicationId "capstone.nanodegree.udacity.com.mypodcast.free"
dimension "free"
}
paid {
applicationId "capstone.nanodegree.udacity.com.mypodcast.paid"
dimension "paid"
}
}
}
def AAVersion = '4.4.0'
def GLIDEVersion = '4.3.1'
def supportVersion = '26.1.0'
检查你的 google-services.json
中是否有两个包的条目......另外,这可能是一个单独的问题,我相信你应该只需要定义一个维度(你的两种口味会有相同的dimension
值)
我使用的 Flavors 和你一样,为了简单比较,我将删除我的 2 个 flavor 并重命名:
compileSdkVersion 26
buildToolsVersion googleBuildTools
dataBinding {
enabled = true
}
defaultConfig {
applicationId "com.myapp"
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
signingConfigs {
releaseMyApp {
storeFile file("$projectDir/../myappkeystore.jks")
storePassword System.getenv('MYAPP_STORE_PASSWORD')
keyAlias System.getenv('MYAPP_KEY_ALIAS')
keyPassword System.getenv('MYAPP_KEY_PASSWORD')
}
}
productFlavors {
myapp {
applicationId "com.myApp.one"
buildConfigField "String", "SERVER_URL", '"https://api.myappone.com"'
versionCode 24
versionName "1.18"
minSdkVersion 21
}
myappStaging {
applicationId "com.myapp.one.staging"
buildConfigField "String", "SERVER_URL", '"https://stg.api.myappone.com"'
versionCode 24
versionName "1.18"
minSdkVersion 21
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors.myapp.signingConfig signingConfigs.releaseMyapp
productFlavors.myappStaging.signingConfig signingConfigs.releaseMyapp
}
}
没有问题,但我会 post 以防万一你注意到我没有注意到的不同之处,但你的错误可能与你的 firebase json 有关。您可以为所有风格使用相同的 json 文件,您只需要为每个应用程序标识符创建一个客户端部分。您可以通过 firebase 门户在线创建。
我错误地为每种风格制作了单独的 firebase json 文件,后来发现我不需要这样做,因为它们与其中的所有客户端都是相同的。
最初我只为两种不同的应用程序类型使用了 flavors,但后来不得不为 staging 制作 flavor 以在多个环境中支持 PUSH。祝你好运。希望这有帮助,但我猜你需要修复你的 firebase json 文件。