LoginSignup
4

More than 3 years have passed since last update.

posted at

updated at

cordova-plugin-crypt-fileを使用した時に起こるアレコレのメモ

まず、始めに、cordova-plugin-crypt-fileは素晴らしいプラグインです。
本当にありがたいプラグインです。
tkyaji さん、ありがとうございます。
ここにtkyajiさんが書かれた記事があります。

ただ、何故か色々干渉することがある。
今回の開発ではcordova-plugin-crypt-fileは絶対に使いたいプラグインだったので、他を消してでも使う勢いです。
私がつまづいた部分と解決したものは解決法をいくつか書いていきます。
自分用のメモ程度です。

画面が真っ白。そこにhtmlの暗号化された文が表示される。(iOS)

結論から言うと、cordova-plugin-ionic-webviewと干渉していました。
cordova-plugin-ionic-webviewを消して解決。
でも消したくない場合もあるので、その場合の事も考えてみました。

原因

調べたところ、cordova-plugin-ionic-webviewを入れる事により、UIWebViewがWKWebViewに変更されていると、NSURLProtcolが...と言う事らしいです。
なので、同じくWKWebViewを使うcordova-plugin-wkwebview-engineでも同じ症状が出ます。

思いついた解決法 「iOSだけ暗号化を諦める」

iOSの暗号化を諦めるようにするには、plugins/cordova-plugin-crypt-file/plugin.xmlの

<platform name="ios">
            ・・・
</platform>

<!--
<platform name="ios">
            ・・・
</platform>
-->

丸ごとコメントアウト。

次にplugins/cordova-plugin-crypt-file/hooks/after_prepare.jsの

if (platform == 'ios') {
            ・・・
} else if (platform == 'android') {
            ・・・

if (platform == 'ios') {
/*
            ・・・
*/
} else if (platform == 'android') {
            ・・・

コメントアウト。
これでAndroidだけ暗号化されるようになりました。

画面が真っ白。そこにhtmlの暗号化された文が表示され、「net::ERR_FILE_NOT_FOUND (file:///android_asset/www/+++/index.html)」と言うエラーが出る。(Android)

結論から言うと、cordova-plugin-ionic-webviewと干渉していました。
またか。
cordova-plugin-ionic-webviewを消して解決。
でも消したくない場合もあるので、その場合の事も考えてみました。

原因

いまいちよくわからない。

思いついた解決法 「cordova-plugin-ionic-webviewを諦める」

cordovaでWKWebViewを使う方法は、cordova-plugin-ionic-webview以外にもcordova-plugin-wkwebview-engineなどがあります。
とりあえず、そちらを入れてみました。
そうすると、何と言うことでしょう、iOSが動かない。
なので次はcordova-plugin-wkwebview-file-xhrを入れます。
動くようになりました。
でもなんか、パフォーマンスが微妙なような気がします...。
もっといい方法あったら教えてください、

Androidでrun時にエラー。

エラーメッセージを忘れてしまいましたが、、、
plugins/cordova-plugin-crypt-file/hooks/after_prepare.js内の

} else if (platform == 'android') {
     var pluginDir = path.join(platformPath, 'src');
            ・・・
}

} else if (platform == 'android') {
     var pluginDir = path.join(platformPath, 'app/src/main/java');
            ・・・
}

に変更。('src'を'app/src/main/java'に変更しているだけ。)

他のプラグインと干渉

その他のプラグインでのことは今の所よくわかりませんが、試す価値がありそうなのが、
plugins/cordova-plugin-crypt-file/plugin.xml内の

<exclude>
</exclude>

の部分で

<exclude>
    <file regex="cordova\.js" />
    <file regex="plugins" />
</exclude>

暗号化しなくても良いファイルを暗号化しない設定をします。

たまにAndroidがどうしようもなくなる。

詳しい状況まで覚えていませんが、Androidの開発時にcordova run時などにエラーが出てきた場合は、platformをrmしてaddすることで解決したことがありました。

$ cordova platform rm android
$ cordova platform add android

本当に素晴らしいプラグインです。

何度も言います。
tkyajiさん、本当にありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4