我今天已将我的 android studio 从3.5.x更新到3.6,并且在为构建变体生成签名的 apk 时出现错误,显示以下消息 - Entry name 'res/layout/test_toolbar.xml'发生冲突 我在整个项目中根本没有任何像这样命名的布局。我有一个名为“ stage ”的自定义构建变体,每当我尝试构建签名的 apk 时,它总是失败。我算找到任何解决方案。请帮我解决这个问题。谢谢
更新: 以下消息也可能出现同样的问题(正如我在AS - 3.6.1 -有时继续 4.xx 中发现的那样)。所以不要担心这些未知和不可解析的消息。到目前为止,我在生成签名的 apk 时发现了两种新类型的消息:
Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collidedAccess Denied结果是一样的。有时您可能需要为此向Invalidate Cache and Restart您的 AS。让我知道你的发现。谢谢
快速解决方案是:(作为最受欢迎的答案,我同意)
所以你需要删除所有的构建、调试和发布目录。
请注意,您可能无法删除整个 debug 和 release 目录,但可以删除其所有内容。
android android-studio build.gradle signed-apk build-variant
尝试在Android Studio上构建项目时出现以下错误:
错误:方法无签名:com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask()适用于参数类型:(java.lang.String)值:[DevDebug]
如何解决呢?
android build-error crashlytics-android build-variant android-studio-3.3
随着Gradle 4.10.1和Android Gradle插件的更新3.3.0,我得到以下警告:
警告:API'
variantOutput.getPackageApplication()'已过时,已替换为'variant.getPackageApplicationProvider()'.
该行,与周围的上下文(由构建变量分配输出文件名):
applicationVariants.all { variant ->
    variant.outputs.all { output ->
        if (variant.getBuildType().getName() in rootProject.archiveBuildTypes) {
            def buildType = variant.getBuildType().getName()
            if (variant.versionName != null) {
                def baseName = output.baseName.toLowerCase()
                String fileName = "${rootProject.name}_${variant.versionName}-${baseName}.apk"
                // this is the line:
                outputFileName = new File(output.outputFile.parent, fileName).getName()
            }
        }
    }
}
该迁移指南是不是太有帮助; 虽然variant.outputs.all可能有问题 - 只是不知道要替换什么 - 并且迁移指南指的是任务而不是构建变体.禁用时File ? Settings ? Experimental ? Gradle ? Only sync the active variant,我会得到更多的弃用警告(重点是,这些方法都没有被直接调用): …
gradle build.gradle android-gradle-plugin deprecation-warning build-variant
将 Android Studio 升级到最新版本 3.6 后,我在开发应用程序(具有动态功能)期间在变体之间切换时遇到了问题。
我flavors所有模块的设置(应用程序/库/动态功能):
flavorDimensions "default"
productFlavors {
    dev {
        isDefault.set(true)
        dimension "default"
    }
    live {
        dimension "default"
    }
    qa {
        dimension "default"
    }
}
默认变体(AS3.6 和以前的版本)
当我qa在 AS 3.5.x 上切换到风味时
当我在 AS 3.6 上这样做时:
然后 AS 显示消息:
Module 'xxx' has variant 'qaDebug' selected, but the module 'dynamic-feature' depends on variant 'devDebug'
我在模块中的配置dynamic-feature取决于构建变体。现在,它总是回退到dev.
有没有办法解决这个问题?
任何建议表示赞赏,谢谢。
更新 这个问题也发生在 AS4.0
我很难让 Android Studio 构建正确的构建变体——有时甚至根本无法让我选择构建变体。
基本上,我的项目有两个不同的版本,一个是免费版本,另一个是“完整”版本。包 ID 是“com.mycompany.myproj”和“com.mycompany.myprojfree”。
一旦我指定了“myproj”和“myprojfree”风格以及“发布”和“调试”构建类型,Android Studio 会在列表中生成四个变体:myprojDebug、myprojfreeDebug、myprojfreeRelease 和 myprojRelease。
问题是,选择其中之一并不能可靠地选择用于构建、调试等的变体。例如,我将选择 myprojDebug,点击 Debug,然后 myprojfreeDebug 将构建(如在控制台中所见),而免费的版本将在连接的设备上打开。
此外,有时我什至无法在构建变体窗格中选择一个或多个构建变体。我可以点击它,但它不会改变。但有时如果我先把它改成别的东西,它会让我回去改掉不变的那个。
我看过一些帖子提到类似的问题,并遵循了所有的建议——清理、重建、删除 .idea、删除构建文件夹、使缓存/重启、删除 app.iml 等——都无济于事。
值得注意的是,直到昨天,当我从 Android Studio 3.1 更新到 3.4.1 时,所有这些都运行良好。
这是我的应用程序 build.gradle 的简化版本:
apply plugin: 'com.android.application'
android {
    defaultConfig {
        versionCode ...
        multiDexEnabled true
        vectorDrawables {
            useSupportLibrary true
        }
        minSdkVersion 15
        targetSdkVersion 28
    }
    compileSdkVersion 28
    signingConfigs {
        myproj {
            keyAlias ...
            keyPassword ...
            storeFile file('...')
            storePassword ...
        }
        myprojfree {
            keyAlias ...
            keyPassword ...
            storeFile file('...') …android-studio build.gradle android-build-type android-build-flavors build-variant
我需要有 3 个不同的 APK(dev、UAT、prod),每个 APK 都针对不同的 Firebase 数据库。但在每个 Firebase 项目中,我需要提供一个永久的应用程序 ID。这意味着我需要有 3 个构建变体,每个变体都使用不同的应用程序 ID 部署 APK。但在Android Studio上,我似乎找不到这样的方法来为此目的构建Flutter变体(构建变体部分是空的)。
我正在寻找的不仅仅是不同的入口点和不同的常量,而是完全不同的应用程序 ID。据我所知,在 Flutter 中更改应用程序名称和应用程序 id 需要像这样的6 个步骤。我认为每次想要更改构建范围时执行这 6 个步骤并不是处理此问题的有效且正确的方法。
升级到 Android Studio Arctic Fox (2020.3.1) Canary 9 后。我无法运行我的测试。它弹出Edit Configurations窗口以显示Error: The apk for your currently selected variant (Unknown output) is not signed. Please specify a signing configuration for this variant (debug).消息。我似乎无法通过.jks为调试变体以及大多数建议的帖子创建和使用发布签名配置来解决这个问题。我有点犹豫是降级还是尝试以某种方式解决它。有没有人以前遇到过这个问题?欢迎任何建议和意见。
Android Studio Arctic Fox (2020.3.1) Canary 10 版本同样出现问题。
android unit-testing android-studio android-instrumentation build-variant
android 测试支持风格和构建类型变体?
    flavorDimensions "foo"
    productFlavors {
        full {
            dimension "foo"
        }
        trial {
            dimension "foo"
        }
    }
如果只有 src/androidTest/java,要测试哪个变体?
考虑到这个屏幕:
今天,当我想更改我的应用程序的构建变体时,我单击菜单 #1 并切换到我想要的那个。
我想做的事情是为每个有用的变体创建多个运行配置(单击 #2)。Studio 会在变体菜单中自动创建我不需要的构建/风味组合。
我认为它与屏幕底部的“Before lanch”菜单有关,但无法确定我应该添加哪个 Gradle 规则来选择好的变体。
谢谢
android gradle android-studio android-build-flavors build-variant
我有一个多维的 android gradle 项目,它需要很长时间来构建和测试。我有一个二维 flaver 定义。第一个维度有 2 个项目值,第二个维度有 4 个环境定义,并且有 3 种构建类型。
这导致 2x4x3 = 24 个构建变体。我想以某种方式进行优化,即只会构建一个构建变体,并且只有一个构建变体将用于在 ci 环境中运行单元测试。
构建.gradle
android {
// more configurations
flavorDimensions "project", "environment"
productFlavors {
basic  {
    dimension "project"
}
advanced {
    dimension "project"
}
flavorDevelopment {
    dimension "environment"
    applicationId "ch.myproject.app.development"
}
flavorTest {
    dimension "environment"
    applicationId "ch.myproject.app.test"
}
flavorIntegration {
    dimension "environment"
    applicationId "ch.myproject.app.integration"
}
flavorProduction {
    dimension "environment"
    applicationId "ch.myproject.app.production"
}
buildTypes {
    debug {
        testCoverageEnabled = true
        minifyEnabled = false
        shrinkResources = …build-variant ×10
android ×8
gradle ×4
build.gradle ×3
unit-testing ×2
build-error ×1
flutter ×1
signed-apk ×1
testing ×1