ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio 3.0 风格维度问题

升级到 Studio Canary 版本。我之前的 Telegram Messenger 项目出现以下错误。

错误:所有风味现在必须属于一个命名风味维度。风味“armv7”未分配给风味维度。在 https://d.android.com/r/tools/flavorDimensions-missing-error-message.html 了解更多信息

我应该怎么办?我已经看过那个链接,但不明白该怎么做。我现在有 3 个构建变体,发布、调试和 foss。


t
tknell

如果您真的不需要该机制,只需在 build.gradle 中指定一个随机风味维度:

android { 
    ...
    flavorDimensions "default"
    ...
}

有关详细信息,请查看 migration guide


谢谢。我已经有一个维度“versionCode”,我使用了它。
flavorDimensions "versionCode" productFlavors { debug { dimension "default" versionName "1.0" } release { dimension "default" versionName "1.0" } foss { dimension "default" versionName "1.0" } } 我收到这个错误 ..ProductFlavor 名称不能冲突带有 BuildType 名称。你能请任何人帮助我吗?我收到了这个错误 AS 3.0 beta version Canary with Kotlin。
如果您只有一个维度,则无需在每个风味中指定它。只需要上面的第一行 flavorDimensions "default" 即可。
@GrahamBorland 感谢您的提示,我相应地更新了答案。
也许补充一下,该文件是 app/build.gradle
K
Keyur Lakhani

在尝试和仔细阅读后,我自己解决了。解决方案是在 build.gradle 中添加以下行。

风味维度“版本代码”

android { 
       compileSdkVersion 24
       .....
       flavorDimensions "versionCode"
} 

您在 gradle 的哪个位置添加此行?多一点上下文会有所帮助
在 build.gradle 文件中,在 android { ... }
android { compileSdkVersion 24.... //在这里添加 }
为什么是“versionCode”而不是其他任何东西?它会影响 versionCode 吗?
@MBH 我的productFlavors 中有这个。您只需要任何唯一的密钥来识别。
A
Abdul Rizwan

您可以在此处解决此问题,您需要使用 productFlavors 的名称添加 flavorDimension,并且还需要定义维度,请参见下面的示例,更多信息请参见此处 https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

flavorDimensions 'yourAppName' //here defined dimensions
productFlavors {
    production {
        dimension 'yourAppName' //you just need to add this line
        //here you no need to write applicationIdSuffix because by default it will point to your app package which is also available inside manifest.xml file.

    }

    staging {
        dimension 'yourAppName' //added here also
        applicationIdSuffix ".staging"//(.staging) will be added after your default package name.
        //or you can also use applicationId="your_package_name.staging" instead of applicationIdSuffix but remember if you are using applicationId then You have to mention full package name.
        //versionNameSuffix "-staging"

    }

    develop {
        dimension 'yourAppName' //add here too
        applicationIdSuffix ".develop"
        //versionNameSuffix "-develop"

    }

M
Mohammad Aldefrawy

如果你不想使用尺寸,你应该使用这条线

android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}

但是如果你想使用维度,你应该先声明你的维度名称,然后在这个例子来自文档之后使用这个名称:

android {
...
buildTypes {
debug {...}
release {...}
}

  // Specifies the flavor dimensions you want to use. The order in which you
  // list each dimension determines its priority, from highest to lowest,
  // when Gradle merges variant sources and configurations. You must assign
  // each product flavor you configure to one of the flavor dimensions.
  flavorDimensions "api", "mode"

  productFlavors {
    demo {
  // Assigns this product flavor to the "mode" flavor dimension.
  dimension "mode"
  ...
}

full {
  dimension "mode"
  ...
}

// Configurations in the "api" product flavors override those in "mode"
// flavors and the defaultConfig block. Gradle determines the priority
// between flavor dimensions based on the order in which they appear next
// to the flavorDimensions property above--the first dimension has a higher
// priority than the second, and so on.
minApi24 {
  dimension "api"
  minSdkVersion 24
  // To ensure the target device receives the version of the app with
  // the highest compatible API level, assign version codes in increasing
  // value with API level. To learn more about assigning version codes to
  // support app updates and uploading to Google Play, read Multiple APK Support
  versionCode 30000 + android.defaultConfig.versionCode
  versionNameSuffix "-minApi24"
  ...
}

minApi23 {
  dimension "api"
  minSdkVersion 23
  versionCode 20000  + android.defaultConfig.versionCode
  versionNameSuffix "-minApi23"
  ...
}

minApi21 {
  dimension "api"
  minSdkVersion 21
  versionCode 10000  + android.defaultConfig.versionCode
  versionNameSuffix "-minApi21"
  ...
    }
  }
}
...

R
Ranjit Chandel

我在 build.gradle (Module: app) 中为我的应用程序使用了 flavorDimensions

flavorDimensions "tier"

productFlavors {
    production {
        flavorDimensions "tier"
        //manifestPlaceholders = [appName: APP_NAME]
        //signingConfig signingConfigs.config
    }
    staging {
        flavorDimensions "tier"
        //manifestPlaceholders = [appName: APP_NAME_STAGING]
        //applicationIdSuffix ".staging"
        //versionNameSuffix "-staging"
        //signingConfig signingConfigs.config
    }
}

Check this link for more info

// Specifies two flavor dimensions.
flavorDimensions "tier", "minApi"

productFlavors {
     free {
            // Assigns this product flavor to the "tier" flavor dimension. Specifying
            // this property is optional if you are using only one dimension.
            dimension "tier"
            ...
     }

     paid {
            dimension "tier"
            ...
     }

     minApi23 {
            dimension "minApi"
            ...
     }

     minApi18 {
            dimension "minApi"
            ...
     }
}

S
Sana Ebadi

在 KotlinDSL 中你可以这样使用:

flavorDimensions ("PlaceApp")
productFlavors {
    create("tapsi") {
        setDimension("PlaceApp")
        buildConfigField("String", "API_BASE_URL", "https://xxx/x/x/")
    }

}

S
Style-7

如果您有简单的口味(免费/专业、演示/完整等),则添加到 build.gradle 文件:

android {
...
flavorDimensions "version"
productFlavors {
        free{
            dimension "version"
            ...
            }
        pro{
            dimension "version"
            ...
            }
}

通过尺寸,您可以创建“风味中的风味”。 Read more