14

Crashlytics でこのエラーを見つけましたが、Android Nougat のプレビュー バージョンを使用しているユーザーに対してのみクラッシュしているようです。

起動時にアプリがクラッシュする (メイン アクティビティ)。

スタックトレース

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.domain/com.my.domain.activities.MainActivity}: android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID #0x7f020057
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
   at android.app.ActivityThread.-wrap12(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6077)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID #0x7f020057
   at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:840)
   at android.content.res.Resources.loadColorStateList(Resources.java:998)
   at android.content.res.TypedArray.getColor(TypedArray.java:447)
   at android.app.Activity.onApplyThemeResource(Activity.java:4039)
   at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java:198)
   at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java:140)
   at android.app.Activity.setTheme(Activity.java:4009)
   at android.support.v7.app.AppCompatActivity.setTheme(AppCompatActivity.java:90)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2592)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
   at android.app.ActivityThread.-wrap12(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6077)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

アプリで使用しているシステム カラーの一部が Android Nougat でサポートされなくなったようです。しかし、それを修正する方法が正確にはわかりません。

編集

それで、 RファイルでID 0x7f020057のリソースを見つけました。これがそれです:

public static final int background_splash_gradient=0x7f020057;

私はそれを使用している場所を確認しましたが、ここにあります:

<style name="StartingWindowTheme" parent="AppTheme">
    <item name="android:windowBackground">@drawable/background_splash_gradient</item>
    <item name="android:colorBackground">@drawable/background_splash_gradient</item>
</style>

これはbackground_splash_gradiend xml ファイルです。

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<gradient
    android:angle="135"
    android:endColor="#00d49e"
    android:startColor="#00bcd4"/>

</shape>

これが Nougat で問題を引き起こしている理由はまだわかりません。「StartingWindowTheme」スタイルを削除してみましたが、アプリが機能するようになり、クラッシュしなくなりました。しかし、それよりも良い修正が必要です。

編集 2

だから私はこの行を削除しようとしました:

<item name="android:colorBackground">@drawable/background_splash_gradient</item>

そして、それは機能します。が問題のようandroid:colorBackgroundです。

一時的な修正

問題は上記の行にあるため、Nougat のみ、values-v24フォルダーを作成してその行を削除しました。アプリは現在 Nougat で動作しますが、より良い解決策があれば幸いです。

4

2 に答える 2

10

問題がどこにあり、どのように修正するかを見つけました。これが解決策です。簡単に説明します。

この行が問題の原因でした:

<item name="android:colorBackground">@drawable/background_splash_gradient</item>

XML で drawable を colorBackground として設定できないことが判明したため、この行を削除すると機能します。

これが Nougat でのみクラッシュした理由は、これが以前のバージョンで可能だったためです。

于 2016-11-13T16:07:35.283 に答える