android gradle plugin 3.0.0-alpha2: Error inflatin

2019-03-13 06:58发布

问题:

after upgrading the android gradle plugin from 3.0.0-alpha1 to 3.0.0-alpha2 my application does not start anymore: part of the stacktrace:

05-27 09:14:57.692 3015-3015/com.tmtron.dscontrol2app.debug E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.tmtron.dscontrol2app.debug, PID: 3015
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tmtron.dscontrol2app.debug/com.tmtron.dscontrol2.gui.MainActivity}: android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class android.support.v7.widget.FitWindowsLinearLayout
   Caused by: android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class android.support.v7.widget.FitWindowsLinearLayout
   Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.v7.widget.FitWindowsLinearLayout
   Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.FitWindowsLinearLayout" on path: DexPathList[[zip file "/data/app/com.tmtron.dscontrol2app.debug-ZE45jTeV6eTnNIeveAjAbw==/base.apk", zip file "/data/app/com.tmtron.dscontrol2app.debug-ZE45jTeV6eTnNIeveAjAbw==/split_lib_dependencies_apk.apk", zip file "/data/app/com.tmtron.dscontrol2app.debug-ZE45jTeV6eTnNIeveAjAbw==/split_lib_slice_0_apk.apk", zip file "/data/app/com.tmtron.dscontrol2app.debug-..."/data/app/com.tmtron.dscontrol2app.debug-ZE45jTeV6eTnNIeveAjAbw==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.tmtron.dscontrol2app.debug-ZE45jTeV6eTnNIeveAjAbw==/lib/x86, /system/lib, /system/vendor/lib]]
      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
      at com.tmtron.dscontrol2.gui.MainActivity.onCreate(MainActivity.java:41)
      at android.app.Activity.performCreate(Activity.java:6954)
05-27 09:14:57.693 3015-3015/com.tmtron.dscontrol2app.debug E/AndroidRuntime:     
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)

It seems like the class android.support.v7.widget.FitWindowsLinearLayout is not found anymore.

Any ideas?

BTW: I have already tried to do all kinds of cleanup, invalidate-caches, restart, etc. as mentioned in this SO.

回答1:

I think this is a temporarily bug. Proparbly Proguard removes this class because of some reason, therefore this exception occurs. For now the easiest solution might be to disable Proguard in the build.gradle file. If you still want to keep it, you will have to change your proguard settings.

This is what I did and what worked for me:

-dontwarn android.support.v7.**
-keep class android.support.v7.widget.** { *; }

As I also had issues with constraint and design libray I added this:

-dontwarn android.support.constraint.** -keep class android.support.constraint.** { *; } -dontwarn android.support.design.** -keep class android.support.design.** { *; }

I hope it helps you:)



回答2:

UPDATE
This bug has already been fixed - it works for me with gradle plugin 3.0.0-alpha4

ORIGINAL answer (kept for reference)

Actually I didn't have ProGuard enabled for my debug builds, but the Shrinker of the Android Gradle Plugin (which uses the same proguard files.

Temporary workaround for the issue: add the following instructions to the proguard-rules.pro file:

-keep class android.support.v7.widget.** { *; }
-keep class android.support.v4.widget.** { *; }
-keep class android.support.design.** { *; }
-keep class com.bluelinelabs.conductor.** { *; }