android - 将构建类型更改为 Release 会导致某些类出现 "Cannot resolve symbol"

标签 android android-studio android-gradle-plugin proguard android-build-type

当我将构建类型更改为发布时,我的一些类在 android studio 中显示为“找不到符号”。即使显示错误,应用程序也已成功构建并运行。当我改回调试时,这些文件被正确识别。

这是我的 build.gradle

apply plugin: 'com.android.application'

apply plugin: 'realm-android'

apply plugin: 'io.fabric'

apply plugin: 'com.google.gms.google-services'


android {
    signingConfigs {
        debug {
            keyAlias 'debugkey-name'
            keyPassword 'dpassword'
            storeFile file('debugkey.jks')
            storePassword 'dspassword'
        }
        release {
            keyAlias 'releasekey-name'
            keyPassword 'rpassword'
            storeFile file('releasekey.jks')
            storePassword 'rspassword'
        }
    }

compileSdkVersion rootProject.ext.compileSdkVersion

defaultConfig {
    applicationId "com.app.appname"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    multiDexEnabled true
    versionCode 0
    versionName "0.9.2"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

applicationVariants.all { variant ->

    variant.outputs.all {
        outputFileName = "Appname-${variant.name}-${defaultConfig.versionName}.apk"
    }

}

buildTypes {

    debug {
        minifyEnabled false
        shrinkResources false
        resValue "string", "map_box_key", "mapboxfakeKeyalksdk;lk;laksd;lkas;ldkndasdjasndkaklsjdlaksdjlaksjdkajsdlkj"
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.debug
        debuggable true
        jniDebuggable true
    }

    release {
        minifyEnabled true
        shrinkResources true
        resValue "string", "map_box_key", "mapboxkeyfakekajsdhkajdsklajlskdjlaksjdajlskjdlkjaslkdjlkasjdlkajdlkjaslkd"
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
        debuggable false
        jniDebuggable false
        renderscriptDebuggable false
    }
}

flavorDimensions "Environment"

productFlavors {

    appDemo {
        resValue "string", "app_name", "AppName"
        resValue "string", "url_base_address", "https://baseurl.com"
        dimension "Environment"
    }

    appDev {
        applicationIdSuffix ".dev"
        resValue "string", "app_name", "Dev-AppName"
        resValue "string", "url_base_address", "https://baseurl.com"
        dimension "Environment"
    }

}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

lintOptions {
    disable 'LogNotTimber'
}

}

android.sourceSets {

test {
    java.srcDirs = ["src/main/java", "src/mock/java", "src/test/java"]
}

androidTest {
    java.srcDirs = ["src/main/java", "src/mock/java", "src/androidTest/java"]
}

appDemo {
    java.srcDirs = ["src/main/java", "src/real/java"]
}

appDev {
    java.srcDirs = ["src/main/java", "src/real/java"]
}
}

dependencies {
    //so many dependencies
}

repositories {
    mavenCentral()
}

这是我的proguard规则:
-keepclassmembers class 
android.support.design.internal.BottomNavigationMenuView {
    boolean mShiftingMode;
}
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

-keep class android.support.** { *; }
-keep interface android.support.** { *; }

当我尝试手动导入一些文件时,我看不到一些包和类,但我可以在 android studio 中使用搜索选项(双类)找到它们
enter image description here

我尝试过的事情:
  • 清理并重建项目
  • 使缓存无效并重新启动
  • 删除 .idea 和 .gradle 文件夹并重建
  • 同步项目
  • 更新构建工具

  • 当我回去调试时,问题不存在,所以问题似乎出在我的 Gradle 配置上。

    请帮我找出问题。

    最佳答案

    出于测试目的,将您的 app build.gradle 修改为不优化 apk 以进行发布构建。

    release {
            minifyEnabled false
            shrinkResources false
    
    ....
    ..}
    

    关于android - 将构建类型更改为 Release 会导致某些类出现 "Cannot resolve symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55183515/

    相关文章:

    android - 使用 android-databinding 方法格式化友好的日期

    java - 在屏幕上移动手指时 OnTouchListener ACTION_MOVE 不起作用

    android - Android应用程序构建调试成功,但在进行发布构建时找不到菜单项的R.id

    android - 尽管使用相同版本,所有com.android.support库都必须使用完全相同的版本规范

    android - 如何告诉 Gradle 在持续集成模板系统中重用依赖项?

    java - 在另一个类中调用包含textView和radio组的类

    java - Android 从所有文件夹加载媒体

    android-studio - Android Studio构建变体问题

    android - 在 Android SDK 文件夹中找不到 SDK Manager.exe

    android - 如何在 Android 中通过 Intent 传递具有不同数据的 Activity 的单个实例?