如何在Android Studio中运行不同的产品口味

时间:2017-08-17 22:52:41

标签: android

我正在编写我的第一个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'
    }

}

我还需要做什么?

3 个答案:

答案 0 :(得分:34)

在Android Studio中打开Build Variants工具。默认情况下,它停靠在左侧。

它将显示项目中的模块列表,每个模块都有一个下拉列表,指示将由“运行”按钮使用的构建变体。

Android Studio Build Variants tool

答案 1 :(得分:3)

查看我关于构建变体的文章。它有关于构建变体的详细讨论。

How to create Android Product Flavors and Build Variants

答案 2 :(得分:1)

解决方案

  1. 如果您想创建不同类型的产品风味(例如不同的 url:我们应用程序的开发 url、质量 url 和生产 url)

所以你要按照这个代码正常工作。

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"
            ]
        }

    }
}
  1. 如果您想为实时应用程序创建签名应用程序,那么您必须在 android 中的 build.gradle(:app) 中遵循此代码{}。

    signingConfigs {
            // use for signed apk
            release {
                storeFile file("../premsingh.jks")
                storePassword "app@app"
                keyAlias "key0"
                keyPassword "app@app"
                v1SigningEnabled true
                v2SigningEnabled true
            }
        }

结果将显示在构建变体上,然后单击下拉按钮使用变体的单击。

enter image description here