无法在 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
,.idea
,app/.externalNativeBuild
,app/build
,build
,app/app.iml
,ProjectName.iml
,local.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's
impl后缀类型文件和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 中调试 onPostExecute
androidstudio中Resourcevalue无法输入中文
无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException