kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

cordovaアップデートが大変だった話(Android)

この件を記事にしたか覚えていないので、書いてみます。

Cordovaのバージョンが古いとのことで、Googleから通知が来てたのが去年のこと・・・

アップデートしない限りそのまま行けたのですが、機能拡張する必要があるとのことでcordovaのアップデートをしました。

その際につまったことをツラツラと。。。

cordovaアップデート

本体アップデート

npm update -g cordova

プロジェクトアップデート

cordova platform update android

これでAndroidは4.0+が対象になりました。問題あるけど、気にしない。

プラグインの名前が変わっている

- org.apache.cordova.PLUGINNAME
+ cordova-plugin-PLUGINNAME

だそうです。問題なし。

WEBViewが変わってる?

cordovaActivityからなくなっている関数を多数発見。動作しないことを確認。

ここで数日使用しました。

「makeWebViewClient」どこいった・・・

もともとこれが正しい形だったのかわかりませんが、URLのリンク内容をフックして独自処理をする際のコードを修正しました。

myFuncは独自処理用の関数。

        WebView wV = (WebView)appView.getEngine().getView();
 
        wV.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine) appView.getEngine()){
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                int result = myFunc(url, view);
                if (result == 1) {
                    // フックする内容だった場合
                    return true;
                } else if( result == 2){
                    // そのままのURLで処理
                    return super.shouldOverrideUrlLoading(view, url);
                } else {
                    // なにもしない
                    return false;
                }
            }
        });

cordovaでの開発のあるべき形

前から思っていましたが、やっぱりcordovaでアプリを作るなら独自処理はpluginをつくって使用するのが正しいと実感。

今回の修正で若干うつになりましたが、無事に突破しました。

実装は1週間かな。(ただ本格的に戦う前に何回か挫折している・・・)

全部処理をmainコードに書いていましたが、プラグイン化に成功。

今後楽になることを期待します!!