我的应用程序仅在替换以前的版本时崩溃

时间:2018-05-20 05:18:21

标签: android android-appcompat

我更新了我的游戏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">

我很想发布另一个更新以解决崩溃问题......目前我只需要提供大量支持邮件。不理想,但我想我可以找到一种方法来清除启动时这个新版本的用户数据,每个人都必须重新登录,这可能是一个更好的解决方案,然后崩溃所有人。

不幸的是我的游戏棋盘x2太大了,不能在这里发布,它是一个复杂的视图,主板游戏视图。但我怀疑它的颜色有问题..大多数颜色的定义如下:

android:background="?boardColor"

如果我删除了那些,那么它会撞击另一个也有类似颜色定义的控件。

任何指针都将不胜感激。

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了它。我有几个用户可以选择的主题。我在用户首选项中存储了所选主题的资源ID,因此我可以在后续启动时进行设置。除非我更新了sdk构建工具,否则这大部分都有效。那些资源ID已经更改,我将主题设置为资源ID,该资源ID不存在或属于其他组件。我现在只是存储一个简单的枚举int,映射到不同的主题,崩溃是固定的。我通过使用设备文件资源管理器并在我的应用程序的新旧版本之间区分共享pref文件来解决这个问题。只有一行是差异:

<int name="theme" value="2131624186" />

vs

<int name="theme" value="2131624226" />

谢谢你看看