我正在编写我的第一个Android应用程序,而我刚刚开始使用产品风味。我有一个广告支持的应用程序测试版,我正在编写一个没有广告的付费版本。我想,我可以编译这两种口味。当我打开gradle窗口时,我会看到像“编译AdsDebugSources”和“编译PremiumDebugSources”这样的目标。
现在,如果我双击其中任何一个,构建运行完成没有错误,但我无法弄清楚如何运行结果。如果我点击屏幕顶部的绿色“运行”箭头,我就永远无法运行高级应用。
只有一个条目,“app”导致在已连接的设备上安装并运行apk,它是AdsDebug版本。我想我需要添加一个新的配置,但我找不到任何文档,甚至提到“味道”这个词。
我尝试添加配置,但我不明白这些问题的意思。我查看了默认应用程序的设置,但它们似乎没有多大意义。我如何告诉它我想要我的应用程序的高级版本?
或者我的问题与配置无关?我注意到,当我查看Build/Edit Flavors
时,列出了两种风格,但没有填写任何数据字段。我会认为这些将从清单中复制。我忽略了什么吗?
我所做的就是将这些代码添加到app level build.gradle文件:
flavorDimensions "dummy"
productFlavors {
ads {
dimension "dummy"
applicationId 'com.example.myApp.ads'
}
premium {
dimension "dummy"
applicationId 'com.example.myApp.premium'
}
}
我还需要做什么?
答案 0 :(得分:34)
在Android Studio中打开Build Variants工具。默认情况下,它停靠在左侧。
它将显示项目中的模块列表,每个模块都有一个下拉列表,指示将由“运行”按钮使用的构建变体。
答案 1 :(得分:3)
查看我关于构建变体的文章。它有关于构建变体的详细讨论。
答案 2 :(得分:1)
解决方案
所以你要按照这个代码正常工作。
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.premsinghdaksha"
minSdkVersion 17
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions "client"
productFlavors {
// use for production debug and release build
production {
dimension "client"
buildConfigField("String", "BASE_URL", "YourURL")
//if you want to use string anywhere of app show you define
// buildConfigField and get value where you want to use.
buildConfigField("String", "Shop_", "\"Shop1\"")
// production app name
//if you want change application name and app icon so you define
// resValue, manifestPlaceholders and get these value in Manifests file.
resValue "string", "app_name", "Your production name"
//production app icon
manifestPlaceholders = [
appIcon : "@mipmap/app_icon",
appIconRound: "@mipmap/app_icon_round"
]
signingConfig signingConfigs.release
}
// use for quality debug and release build
quality {
dimension "client"
buildConfigField("String", "BASE_URL", "YourQualityurl")
buildConfigField("String", "Shop_", "\"Shop2\"")
//use for quality app name
resValue "string", "app_name", "quality App name"
// use for quality app icon
manifestPlaceholders = [
appIcon : "@mipmap/quality_app_icon",
appIconRound: "@mipmap/quality_app_icon_round",
]
}
// use for development debug and release build
development {
dimension "client"
buildConfigField("String", "BASE_URL", "development url")
buildConfigField("String", "Shop_", "\"Shop3\"")
//use for dev app name
resValue "string", "app_name", "developer app name"
//use for dev app icon
manifestPlaceholders = [
appIcon : "@mipmap/developer_icon",
appIconRound: "@mipmap/developer_icon_round"
]
}
}
}
signingConfigs {
// use for signed apk
release {
storeFile file("../premsingh.jks")
storePassword "app@app"
keyAlias "key0"
keyPassword "app@app"
v1SigningEnabled true
v2SigningEnabled true
}
}