

Cordova でiOS向けのハイブリッドアプリを開発しています。  
標準のUIWebViewだと動作が遅いため、WKWebViewを利用しています。

現状、Cordovaは、まだWKWebViewに正式対応していないため、開発中のwkwebview-engineを利用してます。  
<https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine>

## 問題

このwkwebview-
engineは開発バージョンですが、アプリは問題なく動作しています。ただ、input要素(type=text)や、textareaに日本語を入力しようとすると、WKWebViewがcrashして落ちてしまいます。

Cordova+WKWebViewの環境は以下のようにして作成してます。

[code]

    $ cordova create hello com.example.hello "HelloWorld"
    $ cd hello
    $ cordova platform add ios@4.0.x --usegit
    $ cordova plugin add https://github.com/apache/cordova-plugins.git#master:wkwebview-engine
    
[/code]

www/index.html にinput type="text"
の要素を追加して実機で動作させ、input要素に対して日本語入力をするとWKWebViewがcrashします。

## これまでに調査した内容

WKWebView単体で利用した場合、日本語入力はできました。  
Cordovaと併用してWKWebViewを利用した場合に発生する問題のようです。  
なお、エミュレータでは問題なく入力できました。実機で動作させた場合のみ発生します。

## 環境

私の環境は以下の通りです。  
iPad Air2 (iOS 8.4.1)  
Cordova 5.2.0  
cordova-ios: 4.0.x

## クラッシュログ

[code]

    Incident Identifier: DE387028-4C20-4E1E-B3E2-3B90B6160C8B
    CrashReporter Key:   8efab59a8f19fbe4dc7c57c0483ef6ceba677767
    Hardware Model:      iPad5,4
    Process:             com.apple.WebKit.WebContent [1506]
    Path:                /System/Library/Frameworks/WebKit.framework/XPCServices/com.apple.WebKit.WebContent.xpc/com.apple.WebKit.WebContent
    Identifier:          com.apple.WebKit.WebContent
    Version:             8600.1.4.17.9 (8600)
    Code Type:           ARM-64 (Native)
    Parent Process:      launchd [1]
    
    Date/Time:           2015-09-10 14:42:20.820 +0900
    Launch Time:         2015-09-10 14:42:01.103 +0900
    OS Version:          iOS 8.4.1 (12H321)
    Report Version:      105
    
    Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
    Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000018
    Triggered by Thread:  0
    
    Thread 0 name:  Dispatch queue: com.apple.main-thread
    Thread 0 Crashed:
    0   WebCore                         0x00000001954fa9bc WebCore::VisibleSelection::VisibleSelection(WebCore::Range const*, WebCore::EAffinity, bool) + 40
    1   WebKit                          0x000000018b3e0670 WebKit::WebPage::setCompositionAsync(WTF::String const&,     WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange const&, WebKit::EditingRange const&) + 136
    2   WebKit                          0x000000018b3e0670 WebKit::WebPage::setCompositionAsync(WTF::String const&,     WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange const&, WebKit::EditingRange const&) + 136
    3   WebKit                          0x000000018b3ef2cc void IPC::callMemberFunctionImpl<WebKit::WebPage, void (WebKit::WebPage::*)(WTF::String const&,     WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange const&, WebKit::EditingRange const&),     std::__1::tuple<WTF::String, WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange, WebKit::EditingRange>, 0ul,     1ul, 2ul, 3ul>(WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::String const&, WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>,     WebKit::EditingRange const&, WebKit::EditingRange const&), std::__1::tuple<WTF::String, WTF::Vector<WebCore::CompositionUnderline, 0ul,     WTF::CrashOnOverflow>, WebKit::EditingRange, WebKit::EditingRange>&&, std::index_sequence<0ul, 1ul, 2ul, 3ul>) + 80
    4   WebKit                          0x000000018b3ee4d0 void IPC::handleMessage<Messages::WebPage::SetCompositionAsync, WebKit::WebPage, void     (WebKit::WebPage::*)(WTF::String const&, WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange const&,     WebKit::EditingRange const&)>(IPC::MessageDecoder&, WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::String const&,     WTF::Vector<WebCore::CompositionUnderline, 0ul, WTF::CrashOnOverflow>, WebKit::EditingRange const&, WebKit::EditingRange const&)) + 80
    5   WebKit                          0x000000018b3ec1fc WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection*, IPC::MessageDecoder&) + 11936
    6   WebKit                          0x000000018b31ad28 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection*, IPC::MessageDecoder&) + 116
    7   WebKit                          0x000000018b428790 WebKit::WebProcess::didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) + 36
    8   WebKit                          0x000000018b2a56d8 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::MessageDecoder,     std::__1::default_delete<IPC::MessageDecoder> >) + 124
    9   WebKit                          0x000000018b2a7684 IPC::Connection::dispatchOneMessage() + 116
    10  JavaScriptCore                  0x0000000187702ab8 WTF::RunLoop::performWork() + 440
    11  JavaScriptCore                  0x00000001877030f0 WTF::RunLoop::performWork(void*) + 36
    12  CoreFoundation                  0x0000000185da7f88 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 20
    13  CoreFoundation                  0x0000000185da722c __CFRunLoopDoSources0 + 260
    14  CoreFoundation                  0x0000000185da52dc __CFRunLoopRun + 708
    15  CoreFoundation                  0x0000000185cd0f70 CFRunLoopRunSpecific + 392
    16  Foundation                      0x0000000186c094c4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 312
    17  Foundation                      0x0000000186c6380c -[NSRunLoop(NSRunLoop) run] + 92
    18  libxpc.dylib                    0x0000000198250180 _xpc_objc_main + 664
    19  libxpc.dylib                    0x0000000198251eec xpc_main + 196
    20  com.apple.WebKit.WebContent     0x000000010006ba7c 0x100068000 + 14972
    21  libdyld.dylib                   0x000000019806aa04 start + 0
    
[/code]

この問題の回避方法があれば、教えていただけますでしょうか？


CC BY-SA 3.0
2015-09-02T04:55:59.457
15136
2015-09-10T05:49:09.397
2015-09-10T05:49:09.397
11166
11166
question
cordova
Cordova+WKWebViewで日本語入力するとWKWebViewがcrashする