android - 如何在调试构建变体中使用库运行应用程序?

标签 android android-studio

我无法以调试构建类型启动应用程序。我有依赖于库的应用程序,它依赖于另一个库。我将所有内容都切换为调试构建变体,与图像中相同。

enter image description here

问题是在库中我想在调试时关闭一些功能,例如登录和分析,但库每次都以发布构建类型编译。
在 Gradle 控制台中,我看到该应用程序在调试变体中编译,但它依赖于在发布变体中编译的每个项目。

Executing tasks: [:app:assembleDebug]

Parallel execution with configuration on demand is an incubating feature.
/home/cooperok/AndroidStudioWorkspace/MyApp/app/build/outputs/apk/app-debug.apk
app-debug-1.0.5.apk
/home/cooperok/AndroidStudioWorkspace/MyApp/app/build/outputs/apk/app-release.apk
app-release-1.0.5.apk
:app:preBuild
:library:compileLint UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:library:copyReleaseLint UP-TO-DATE
:library:preBuild
:library-2:compileLint UP-TO-DATE
:library-2:copyReleaseLint UP-TO-DATE
:library:preReleaseBuild
:library-2:mergeReleaseProguardFiles UP-TO-DATE
:library:checkReleaseManifest
:library:preReleaseUnitTestBuild UP-TO-DATE
:library:generateReleaseBuildConfig UP-TO-DATE
:library-2:preBuild UP-TO-DATE
:library-2:preReleaseBuild UP-TO-DATE
:library-2:checkReleaseManifest
:library-2:prepareReleaseDependencies UP-TO-DATE
:library:generateReleaseAssets UP-TO-DATE
:library:generateReleaseResValues UP-TO-DATE
:library:processReleaseJavaRes UP-TO-DATE
:library:mergeReleaseProguardFiles UP-TO-DATE
:library:compileReleaseNdk UP-TO-DATE
:library:packageReleaseJniLibs UP-TO-DATE
:library:packageReleaseLocalJar UP-TO-DATE
:library:packageReleaseRenderscript
:library-2:compileReleaseAidl UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:library:preReleaseBuild UP-TO-DATE
:library-2:compileReleaseRenderscript
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:validateDebugSigning
:library-2:compileReleaseRenderscript UP-TO-DATE
:library-2:generateReleaseBuildConfig UP-TO-DATE
:library-2:generateReleaseAssets UP-TO-DATE
:library-2:mergeReleaseAssets UP-TO-DATE
:library-2:generateReleaseResValues UP-TO-DATE
:library-2:generateReleaseResources UP-TO-DATE
:library-2:packageReleaseResources UP-TO-DATE
:library-2:processReleaseManifest UP-TO-DATE
:library-2:processReleaseResources UP-TO-DATE
:library-2:generateReleaseSources UP-TO-DATE
:library-2:processReleaseJavaRes UP-TO-DATE
:library-2:compileReleaseJava UP-TO-DATE
:library-2:packageReleaseJar UP-TO-DATE
:library-2:compileReleaseNdk UP-TO-DATE
:library-2:packageReleaseJniLibs UP-TO-DATE
:library-2:packageReleaseLocalJar UP-TO-DATE
:library-2:packageReleaseRenderscript UP-TO-DATE
:library-2:bundleRelease UP-TO-DATE
:library:prepareComAndroidSupportSupportV42211Library UP-TO-DATE
:library:prepareComCrashlyticsSdkAndroidAnswers122Library UP-TO-DATE
:library:prepareComCrashlyticsSdkAndroidBeta112Library UP-TO-DATE
:library:prepareComCrashlyticsSdkAndroidCrashlytics232Library UP-TO-DATE
:library:prepareComCrashlyticsSdkAndroidCrashlyticsCore232Library UP-TO-DATE
:library:prepareComGoogleAndroidGmsPlayServicesBase730Library UP-TO-DATE
:library:prepareComGoogleAndroidGmsPlayServicesMaps730Library UP-TO-DATE
:library:prepareIoFabricSdkAndroidFabric133Library UP-TO-DATE
:library:prepareReleaseDependencies
:library:compileReleaseAidl
:library:compileReleaseRenderscript UP-TO-DATE
:library:mergeReleaseAssets UP-TO-DATE
:library:generateReleaseResources UP-TO-DATE
:library:mergeReleaseResources UP-TO-DATE
:library:processReleaseManifest UP-TO-DATE
:library:processReleaseResources UP-TO-DATE
:library:generateReleaseSources
:library:compileReleaseJava

所以编译后库中的项目变量BuildConfig.DEBUG为false

如何在调试构建变体中编译所有内容?

最佳答案

事实证明这是一个已知问题,自 2013 年以来在 code.google.com 有错误报告.
我在那里建立了解决方案。要在您需要的构建变体中运行每个项目,您应该在依赖项目中设置它

android {
    publishNonDefault true
    ...
}

以及在使用它的项目中

dependencies {
    releaseCompile project(path: ':theotherproject', configuration: 'release')
    debugCompile project(path: ':theotherproject', configuration: 'debug')
}

关于android - 如何在调试构建变体中使用库运行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379267/

相关文章:

安卓 11 : how to get current location

java - 计算recyclerview中元素的总价

android-studio - Android Studio 显示方 block 而不是文本

android - Android布局中的占位符文本(仅限设计过程)?

android - 从 Android 应用程序获取用户反馈的更好方法?

android - 符号不显示在模拟器中,但显示在布局中

android - 游戏中的 singleTask 或 singleInstance - Android

Android:预览显示不同的样式 - 操作栏

在 4.4 操作系统版本的 onStart 方法中注册事件总线时出现 java.lang.NoClassDefFoundError

android - HttpUrlConnection.connect 抛出异常