Изменение типа сборки вызывает «Не удается разрешить символ» для некоторых классов. - PullRequest
1 голос
/ 15 марта 2019

Когда я меняю тип сборки на релиз, некоторые из моих классов отображаются как «Не удается найти символ» в андроид-студии. Даже если ошибка отображается, приложение успешно собрано и запущено. Когда я возвращаюсь к отладке, эти файлы распознаются правильно.

Это мой 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()
}

Это мои правила защиты:

-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

То, что я пробовал:

  1. Очистить и восстановить проект
  2. Недействительный кеш и перезапуск
  3. Удалил папки .idea и .gradle и перестроил
  4. Синхронизирован проект
  5. обновление инструментов сборки

Когда я возвращаюсь к отладке, проблема не возникает, поэтому, похоже, проблема в моей конфигурации Gradle.

Пожалуйста, помогите мне найти проблему.

1 Ответ

0 голосов
/ 19 марта 2019

В целях тестирования измените ваше приложение build.gradle, чтобы не оптимизировать apk для сборки выпуска.

release {
        minifyEnabled false
        shrinkResources false

....
..}
...