无法在 Android Studio 中切换到调试构建变体

Posted

技术标签:

【中文标题】无法在 Android Studio 中切换到调试构建变体【英文标题】:Unable to switch to debug build variant in Android Studio 【发布时间】:2017-07-27 19:18:56 【问题描述】:

我已切换到发布构建变体并配置了签名配置。现在,当我尝试从下拉菜单中检查调试构建变体时,它会立即切换回发布构建变体。所以我不能再在调试模式下运行我的应用程序了。

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'

android 
    signingConfigs 
        config 
            ...
        
    

    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig 
        applicationId "com.kost.foo"
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk 
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        
        externalNativeBuild 
            cmake 
               ...
            
        
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            debuggable true
            signingConfig signingConfigs.config
        
    

    sourceSets 
        main.java.srcDirs += 'src/main/kotlin'
        main 
            jniLibs.srcDirs = ['src/main/jni']
        
    

    externalNativeBuild 
        cmake 
            path 'src/main/jni/CMakeLists.txt'
        
    


kapt 
    generateStubs = true


repositories 
    maven  url 'https://github.com/linchaolong/stetho-realm/raw/master/maven-repo' 
    mavenCentral()


我尝试将 build.gradle 中的所有更改还原为配置之前的状态,但没有成功。

有解决问题的方法吗?

【问题讨论】:

您是否尝试手动将项目与 gradle 文件同步? @ridoy 是的,试过了。没有帮助 我也面临同样的问题 我不能说我已经解决了,因为我仍然不知道是什么导致了问题。但我发现最快的解决方法是将项目推送到 git(在我的例子中是 bitbucket)并从新项目的版本控制中检查出来。 我跟着你的工作,它确实有帮助!!!谢谢@AlexKost 【参考方案1】:

我遇到了一个类似的问题,大多数“构建”菜单项都是灰色的。

“与 Gradle 文件同步项目”未修复。

我注意到 Android Studio (v 3.1.2) 左下角有一个“构建变体”切换按钮,最终可以选择我需要的变体。

也许这对你也有用。

【讨论】:

【参考方案2】:

也许你已经找到了解决方案,以防万一,我在这里提供我的解决方案。


适用于 Android Studio 2.x

这可能是因为你编译你的依赖项目使用:

compile project('module_a')

以上设置将强制您的项目编译模块的发布版本。只需将其更改为以下内容:

releaseCompile project(path: ':module_a', configuration: 'release')
debugCompile project(path: ':module_a', configuration: 'debug')

适用于 Android Studio 3.x

您不需要为“模块项目”明确指定构建变体。只是使用

implementation project(':library') 

自动帮助选择正确的构建变体。

这里有详细解释:https://developer.android.com/studio/build/?utm_source=android-studio#variant_aware


适用于从 2.x 升级的 Android Studio 3.x

删除项目根目录下的.idea 文件夹并重启Android Studio。

以下是图形用户界面截图:

希望对你有帮助!

【讨论】:

这仅适用于较旧的 gradle 版本:link,请参阅 @rockefelox 的帖子了解较新的版本 是的。从 Android Studio 3.0 开始,所有 xxxCompile 闭包都更改为 xxxImplementation。 对于 Android Studio 3.1.2,您无需为“模块项目”显式指定构建变体。只需使用 implementation project(':library') 将自动帮助选择正确的构建变体。这里有详细解释developer.android.com/studio/build/…。【参考方案3】:

只需要剪切“.idea”文件夹并将其粘贴到项目根文件夹之外(如果需要,可以备份)。这些文件将自动重新生成。打开项目时,它会要求将模块(应用程序)添加到您的项目中。您可以忽略它。

它将设置默认构建变体设置为“调试”。 您可以在左下角看到构建变体选项卡或将鼠标悬停在左下角的“监控”符号上以获取构建变体选项。

【讨论】:

这是在 Android Studio 3.1.2 中对我有用的解决方案 很高兴知道它对您有所帮助。 :) 也为我工作。刚刚删除了 .idea 文件夹并通过阅读 build.gradle 重新创建了工作空间 我需要删除并重新导入项目,如下所述:***.com/a/45950059/5443056 由于某种原因删除 .idea 文件夹和 invalidate cache and restart 不起作用。并删除它,然后重新启动即可。【参考方案4】:

我也遇到了同样的问题。通过关闭Android Studio,删除生成的文件和文件夹:.gradle.ideaapp/.externalNativeBuildapp/buildbuildapp/app.imlProjectName.imllocal.properties解决了这个问题,然后重新启动Android Studio并允许它从头开始重新生成所有这些文件。

【讨论】:

只需要删除rm -rf ./.gradle ./app/.gradle .idea/caches/【参考方案5】:

有同样的问题,解决了创建一个新的临时构建类型,构建>编辑构建类型,选择构建类型并添加一个新的。同步,然后您可以选择新的构建类型,然后恢复为原始的 Debug 构建类型。

