Cordova to podstawowa wersja silnika używanego do tworzenia aplikacji mobilnych w HTML, CSS i JavaScripcie.

Działa w trybie tekstowym, pobieramy najpierw program NPM razem z pakietem NODEJS, program ten służy do zarządzania bibliotekami JavaScript:
NodeJS – link

Następnie odpalamy konsolę cmd i pobieramy cordovę (uruchamialny program to npm.cmd) :

1
npm install -g cordova

I już można przystąpić do tworzenia naszej pierwszej aplikacji mobilnej:

1
2
3
4
5
6
7
cordova create aplikacja com.firma.aplikacja myApp
    cd aplikacja
    cordova plugin add cordova-plugin-camera --save
    cordova platform add android --save
    cordova requirements android    
    cordova build android --verbose
    cordova run android

Niestety to nie koniec. Przy kroku „requirements” wystąpią pewne problemy. Po pierwsze musimy pobrać najnowszą wersję Javy ze strony Oracle Java SDK, a następnie także skonfigurować Android SDK poleceniem:

1
c:\users\{nazwa uzytkownika win}\appdata\local\android\sdk\tools\android.bat

Tam doinstalować potrzebne pakiety.

Uprawnienia

Jeśli chcemy usunąć nadmierne uprawnienia i pluginy z naszej aplikacji, aby zrobić kompletną listę wtyczek wydajemy polecenie

1
cordova plugin list

w katalogu z naszą aplikacją, a następnie usuwamy z tej listy zbędne wtyczki, których nasza aplikacja nie będzie używać np.

1
2
cordova plugin remove cordova-plugin-dialogs
cordova plugin remove cordova-plugin-file-transfer

W naszej szkolnej aplikacji jedyna potrzebna wtyczka to inAppBrowser do otwierania zewnętrznych odnośników www.

Inną pożyteczną wtyczką jest whitelist pozwalająca otwierać dane z zewnętrznych serwerów np. przez AJAX (JSON).

Jednak Cordova posiada jedną zasadniczą wadę – jeśli dane chcemy pozyskiwać z domowych serwerów np. przez SSL (często się przydaje) to powinniśmy mieć certyfikat SSL kupiony, przynajmniej tak mówi teoria. APK po skompilowaniu działa tylko w wersji debug, release nie łączy się z domowymi serwerami SSL (tzw. samopodpisane: self-signed). Jest jednak na to sposób.

JSON przez SSL – self signed

Przed skompilowaniem, gdy już mamy gotowy nasz kod, możemy edytować plik z katalogu projektu:
SystemWebViewClient.java

i zmienić w nim funkcję onReceivedSslError, aby wyglądała

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

        final String packageName = parentEngine.cordova.getActivity().getPackageName();
        final PackageManager pm = parentEngine.cordova.getActivity().getPackageManager();

        ApplicationInfo appInfo;
        try {
            appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
            if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
                // debug = true
                handler.proceed();
                return;
            } else {
                handler.proceed();
                return;
                // debug = false
                //super.onReceivedSslError(view, handler, error);
            }
        } catch (NameNotFoundException e) {
            // When it doubt, lock it out!
            super.onReceivedSslError(view, handler, error);
        }
    }

c.d.n.