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.