前回の記事で、WebViewでファイル選択ができるようになりました。
開発時の実機確認オッケー! よし、ビルドしてAPKにしよう!!
と意気揚々と署名付きAPKファイルをつくりました。DeployGateにあげて確認してみると、なんとまたファイル選択が無効になっているではありませんか!!
ソースには問題がないのに、開発時は動いてビルド後は動かなくなったという現象が発生したのです。
実際にログも変わっていて、
[開発時]
V/webkit(18387): BrowserFrame hapticMouseClickEvent: Element: INPUT Value: Element type: file
[ビルド後]
V/webkit(18490): BrowserFrame hapticMouseClickEvent: Element: A Value: Element type:
というログメッセージが、formボタンを押したときに表示されました。
Element情報とtype情報がごっそり無くなっています。
かなり悩みましたが、原因を特定できました。
アプリビルド時にソースを暗号化するツール、プロガードのせいでした。
しっかり検証していませんが、プロガードが暗号化する際に、一部のソースを正確に反映していなかったようです。
プロガードを無効にしたら、ビルド後もちゃんと期待通りの動作をするようになりました!!
いまから考えてみると、openFileChooserのメソッドが複数あったのが悪かったのかも。重複したメソッドが不要だと判断されて削除された可能性がありますね。