Средство просмотра PDF для Android аварийно завершает работу при минимизации приложения

Я использую https://github.com/barteksc/AndroidPdfViewer для отображения pdf в своем приложении. Но когда я создаю приложение с истинным сокращением и сокращением ресурсов, мое приложение падает, когда приложение начинает отображать средство просмотра PDF.

Ошибка, которую я получаю

2020-01-13 17:05:55.589 10984-10984/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: <package>, PID: 10984
    j.e
        at e.h.a.a.e.c.a()
        at <package>.ui.dialog.PdfViewerDialog.a()
        at androidx.fragment.app.Fragment.b()
        at b.k.a.h.a()
        at b.k.a.h.i()
        at b.k.a.h.a()
        at b.k.a.a.c()
        at b.k.a.h.b()
        at b.k.a.h.a()
        at b.k.a.h.c()
        at b.k.a.h.s()
        at b.k.a.h$a.run()
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6269)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

person RateM    schedule 13.01.2020    source источник
comment
учитывали ли вы правила ProGuard : -keep class com.shockwave.** ?   -  person javadroid    schedule 13.01.2020
comment
Какую ошибку вы получили, пожалуйста, уточните и опубликуйте здесь.   -  person InsaneCat    schedule 13.01.2020
comment
@InsaneCat Я добавил ошибку во время сбоя, но это бесполезно   -  person RateM    schedule 13.01.2020
comment
@javadroid Да, я попробовал это из первых рук, но ничего не произошло   -  person RateM    schedule 13.01.2020
comment
shabyWoks ты ли это? я нахожу решение @RateM   -  person InsaneCat    schedule 13.01.2020
comment
@InsaneCat Я такой же.   -  person RateM    schedule 13.01.2020
comment
Если мой ответ поможет вам, отметьте мой ответ как правильный, иначе я удалю этот ответ, брат: google.com/:   -  person InsaneCat    schedule 25.01.2020


Ответы (2)


добавить строку ниже в proguard-rules.pro

 -keep class com.shockwave.**
person jai khambhayta    schedule 13.01.2020
comment
проверьте тот же код раздела релиза в build.gradle -> release { proguardFiles getDefaultProguardFile ('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release debuggable false minifyEnabled true shrinkResources true } - person jai khambhayta; 13.01.2020
comment
Это же только. - person RateM; 13.01.2020
comment
добавить --kepp ui.dialog.PdfViewerDialog путь PdfViwerDialog в proguard-rules.pro - person jai khambhayta; 13.01.2020
comment
Я добавил -keep class com.‹pckage›.ui.dialog.pdf-viewer-dialog.kt, но результат тот же - person RateM; 13.01.2020
comment
можешь отправить краш - person jai khambhayta; 13.01.2020
comment
лог ошибок есть в посте - person RateM; 13.01.2020

Замените содержимое proguard-rules.pro приведенным ниже фрагментом кода.

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/hbb20/AndroidSDK/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}
-ignorewarnings
-keep class com.shockwave.**
-keep class * {
    public private *;
}

Уровень уровня приложения:

buildscript {
    repositories {
        google()
        jcenter()
    }
}

repositories {
    google()
    jcenter()
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 3
        versionName "3.0.0"
    }

    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            debuggable true
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation project(':android-pdf-viewer')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'org.androidannotations:androidannotations-api:4.6.0'
    annotationProcessor "org.androidannotations:androidannotations:4.6.0"
}

Уровень проекта:

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()

        maven {
            url 'https://maven.google.com/'
        }
    }
}

введите здесь описание изображения Надеюсь, это поможет вам.

person InsaneCat    schedule 13.01.2020
comment
Какая польза от -keep class * {public private *; } - person RateM; 13.01.2020
comment
Вы пробовали запускать приложение без minifyEnabled false , ложное сжатие ресурсов или нет? - person InsaneCat; 13.01.2020
comment
Демо-версия запущена на моем мобильном телефоне с параметром minifyEnabled true, а сhrightResources — true. - person InsaneCat; 13.01.2020
comment
Да, он работает, и проблема в вашем фрагменте может быть не реализована должным образом. - person InsaneCat; 13.01.2020