mapbox / mapbox/mapbox-navigation-android
InstructionView not being rendered in LayoutPreview
まだ誰も着手していません。
- 主要言語
- Kotlin
- スター
- 651
- フォーク
- 321
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
**Android API:**
**Mapbox Navigation SDK version:** 1.0.0-rc7 of both normal and ui sdk.
### Steps to trigger behavior
1. Include `com.mapbox.navigation.ui.instruction.InstructionView` in a layout
2. Build project
3. Layout Preview fails to render layout, as somewhere something uses `ConnectionPool`, which shouldn't be done when `isInEditMode()`.
### Expected behavior
InstructionView preview renders with static/sample data, showing the customized colors
### Actual behavior
Class can not be instantiated and therefore can't be previewed.
```
java.lang.NoClassDefFoundError: Could not initialize class okhttp3.internal.concurrent.TaskRunner
at okhttp3.ConnectionPool.(ConnectionPool.kt:41)
at okhttp3.ConnectionPool.(ConnectionPool.kt:47)
at okhttp3.OkHttpClient$Builder.(OkHttpClient.kt:445)
at com.mapbox.navigation.ui.instruction.GuidanceViewImageProvider.(GuidanceViewImageProvider.kt:36)
at com.mapbox.navigation.ui.instruction.InstructionView.(InstructionView.java:130)
at com.mapbox.navigation.ui.instruction.InstructionView.(InstructionView.java:180)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:403)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:186)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:144)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:309)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:416)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:427)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:331)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1123)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1097)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:501)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:348)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:404)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:678)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$8(RenderTask.java:809)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
```
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
スタックトレースに示されているInstructionViewのコンストラクターとGuidanceViewImageProviderの初期化から開始し、次にLayout Preview中にConnectionPoolが作成される箇所を追跡します。isInEditModeのパスを確認し、Layout Previewが静的データまたはサンプルデータとカスタマイズされた色を使って、例外なしにInstructionViewをレンダリングすることを検証します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- android, kotlin
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100