Пустой указатель Samsung Note 3 версии 4.4.4 в ViewRootImpl.setMultiWindowScale
У меня есть отчет от пользователя с Samsung Note 3 и Android 4.4.4. Это сбрасывает здесь:
SM-N900P 4.4.4 19
java.lang.NullPointerException
at android.view.ViewRootImpl.setMultiWindowScale(ViewRootImpl.java:7992)
at android.view.WindowManagerGlobal.setMultiWindowScale(WindowManagerGlobal.java:538)
at com.android.internal.policy.impl.MultiPhoneWindow.adjustScaleFactor(MultiPhoneWindow.java:1602)
at com.android.internal.policy.impl.MultiPhoneWindow.access$2300(MultiPhoneWindow.java:107)
at com.android.internal.policy.impl.MultiPhoneWindow$MultiPhoneDecorView.onAttachedToWindow(MultiPhoneWindow.java:1120)
at android.view.View.dispatchAttachedToWindow(View.java:13637)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2703)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1533)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1270)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6686)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
at android.view.Choreographer.doCallbacks(Choreographer.java:613)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5727)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Его нет в моем коде, и я не могу воспроизвести его в эмуляторе, поскольку не могу создать AVD с 4.4.4. С AVD 4.4.2 все работает. Я попробовал физический телефон в магазине / магазине с версией 4.4.2, и он работает. Однако я не могу заполучить версию 4.4.4.
- Как я могу создать и AVD с 4.4.4?
- Почему Google не предоставляет 4.4.4 AVD?
- У кого-нибудь есть идея, как решить проблему с дампом?
- Я даже не могу найти строку 7992 и метод setMultiWindowScale в AOSP?
Спасибо!
1 ответ
Как я могу создать и AVD с 4.4.4?
Genymotion позволит вам эмулировать Samsung Note 3, работающий на 4.4.4.
Он имеет поддержку плагинов для Eclipse и Android Studio, следуйте инструкциям здесь для установки.
Почему Google не предоставляет 4.4.4 AVD?
Я не знаю, почему не AVD, но они предоставляют двоичные файлы для 4.4.4, если у вас есть доступ к устройству Nexus, вы можете проверить или подтвердить, что проблема связана только с Samsung.
У кого-нибудь есть идея, как решить проблему с дампом?
Приведенная выше трассировка стека выглядит так, как будто исключение было сгенерировано после того, как ваше приложение было присоединено к мультиокну, и представление было масштабировано, или, по крайней мере, оно будет масштабировано, если этот NPE не был брошен. Проверьте настройки манифеста, используя это пошаговое руководство для поддержки нескольких окон, проверьте максимальный и минимальный размеры окон. Если эмулятор не работает и если вы не можете воспроизвести исключение, в крайнем случае дайте этому пользователю возможность как-нибудь связаться с ним, чтобы воспроизвести проблему / протестируйте свое решение и выполните итерацию до ее устранения. Удачи!
Я даже не могу найти строку 7992 и метод setMultiWindowScale в AOSP?
Поскольку это очень похоже на конкретную реализацию Samsung класса android.view.ViewRootImpl для поддержки многооконных и других устройств Samsung, я сомневаюсь, что вы можете найти реальный исходный код, если Samsung не опубликовал его где-нибудь.