web-dev-qa-db-ja.com

GooglePlay開発者サービス11.8.0へのアップデート後にProguardが機能しない

Google Play開発者サービスを11.8.0(11.6.2から)に更新した後、ビルドが機能しなくなります。

これは私が得たものです:

スタックサイズの計算中に予期しないエラーが発生しました:クラス= [com/google/Android/gms/internal/zzao]メソッド= [zzf(Ljava/lang/String;)J]例外= [Java.lang.IllegalArgumentException](スタックサイズが負になります命令[23]の後[com/google/Android/gms/internal/zzao.zzf(Ljava/lang/String;)J]のinvokestatic#146)失敗:ビルドが例外で失敗しました。

Android Studio3.0.1とGradle4.4.1を使用しています

私のアプリbuild.gradleファイル

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

    dependencies {
        classpath "io.fabric.tools:gradle:1.25.1"
    }
}

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

apply plugin: "com.Android.application"
apply plugin: "io.fabric"
apply plugin: "let"
apply plugin: "realm-Android"

Android {
    compileSdkVersion project.androidSDKVersion
    buildToolsVersion("$androidBuildToolsVersion")

    defaultConfig {
        versionCode project.versionCode
        versionName project.versionName

        minSdkVersion project.androidMinSdkVersion
        targetSdkVersion project.androidTargetSdkVersion

        vectorDrawables.useSupportLibrary = true
        resConfigs "pl"
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources false
            crunchPngs false
            proguardFiles getDefaultProguardFile("proguard-Android-optimize.txt"), "proguard-rules.pro", "proguard-fresco.pro"
            signingConfig signingConfigs.release
        }
        debug {
            ext.enableCrashlytics = false
            ext.alwaysUpdateBuildId = false
        }
    }

    flavorDimensions "tier", "minApi"

    productFlavors {
        minApi21 {
            minSdkVersion project.androidMinDevSdkVersion
            dimension "minApi"
        }

        minApi16 {
            minSdkVersion project.androidMinSdkVersion
            dimension "minApi"
        }

        dev {
            multiDexEnabled true
            dimension "tier"
        }

        prod {
            multiDexEnabled false
            dimension "tier"
        }
    }

    variantFilter { variant ->
        def names = variant.flavors*.name

        if (names.contains("prod") && names.contains("minApi21")) {
            setIgnore(true)
        }
    }

    applicationVariants.all { variant ->
        appendVersionNameVersionCode(variant, defaultConfig)
    }

    lintOptions {
        checkReleaseBuilds false
        textReport true
        textOutput "stdout"
        fatal "UnusedResources"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    debugImplementation("com.Android.support:multidex:$multidexVersion")

    implementation("com.Android.support:support-fragment:$androidSupportVersion")
    implementation("com.Android.support:support-annotations:$androidSupportVersion")
    implementation("com.Android.support:appcompat-v7:$androidSupportVersion")
    implementation("com.Android.support:design:$androidSupportVersion")
    implementation("com.Android.support:recyclerview-v7:$androidSupportVersion")
    implementation("com.Android.support:cardview-v7:$androidSupportVersion")
    implementation("com.Android.support:customtabs:$androidSupportVersion")
    implementation("com.Android.support.constraint:constraint-layout:$constraintLayoutVersion")
    implementation("com.Android.installreferrer:installreferrer:$installReferrerVersion")

    implementation("com.google.Android.gms:play-services-analytics:$playServicesVersion")
    implementation("com.google.Android.gms:play-services-location:$playServicesVersion")
    implementation("com.google.Android.gms:play-services-ads:$playServicesVersion")
    implementation("com.google.Android.gms:play-services-auth:$playServicesVersion")

    implementation("com.google.firebase:firebase-core:$playServicesVersion")
    implementation("com.google.firebase:firebase-messaging:$playServicesVersion")
    implementation("com.google.firebase:firebase-config:$playServicesVersion")
    implementation("com.google.firebase:firebase-auth:$playServicesVersion")
    implementation("com.google.firebase:firebase-invites:$playServicesVersion")

    (...) // I had removed other dependencies from the list
}

def appendVersionNameVersionCode(variant, defaultConfig) {
    variant.outputs.all { output ->

        def versionCode = Android.defaultConfig.versionCode

        output.versionCodeOverride = versionCode
        outputFileName = "${rootProject.name}-${variant.name}-${variant.versionName}-${versionCode}.apk"
    }
}

apply plugin: "com.google.gms.google-services"
15
PiotrWpl

最適化を完全に無効にする必要はありません。問題のあるクラスを最適化するだけです。私は同じ問題を抱えていて、proguard-rules.proファイルに以下を追加することでそれを回避しました:

-keep class com.google.Android.gms.internal.** { *; }
17
jnp

同様の問題があります。提案されているように このSOスレッド あなたはあなたのbuild.gradleファイルにこれらの行を追加する必要があります:

...
release {
   debuggable false
   useProguard true
   ...
}
...

また、以下を置き換えることでプロガードの最適化を削除する必要がありました。

proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'

沿って

proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
1
sonic