google.android.gms: play-services-oss-licenses не работают после запутывания - PullRequest
0 голосов
/ 21 апреля 2019

Я работаю над персональным приложением для Android. Я не могу запустить OssLicensesMenuActivity после запутывания. Приложение вылетает. Работает нормально без запутывания.

startActivity(new Intent(getContext(), com.google.android.gms.oss.licenses.OssLicensesMenuActivity.class));

Вот моя конфигурация выпуска:

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

Я добавил эту строку в proguard-rules.pro:

- сохранить класс com.google.android.gms.oss.licenses. ** {*; } * +1010 *

Кроме того, я не смог увидеть документацию proguard в официальном руководстве: https://developers.google.com/android/guides/opensource

Только релизная версия моего приложения падает. Ошибка ниже от Logcat.

Можете ли вы помочь мне, почему возникает эта ошибка, и каково решение?

2019-04-21 13:03:01.051 com.myapp.myapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp.myapp, PID: 10763
    android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class x
    Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class x
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.x" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/lib/arm64, /data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:606)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at com.google.android.gms.oss.licenses.zzp.onComplete(:18)
        at com.google.android.gms.tasks.zzj.run(:4)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7045)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

1 Ответ

0 голосов
/ 21 апреля 2019

ОК, я нашел проблему.Я сохраняю ресурсы в res/raw/keep.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" 
    tools:keep="@drawable/*"/>

Я удалил tools:shrinkMode="strict" и проблема решена.Все отлично работает.

...