【讨论】:

是唯一对我有用的解决方案 Android Studio 3.4.2 在 Android Studio 上,这些类型的解决方案总是最好的。【参考方案6】:

打开您的模块设置。 (按F4)

点击加号(+)转到构建类型并创建一个新的构建。

给它起任何名字,比如“demo”。

复制调试构建的所有数据。

现在,当您打开 Build Variant 时,您将能够切换到 Debug 和 Demo。

【讨论】:

【参考方案7】:

对我来说,我无法切换到我们的“devDebug”变体,但我可以切换到另一个变体,例如“devRelease”,然后是“devDebug”。因此,请先尝试切换到另一个变体。

【讨论】:

【参考方案8】:

我遇到了类似的问题。我的模块级别 build.gradle 相应地反映了为“调试”和“发布”指定的配置。在构建和签署我的应用程序的发布版本之前,我能够在模拟器和设备 (LG) 上成功运行我的应用程序。在构建并签署发行版本并尝试在我的手机和设备上运行签署的 APK 后,我收到了错误 PM Session 'mobile': Error Launching activity....Error while Launching activity..所以我开始追溯我的步骤并意识到在部署签署的发行版本之前,我打开了 运行/调试配置对话框

并错误地从 Installation 类别下的 Deploy 属性中选择了 Value APK from app bundle

我在整个 APK 而不是通过 Bundle 签署了我的 APK,因此选择的选项是尝试部署一个从不开始生成的无效 App Bundle,甚至如果是正确的Build Variant

【讨论】:

【参考方案9】:

我也有这个问题。我的解决方案是结帐到我更改了构建变体的分支。在那个分支上,我可以从发布改回调试。然后只需结帐到当前分支,一切正常。这似乎是一个 Android Studio 错误。

【讨论】:

【参考方案10】:

英语不是我的母语;请原谅打字错误。

我也遇到这种情况。我这样做是为了解决。 求解: 1.删​​除each module'simpl后缀类型文件和build文件夹; 2. 然后单击此按钮将项目与 gradle 构建文件同步。 button position

终于。然后这个问题就解决了。

【讨论】:

【参考方案11】:

我已修复此问题的发布者:

    通过编辑 build.gradle 添加一个名为 debug1 的新构建类型;启用此构建类型的调试功能; 同步并选择新的构建类型 debug1;

【讨论】:

但是我不知道为什么我不能切换到原来的调试模式。无论如何,上面的步骤解决了无法调试的问题。【参考方案12】:

在 linux 上的符号链接位置打开项目时似乎会出现此问题。直接打开项目为我解决了这个问题。

相关链接:https://issuetracker.google.com/issues/156857164

【讨论】:

虽然这可能会回答问题,但您应该 edit 您的回答,以在答案本身中包含与问题相关的链接中的任何重要内容。如果链接因任何原因停止工作,主要由指向其他地方的链接组成的答案可能会变得无效。【参考方案13】:

对我来说,这是 gradle 版本的问题。确保您的插件版本和所需的 gradle 版本符合此处定义。

https://developer.android.com/studio/releases/gradle-plugin

你可以在下面找到你正在使用的 gradle 版本:

文件 -> 项目结构... -> 项目

【讨论】:

【参考方案14】:

我尝试了以上所有方法都没有效果。最终由于其他原因偶然发现了 File > Invalidate Caches/Restart... 并发现它对我有用。

【讨论】:

【参考方案15】:

在 build.gradle 中应用的主根目录

将其替换为:

dependencies 
    classpath 'com.android.tools.build:gradle:3.2.1'

在我的情况下,我的 Android Studio v3.0.1:

dependencies 
    classpath 'com.android.tools.build:gradle:3.0.1'

【讨论】:

【参考方案16】:

2021 年 3 月 26 日: 不会从 Release 切换到 Debug, 文件 |无效缓存为我修复了它

【讨论】:

【参考方案17】:

与您的 build.gradle 文件无关,

分享希望对别人有帮助 -

我遇到了类似的问题,这是因为 build.gradle 中的一行 -

android 
    ...
    publishNonDefault true // remove this line and it should work!

Here你可以得到更多关于publishNonDefualt的细节-


还可以发布库的所有变体。我们计划在使用正常的项目到项目依赖项时允许这样做(如上所示),但由于 Gradle 的限制,目前这是不可能的(我们也在努力修复这些问题)。 默认情况下不启用所有变体的发布。下面的 sn-p 启用了这个功能:


【讨论】:

解决问题时,我的 build.gradle 中没有该行。 我的 build.gradle 中没有该行。有什么相关性?

以上是关于无法在 Android Studio 中切换到调试构建变体的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:无法切换到新活动

无法在 Android Studio 中调试 onPostExecute

Android Studio 3.2.1中的USB调试问题

无法在 Android Studio 中调试应用程序

androidstudio中Resourcevalue无法输入中文

无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException