我的应用程序仅在替换以前的版本时崩溃
My app crashes only when replacing a previous version
我更新了我的游戏 Upwords 以使用 firebase 进行推送通知,并且还更新了最新版本的构建工具。许多(大多数?)更新游戏的用户发现它在启动时崩溃。似乎解决方法是进入“设置”->“应用程序”->“Upwords”->“存储”->“清除用户数据”...然后重新启动。任何人安装新的都很好。我想我已经重现了崩溃:
05-19 22:11:06.457 27138-27138/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.lonelystarsoftware.upwords, PID: 27138
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lonelystarsoftware.upwords/com.lonelystarsoftware.upwords.MainActivity}: android.view.InflateException: Binary XML file line #82: Binary XML file line #82: Error inflating class Button
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(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: android.view.InflateException: Binary XML file line #82: Binary XML file line #82: Error inflating class Button
Caused by: android.view.InflateException: Binary XML file line #82: Error inflating class Button
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 4: TypedValue{t=0x2/d=0x1010099 a=1}
at android.content.res.TypedArray.getColor(TypedArray.java:459)
at android.widget.TextView.<init>(TextView.java:771)
at android.widget.Button.<init>(Button.java:109)
at android.widget.Button.<init>(Button.java:105)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:71)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:67)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivity.setContentView(SlidingActivity.java:61)
at com.lonelystarsoftware.upwords.MainActivity.onCreate(MainActivity.java:101)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
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(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
似乎 TypedValue 有问题.. 可能是我在自定义主题中定义的颜色之一。我一直在读到有些人如果不使用 Appcompat 就会出现问题,所以我已经添加了它,但仍然看到同样的问题。我的应用程序有几个颜色主题(用户可选择)..它们都是基于这个:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
我很乐意发布另一个更新来修复崩溃问题.. 目前我只需要发送大量支持邮件。不太理想,但我想我可以找到一种方法来在发布时清除这个新版本的用户数据,并且每个人都必须重新登录,这可能是一个更好的解决方案,然后让每个人都崩溃。
不幸的是我的游戏板 xml 太大了 post 这里,这是一个复杂的视图,主要的棋盘游戏视图。但我怀疑我的颜色有问题.. 大多数颜色的定义如下:
android:background="?boardColor"
如果我删除它们,那么它会在另一个也具有相似颜色定义的控件上崩溃。
如有指点,我们将不胜感激。
好的,我终于找到了。我有几个用户可以 select 的主题。我将 selected 主题的资源 ID 存储在用户首选项中,以便我可以在后续启动时设置它。除了当我更新 sdk 构建工具时,这大部分都有效。然后那些资源 ID 发生了变化,我将主题设置为不存在或属于其他组件的资源 ID。我现在只是存储一个映射到不同主题的简单枚举整数,并且崩溃已修复。我通过使用设备文件资源管理器并在我的应用程序的新旧版本之间区分共享 pref 文件来解决这个问题。只有一行是 diff:
<int name="theme" value="2131624186" />
对比
<int name="theme" value="2131624226" />
感谢观看
我更新了我的游戏 Upwords 以使用 firebase 进行推送通知,并且还更新了最新版本的构建工具。许多(大多数?)更新游戏的用户发现它在启动时崩溃。似乎解决方法是进入“设置”->“应用程序”->“Upwords”->“存储”->“清除用户数据”...然后重新启动。任何人安装新的都很好。我想我已经重现了崩溃:
05-19 22:11:06.457 27138-27138/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.lonelystarsoftware.upwords, PID: 27138
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lonelystarsoftware.upwords/com.lonelystarsoftware.upwords.MainActivity}: android.view.InflateException: Binary XML file line #82: Binary XML file line #82: Error inflating class Button
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(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: android.view.InflateException: Binary XML file line #82: Binary XML file line #82: Error inflating class Button
Caused by: android.view.InflateException: Binary XML file line #82: Error inflating class Button
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 4: TypedValue{t=0x2/d=0x1010099 a=1}
at android.content.res.TypedArray.getColor(TypedArray.java:459)
at android.widget.TextView.<init>(TextView.java:771)
at android.widget.Button.<init>(Button.java:109)
at android.widget.Button.<init>(Button.java:105)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:71)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:67)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivity.setContentView(SlidingActivity.java:61)
at com.lonelystarsoftware.upwords.MainActivity.onCreate(MainActivity.java:101)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
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(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
似乎 TypedValue 有问题.. 可能是我在自定义主题中定义的颜色之一。我一直在读到有些人如果不使用 Appcompat 就会出现问题,所以我已经添加了它,但仍然看到同样的问题。我的应用程序有几个颜色主题(用户可选择)..它们都是基于这个:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
我很乐意发布另一个更新来修复崩溃问题.. 目前我只需要发送大量支持邮件。不太理想,但我想我可以找到一种方法来在发布时清除这个新版本的用户数据,并且每个人都必须重新登录,这可能是一个更好的解决方案,然后让每个人都崩溃。
不幸的是我的游戏板 xml 太大了 post 这里,这是一个复杂的视图,主要的棋盘游戏视图。但我怀疑我的颜色有问题.. 大多数颜色的定义如下:
android:background="?boardColor"
如果我删除它们,那么它会在另一个也具有相似颜色定义的控件上崩溃。
如有指点,我们将不胜感激。
好的,我终于找到了。我有几个用户可以 select 的主题。我将 selected 主题的资源 ID 存储在用户首选项中,以便我可以在后续启动时设置它。除了当我更新 sdk 构建工具时,这大部分都有效。然后那些资源 ID 发生了变化,我将主题设置为不存在或属于其他组件的资源 ID。我现在只是存储一个映射到不同主题的简单枚举整数,并且崩溃已修复。我通过使用设备文件资源管理器并在我的应用程序的新旧版本之间区分共享 pref 文件来解决这个问题。只有一行是 diff:
<int name="theme" value="2131624186" />
对比
<int name="theme" value="2131624226" />
感谢观看