簡體   English   中英

應用程式套件Proguard錯誤

[英]App bundle Proguard error

我正在嘗試將一個應用程序上傳到Google Play控制台,但其說法是Your Android App Bundle contains an invalid Proguard deobfuscation file. 控制台錯誤

我的Proguard文件是

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
-dontwarn org.greenrobot.greendao.database.**
-dontwarn rx.**

-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception

-dontwarn org.codehaus.**
-dontwarn com.google.errorprone.annotations.**
-keep class android.support.v7.widget.SearchView { *; }

#Glide
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep class com.bumptech.glide.GeneratedAppGlideModuleImpl

應用程序級別build.gradle:

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

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'org.greenrobot.greendao'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

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

def gitSha = 'git rev-parse --short HEAD'.execute().text.trim()
project.logger.debug('git sha: ' + gitSha)

def applicationName = "App name"

android {
    signingConfigs {

        release {
            ...
        }
    }

    compileSdkVersion 27
    buildToolsVersion '28.0.0'
    buildTypes {
        release {
            applicationIdSuffix ".release"
            signingConfig signingConfigs.release
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            renameAPK(applicationName,'RELEASE')
        }
        debug {
            applicationIdSuffix ".debug"
            multiDexEnabled true
            renameAPK(applicationName,'DEBUG')
        }
    }
    defaultConfig {
        applicationId "com.app.id"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }


}

def renameAPK(applicationName,buildType) {
    def formattedDate = new Date().format('dd-MM-yy')
    project.ext.set("archivesBaseName", "${applicationName}-${buildType}-${formattedDate}".toString())
}

greendao {
    schemaVersion 2
}

dependencies {
    implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
    implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
    implementation "com.google.android.gms:play-services-location:15.0.1"
    implementation "com.google.firebase:firebase-core:16.0.1"
    implementation "com.google.firebase:firebase-messaging:17.1.0"
    implementation "com.google.firebase:firebase-perf:16.0.0"
    implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.9'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"
    implementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"
    implementation "com.google.dagger:dagger:$rootProject.dagger2Version"
    annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
    annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
    implementation "com.google.dagger:dagger-android-support:$rootProject.dagger2Version"
    compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
    implementation 'org.greenrobot:greendao:3.2.2'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
        transitive = true
    }
    implementation 'javax.annotation:javax.annotation-api:1.3.2'
    annotationProcessor "com.github.bumptech.glide:compiler:$rootProject.glideVersion"
    implementation "com.github.bumptech.glide:glide:$rootProject.glideVersion"
    implementation 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2'
    implementation 'uk.co.chrisjenx:calligraphy:2.2.0'
    implementation 'com.jakewharton.timber:timber:4.6.0'
    implementation 'us.belka:androidtoggleswitch:1.2.2'
    implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
    implementation 'com.github.jkwiecien:EasyImage:1.3.1'
    implementation 'id.zelory:compressor:2.1.0'
    testImplementation 'junit:junit:4.12'
    testImplementation "org.mockito:mockito-core:$rootProject.mockitoVersion"
    androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
    testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
    androidTestAnnotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
    androidTestImplementation "org.mockito:mockito-core:$rootProject.mockitoVersion"
    androidTestImplementation("com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion", {
        exclude group: "com.android.support", module: "support-annotations"
    })
    androidTestImplementation "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
    debugImplementation "com.amitshekhar.android:debug-db:$rootProject.debugDBVersion"
    devImplementation "com.amitshekhar.android:debug-db:$rootProject.debugDBVersion"
    debugImplementation "com.squareup.leakcanary:leakcanary-android:$rootProject.leakCanaryVersion"
    debugImplementation "com.android.support:multidex:$rootProject.multidexVersion"
    devImplementation "com.android.support:multidex:$rootProject.multidexVersion"
    devImplementation "com.squareup.leakcanary:leakcanary-android:$rootProject.leakCanaryVersion"
    releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$rootProject.leakCanaryVersion"
}

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

configurations.all {
    resolutionStrategy.force "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
}

和頂級build.gradle

   buildscript {
        repositories {
            jcenter()
            google()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.3.0-alpha02'

            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
            classpath 'com.google.gms:google-services:3.2.0'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
            classpath 'com.google.firebase:firebase-plugins:1.1.5'
        }
    }

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }

            google()
        }
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }

    // Define versions in a single place
    ext {

        // App dependencies
        supportLibraryVersion = '27.1.1'
        glideVersion = '4.7.1'
        retrofitVersion = '2.3.0'
        dagger2Version = '2.16'
        butterKnifeVersion = '8.8.1'
        debugDBVersion = '1.0.1'
        playServicesVersion = '12.0.1'
        leakCanaryVersion = '1.5.4'
        multidexVersion = '1.0.3'

        //Test dependencies
        junitVersion = '4.12'
        espressoVersion = '2.3-alpha'
        mockitoVersion = '2.7.1'
    }

謝謝。

您的Android應用程序捆綁包包含無效的Proguard去模糊文件。

閱讀Decode an obfuscated stack trace

ProGuard每次運行時都會創建一個mapping.txt文件,該文件顯示了映射到混淆名稱的原始類,方法和字段名稱。 ProGuard將文件保存在應用程序<module-name>/build/outputs/mapping/release/ directory

請注意,每次使用ProGuard創建發布版本時, mapping.txt文件都會被覆蓋,因此,每次發布新版本時,都必須仔細保存副本。 通過為每個發行版保留一個mapping.txt文件的副本,如果用戶從較早版本的應用程序提交了經過混淆的堆棧跟蹤,就可以調試問題。

閱讀上Upload a ProGuard mapping file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM