【问题标题】:Can't run in debug mode无法在调试模式下运行
【发布时间】:2017-02-02 09:26:15
【问题描述】:

我正在尝试以调试模式启动我的 android 应用程序,但每次我检查 BuildConfig.DEBUG 时它都说它是错误的。更进一步,在我的 buildtypes 中定义的 buildconfigField 甚至不会出现在 BuildConfig 中。

这是我的 gradle 文件:

buildscript {
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    classpath 'io.fabric.tools:gradle:1.22.0'
}
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven {
        url 'https://maven.fabric.io/public'
    }
}


def versionMajor = 1

def versionMinor = 2
def versionPatch = 41
def versionBuild = 0 // bump for dogfood builds, public betas, etc.

android {
    compileOptions.encoding = 'ISO-8859-1'
    compileSdkVersion 21
    buildToolsVersion "22.0.1"
    defaultConfig {
        applicationId "com.name"
        minSdkVersion 17
        targetSdkVersion 21
        buildConfigField 'Boolean', 'enableCrashlytics', 'false'
        multiDexEnabled true
        versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
        versionName "${versionMajor}.${versionMinor}.${versionPatch}.${versionBuild}"
    }



signingConfigs {
    release {
      // release stuff
    }
}

buildTypes {

    android {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            buildConfigField 'Boolean', 'enableCrashlytics', 'true'
        }

        debug {
            buildConfigField 'Boolean', 'enableCrashlytics', 'false'
            debuggable true
            minifyEnabled false
            applicationIdSuffix ".debug"
        }
    }
}

sourceSets {
    main {
        res.srcDirs = ['src/main/res', 'src/main/res/xml']
    }
}

dexOptions {
    incremental true
    javaMaxHeapSize "2048M"
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

lintOptions {
    checkReleaseBuilds false
    abortOnError false
}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.1.1'
    // ... some other libs
    compile('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') {
        transitive = true;
    }
}

所以在 Android Studio 中,我为我的应用程序选择构建变体“调试”,但是当我在应用程序中遇到断点并检查 BuildConfig 的值时,无法解析提交的 enableCrashlyticsBuildConfig.BUILD_TYPE 的值是“释放”。

我做错了什么?

【问题讨论】:

  • 尝试删除:debuggable false
  • 您的构建文件中有几个额外的右大括号 (})。

标签: android gradle android-gradle-plugin build.gradle


【解决方案1】:

如果代码在 library 中,则可能会发生这种情况,项目中有多个 BuildConfig 类,每个模块一个,并且只有主应用程序会按预期更新。

如果您想在整个应用程序中使用正确的 BuildConfig.BUILD_TYPE,则需要在所有模块的 gradle 文件上使用 debug/release 构建类型,并逐级降低所选的构建类型从主gradle 文件到dependencies

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多