Мое приложение падает только при замене предыдущей версии - PullRequest
0 голосов
/ 20 мая 2018

Я обновил свою игру Upwords, чтобы использовать FireBase для push-уведомлений, а также обновил инструменты сборки до последней версии.Многие (большинство?) Пользователей, обновляющих игру, обнаруживают, что она вылетает при запуске.Похоже, что исправить это зайти в Настройки-> Приложения-> 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 игровой доски слишком велик для размещения здесь, это сложный вид, основной вид настольной игры.Но я подозреваю, что у него проблемы с моими цветами ... большинство цветов определены как:

android:background="?boardColor"

Если я удаляю их, то происходит сбой в другом элементе управления, который также имеет аналогичные определения цвета.

Любые указатели будут оценены.

1 Ответ

0 голосов
/ 21 мая 2018

Хорошо, я наконец отследил это.У меня есть несколько тем, которые пользователь может выбрать.Я сохранял идентификатор ресурса выбранной темы в настройках пользователя, чтобы я мог установить его при последующих запусках.В основном это работало, за исключением случаев, когда я обновлял инструменты сборки sdk ... затем эти идентификаторы ресурсов менялись, и я устанавливал тему для идентификатора ресурса, который либо не существует, либо принадлежит другому компоненту.Сейчас я просто храню простой enum int, который сопоставляется с различными темами, и сбой исправлен.Я понял это с помощью Обозревателя файлов устройств и определил общий преф-файл между новой и старой версиями моего приложения.Различалась только одна строка:

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

против

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

Спасибо, что посмотрели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...