私のアプリの一部のユーザーはこのクラッシュを経験しています。Samsungデバイスに関連している可能性があります。他の誰かがこの問題を経験し、解決策を見つけましたか?
Java.lang.NoClassDefFoundError: Android.support.v7.appcompat.R$layout
at Android.support.v7.app.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.Java:297)
at Android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.Java:225)
at Android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.Java:102)
at com.afollestad.impression.ui.MainActivity.onCreate(MainActivity.Java:160)
at Android.app.Activity.performCreate(Activity.Java:5451)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1093)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2359)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2453)
at Android.app.ActivityThread.access$900(ActivityThread.Java:173)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:136)
at Android.app.ActivityThread.main(ActivityThread.Java:5579)
at Java.lang.reflect.Method.invokeNative(Method.Java)
at Java.lang.reflect.Method.invoke(Method.Java:515)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1268)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:1084)
at dalvik.system.NativeStart.main(NativeStart.Java)
行160は、アクティビティのコンテンツビューを設定します。コンテンツビューは次のとおりです。
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.afollestad.lessen.ui.MainActivity"
Android:fitsSystemWindows="true">
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="?popup_theme" />
<FrameLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</LinearLayout>
<FrameLayout
Android:layout_width="@dimen/navigation_drawer_width"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
Android:layout_gravity="start">
<fragment
Android:id="@+id/navigation_drawer"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:name="com.afollestad.impression.fragments.NavDrawerFragment"
tools:layout="@layout/fragment_navdrawer"
Android:tag="NAV_DRAWER" />
</FrameLayout>
</Android.support.v4.widget.DrawerLayout>
フラグメントは単純なリストフラグメントです。
次の構成でProguardを使用して問題を修正しました。
-keep class !Android.support.v7.internal.view.menu.**,** {*;}
-dontwarn
-ignorewarnings
-dontshrink
新しいバージョンのGradleでProguardを有効にするには(Android Studio):
Android {
...
buildTypes {
debug {
...
}
release {
...
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
proguard-rules.proは、上部のプロパティが移動する場所です。
アプリケーションでmultidexを使用する場合は、MultiDexApplicationからApplicationクラスを拡張します。
api compat support-v7を使用している場合、それへの参照をマークする必要があるライブラリは、モジュールを除外します: 'support-v4'
例えば:
compile( 'com.Android.support:cardview-v7:22.2.0'){exclude module: 'support-v4'}