2014-09-30 32 views
3

我有一個用戶使用三星Note 3和Android 4.4.4的報告。它丟棄在這裏:Samsung Note 3 4.4.4版空指針在ViewRootImpl.setMultiWindowScale

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) 

這不是在我的代碼,我不能重現它在一個仿真器,因爲我不能4.4.4創建AVD。 隨着AVD 4.4.2它的工作。我已經在4.4.2版本的商店/商店嘗試過物理電話,並且工作正常。但是我不能理解4.4.4版本。

  1. 如何創建和4.4.4的AVD?
  2. 爲什麼Google不提供4.4.4 AVD?
  3. 任何一個想法如何解決轉儲?
  4. 我什至不能找到AOSP行7992和方法setMultiWindowScale?

謝謝!

+1

AOSP中沒有setMultiWindowScale(),AVD在這裏沒有幫助,因爲它是三星定製版Android的一部分。所以要知道破解的唯一方法就是看三星專有的源代碼。 – alanv 2014-10-01 01:00:51

+1

我也有這個問題。它只發生在Note 3(SM N900P)的Sprint版本上。 – theJosh 2015-01-31 17:49:42

+0

@theJosh你是否有意嘗試爲你的應用程序添加多窗口支持?如果是這樣的交叉檢查你的實現[這裏](http://stackoverflow.com/a/14185426/1505341)。你能在模擬器上重現問題嗎? – mass 2015-02-07 09:08:48

回答

2

如何創建和4.4.4的AVD?

Genymotion將讓你仿效在4.4.4上運行的Samsung Note 3。

它具有Eclipse和Android Studio的插件支持,請按照說明here進行安裝。

enter image description here

爲什麼谷歌不提供4.4.4 AVD?

我不知道爲什麼不AVD,但它們對於4.4.4 here提供的二進制文件,如果你有機會獲得一臺Nexus設備可能要仔細檢查/確認問題是三星不僅關係。

任何想法如何解決轉儲?

上面貼出的堆棧跟蹤看起來像是在你的應用程序被連接到多窗口並且視圖被縮放之後拋出​​的異常,或者如果沒有拋出NPE,它至少會被縮放。使用此step by step guide檢查您的清單設置以支持多窗口,檢查最大和最小窗口大小。如果仿真程序不起作用,並且如果無法重現異常,作爲最後的手段以某種方式觸及該用戶並進行通信以重現問題/測試您的解決方案並重復執行,直到其固定。祝你好運!

我甚至找不到行7992和方法setMultiWindowScale在 AOSP?

由於這看起來有很大關係到三星具體實施android.view.ViewRootImpl類,支持多窗口和其他三星的東西,我懷疑,你可以找到實際的源代碼,除非三星已發表它某處。

+0

該問題在模擬器上不會發生。我現在有2個備註3設備供測試。一切工作正常Verizon設備上,但在Sprint設備上一致崩潰。 Crashlytics的報告顯示了相同的結果。 – theJosh 2015-02-08 19:50:04

+0

我對Sprint和Verizon之間的區別並不十分確定,它只是在硬件還是軟件上?你有沒有機會去調試你傳遞給setMultiWindowScale方法的參數?如比例因子或分辨率。我擔心這兩款手機會有不同類別的實現,這可能是根本原因。在這種情況下,您應該考慮禁用該特定設備的多窗口支持,直到該錯誤被製造商解決。 – mass 2015-02-09 07:38:51