39
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO David Vučković Pregled in integracija oblačnih storitev v mobilne aplikacije Projektno delo Maribor, julij 2017

Navodila za pisanje diplomskih nalog UM FERI

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

David Vučković

Pregled in integracija oblačnih storitev v mobilne aplikacije

Projektno delo

Maribor, julij 2017

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

David Vučković

Pregled in integracija oblačnih storitev v mobilne aplikacije

Projektno delo

Maribor, julij 2017

PREGLED IN INTEGRACIJA OBLAČNIH STORITEV V MOBILNE

APLIKACIJE

Projektno delo

Študent: David Vučković

Študijski program: univerzitetni študijski program

Telekomunikacije

Mentor: doc. dr. Damjan Vlaj

Somentor: Danilo Zimšek, univ. dipl. inž. tel.

Lektorica: Ksenija Pečnik, prof. slov. jezika

i

Pregled in integracija oblačnih storitev v mobilne aplikacije

Ključne besede: oblačne storitve, mobilne aplikacije, Android.

Povzetek

V projektni nalogi je predstavljen pregled modernih oblačnih storitev, ki ponujajo

shranjevanje podatkov, in sicer z vidika razvijalca mobilnih aplikacij. Zaradi poplave teh

storitev, predvsem s konvergenco informacijsko-komunikacijskih tehnologij in enostavnosti

vstopa na trg, je smiselno, da je fokus le na treh prevladujočih ponudnikih na tem področju.

Izpostavljene so prednosti in slabosti vsakega izmed treh ponudnikov. Kot osnova za

primerjanje je bila za potrebe projektnega dela ustvarjena mobilna aplikacija Diabetix, ki

deluje v okolju Android.

ii

Overview and integration of cloud services into mobile applications

Key words: cloud services, mobile applications, Android.

Abstract

The project assignment provides an overview of modern cloud services that provide data

storage, from the perspective of an application developer. With the recent flood of such

services and the convergence of IT and how simple it is, to enter the market, the focus

remains on the three providers that dominate the field. A comparison is made between the

three. An Android application called Diabetix has been created for the purposes of this

project assignment, as a basis for comparison.

iii

KAZALO

1. UVOD .................................................................................................. 1

2. ANDROID STUDIO ................................................................................ 3

2.1 Programski jeziki ................................................................................................ 3

2.2 Projektne datoteke ............................................................................................. 3

2.3 Gradle ................................................................................................................ 4

2.4 Proces izgradnje ................................................................................................. 5

2.5 Podpisovanje aplikacij ........................................................................................ 7

3. APLIKACIJA DIABETIX ........................................................................... 8

3.1 Knjižnice in orodja ............................................................................................ 11

4. OBLAČNE STORITVE ........................................................................... 12

4.1 Google Drive .................................................................................................... 14

4.2 Dropbox ........................................................................................................... 18

4.3 Microsoft OneDrive .......................................................................................... 22

5. SKLEP ................................................................................................. 26

6. VIRI .................................................................................................... 28

i

KAZALO SLIK

SLIKA 2.1: PRIMERJAVA HITROSTI IZGRADNJE Z GRADLE IN MAVEN [10] ............................................... 4

SLIKA 2.2: PROCES IZGRADNJE APLIKACIJE ANDROID [11]. .................................................................. 6

SLIKA 3.1: OSNOVNI GRAFIČNI VMESNIK APLIKACIJE DIABETIX .............................................................. 9

SLIKA 3.2: MENI, KI SE POJAVI, KO UPORABNIK ŽELI VPISATI NOVO KONCENTRACIJO ............................... 10

SLIKA 3.3: MENI, S KATERIM UPORABNIK IZBERE, KAM ŽELI NALOŽITI ALI PRENESTI DATOTEKO .................. 10

SLIKA 4.1: TRŽNI DELEŽI OBLAČNIH STORITEV V MOBILNEM PROSTORU [12] ......................................... 12

SLIKA 4.2: PRIDOBITEV KONFIGURACIJSKE DATOTEKE, KORAK 1 .......................................................... 15

SLIKA 4.3: PRIDOBITEV KONFIGURACIJSKE DATOTEKE, KORAK 2 .......................................................... 15

SLIKA 4.4: PRENOS IZ GOOGLE DRIVE ........................................................................................... 17

SLIKA 4.5: NALOŽITEV V GOOGLE DRIVE ZNOTRAJ APLIKACIJE DIABETIX ............................................... 18

SLIKA 4.6: REGISTRACIJA APLIKACIJE V RAZVOJNI KONZOLI DROPBOX, KORAK 1 ..................................... 19

SLIKA 4.7: REGISTRACIJA APLIKACIJE NA RAZVOJNI KONZOLI, KORAK 2 ................................................. 19

SLIKA 4.8: NALAGANJE DATOTEKE V DROPBOX Z UPORABO INTENTA ................................................... 21

SLIKA 4.9: PRENOS DATOTEKE IZ DROPBOXA Z UPORABO INTENTA...................................................... 22

SLIKA 4.10: REGISTRIRANJE APLIKACIJE, KORAK 1 ............................................................................ 23

SLIKA 4.11: GRAFIČNI VMESNIK ZA SHRANJEVANJE IN NALAGANJE V ONEDRIVE [29] ............................. 24

SLIKA 4.12: NALAGANJE V ONEDRIVE Z UPORABO INTENTA .............................................................. 25

KAZALO TABEL

TABELA 4.1: KAPACITETE IN CENE PAKETOV STORITE DROPBOX .......................................................... 13

TABELA 4.2: KAPACITETE IN CENE PAKETOV STORITVE ONEDRIVE ....................................................... 13

TABELA 4.3: KAPACITETE IN CENE PAKETOV STORITVE GOOGLE DRIVE ................................................. 13

TABELA 4.4: UPORABA OBJEKTOV GLEDE NA UPORABLJENI NAČIN DELOVANJA ...................................... 17

1

1. UVOD

Oblačne storitve dandanes uporablja skoraj vsakdo, čeprav ni nujno, da se tega zaveda.

Oblačno računalništvo na sploh zavzema zelo široko področje, ki v osnovi nudi neko storitev

prek spleta. Oblačne storitve omogočajo dostop do virov kadarkoli in kjerkoli z minimalnimi

predpogoji, potrebna je le internetna povezava. Manjšim in srednje velikim organizacijam

se prav tako ponudi možnost, da jim ni treba vzpostavljati lastne infrastrukture. Zaradi

obsežnosti tehnologij, ki temeljijo na oblaku, je v stroki prisotna razčlenitev glede na tip

ponujene storitve. National Institute of Standards and Technology jih razdeli na:

- infrastrukturo kot storitev (angl. Infrastructure as a Service – IaaS),

- platformo kot storitev (angl. Platform as a Service – PaaS) in

- programsko opremo kot storitev (angl. Software as a Service – SaaS).

IaaS nam, kot namigne že ime, nudi računalniško infrastrukturo. Najpogosteje so to

navidezni stroji (angl. virtual machine), računalniški viri itd. Podrobnosti storitev so

uporabnikom skrite.

PaaS nudi razvijalno okolje za programerje. Ponudniki tako ponudijo ogrodje, s pomočjo

katerega lahko uporabniki gradijo svoje aplikacije (vključuje operacijski sistem, izvajalno

okolje, podatkovne baze, spletni strežnik, virtualizacijo).

SaaS nudi programsko opremo v oblaku. Ponudniki nadzorujejo infrastrukturo in platformo,

na kateri teče programska oprema. S tem se eliminira proces nameščanja na računalnik.

Oblačne storitve se lahko razdeli tudi glede na to, kakšen je domet storitve:

- zasebni oblak,

- javni oblak in

- hibridni oblak.

2

Zasebni oblak deluje le znotraj točno določene organizacije. Nadzorovan in gostovan je

lahko tudi zunaj organizacije. Javni oblak je na voljo javnosti. Po arhitekturi je precej

podoben zasebnemu oblaku, razlike pa so lahko precejšnje, predvsem kar se tiče varnosti.

Gartner Inc. definira hibridni oblak kot storitev, ki je sestavljena iz določene kombinacije

zasebnih in javnih oblakov različnih ponudnikov.

V projektni nalogi bo predstavljen pregled oblačnih storitev v mobilnem okolju z vidika

razvijalca programske opreme za platformo Android [1, 2, 3, 4].

Naš cilj je predstaviti celoten kontekst, zato bomo v projektni nalogi najprej opisali orodje,

s katerim se je razvijala aplikacija Diabetix, ki služi kot testno okolje za primerjavo med

storitvami. Kasneje bomo na kratko predstavili delovanje aplikacije Diabetix. Sledi

primerjava storitev Google Drive, Dropbox in OneDrive. Vsaka storitev se opisuje najprej na

splošno, nato so pa opisani procesi implementacije storitev v aplikaciji Diabetix.

3

2. ANDROID STUDIO

Za izdelavo aplikacij v mobilnem okolju na operacijskem sistemu Android se najpogosteje

uporablja orodje Android Studio. Razvil ga je Google v sodelovanju z podjetjem Jetbrains.

Je odprtokoden in brezplačen, odlikuje pa ga množica lastnosti, ki omogočajo enostavno

razvijanje aplikacij. V mnogih pogledih je v očeh javnosti nadomestil razvijalno okolje

Eclipse.

Android in posledično tudi Android Studio uradno podpirata več programskih jezikov, ki se

lahko uporabijo za izgradnjo mobilnih aplikacij [5].

2.1 Programski jeziki

Na platformi Android uradno razvijamo s programskim jezikom Java ali Kotlin. Prav tako v

orodju Android Studio z uporabo Android Native Development Kit lahko pišemo aplikacije

tudi v programskih jezikih C in C++. Čeprav Java še vedno dominira na tem področju, je za

posamezne projekte smiselno uporabiti C ali C++, marsikdaj pa tudi Kotlin. Android podpira

veliko množico jezikov, ki se lahko uporabljajo za zelo različne potrebe, dober primer tega

pa je programski jezik Lua, ki je popularen med razvijalci mobilnih iger [6, 7, 8]. Vsi jeziki se

lahko skoraj neopazno uporabljajo drug ob drugem. Za potrebe projektnega dela se je

uporabljal le programski jezik Java.

2.2 Projektne datoteke

Osnova vsakega projekta v Android Studiu so projektne datoteke, kjer vsaka datoteka

izpolnjuje svojo nepogrešljivo funkcijo v projektu. V osnovnem pogledu so na voljo

združene Manifest datoteke, javanske datoteke in Res (datoteke virov) datoteke ter Gradle

skripte.

- Manifests: vsebuje datoteko »AndroidManifest.xml«, ki je potrebna, da se lahko

aplikacija izvrši, saj posreduje nujne informacije o aplikaciji sistema Android. Sem

spadajo informacije o dovoljenjih za dostop do zunanjih virov, ki so potrebni s strani

4

aplikacije, informacije o Java razredih, ki sestavljajo aplikacijo, ter zahtevana

različica sistema Android;

- Java: tukaj so vidne javanske datoteke, ločene po imenih paketov, z vključeno jUnit

testno kodo;

- Res: vsebuje vse nekodne vire, najpogosteje so tukaj definirani grafični vmesniki

(angl. layout), meniji in viri, kot so slike. Na vire se v kodi sklicuje prek njihovih

unikatnih ID-jev, ki jih določi razvijalec.

Javnosti je v orodju Android Studio na voljo Gradle, ki je potreben, da združi tako veliko

število datotek ter iz njih izgradi aplikacijo, pripravljeno na uporabo [9].

2.3 Gradle

Gradle je v integriranem razvojnem okolju Android Studio osnovno orodje za izgradnjo

aplikacije. V svetu Androida in tudi marsikje drugod je Gradle nadomestil Maven, predvsem

zaradi razlik v hitrosti izgradnje, prikazanim na sliki 2.1

Slika 2.1: Primerjava hitrosti izgradnje z Gradle in Maven [10]

Gradle je po podatkih, pridobljenih z uradne spletne strani Gradle, neprimerno hitrejši od

svojega konkurenta Maven.

5

Gradle v svojem jedru poskrbi, da se viri aplikacije in izvorna koda zapakirajo v APK (angl.

Android Package Kit), ki se lahko testira, razvija in distribuira. Gradle teče neodvisno od

Android Studia, kar omogoča, da se lahko aplikacijo izgradi tudi v drugih okoljih, na primer

terminalu. Ta lastnost povzroči, da ju je treba tudi posodabljati neodvisno.

Gradle tako dodatno abstrahira proces izgradnje, ki je v Android Studiu večkoračen [11].

2.4 Proces izgradnje

Tipična izgradnja aplikacije poteka po naslednjem postopku, ki je grafično prikazana na

sliki 2.2:

1. prevajalnik pretvori izvorne datoteke v datoteke DEX (angl. Dalvik Executable), ki

vključujejo vmesno kodo (angl. byte code) in vse ostalo,

2. APK Packager združi datoteke DEX in prevedene vire v eno APK. Preden se lahko APK

namesti na napravo, jo je treba podpisati,

3. APK Packager podpiše APK z uporabo debug ali release keystore (keystore je binarna

datoteka, ki vsebuje enega ali več ključev):

a) če se gradi »debug« različico aplikacije (aplikacija, ki je namenjena predvsem

internemu testiranju), se uporabi »debug keystore«,

b) če se gradi »release« različico aplikacije (aplikacija, ki smo jo pripravljeni poslati v

javnost), se uporabi »release keystore«;

4. preden se ustvari končen APK, se uporabi orodje »zipalign«, ki omogoča manjšo

porabo spomina, ko aplikacija teče na napravi.

6

Slika 2.2: Proces izgradnje aplikacije Android [11].

V prej opisanem procesu se pojavijo določene varnostne luknje, ki uporabnikom lahko

dandanes zaradi občutljivosti podatkov, ki jih aplikacije manipulirajo, povzročijo veliko

škodo. Zato se uvede podpisovanje aplikacije [11].

7

2.5 Podpisovanje aplikacij

Ko podpišemo aplikacijo, na APK pritrdimo javni ključ, ki je vezan na razvijalca, in

pripadajoči zasebni ključ. S tem dodamo določeno raven varnosti, saj lažje ugotovimo, ali

je aplikacijo spreminjal nekdo drug.

Certifikat, ki vsebuje par zasebni/javni ključ, poteče vsakih 365 dni. Ko se nam to zgodi,

aplikacije ni mogoče zgraditi, treba je izbrisati binarno datoteko. Ob naslednjem zagonu se

ustvari nova datoteka [11].

8

3. APLIKACIJA DIABETIX

Aplikacija Diabetix je testna aplikacija, namenjena izvrševanju ciljev projektnega dela.

Želimo lastnoročno implementirati storitve treh največjih ponudnikov pomnilniškega

prostora v oblaku v mobilnem okolju.

Najprej smo sestavili ogrodje, ki je na najbolj primitiven način naložilo testno datoteko

test.txt z vsebino Hello World v vse tri oblačne storitve. Ko je bilo to uspešno, smo začeli

graditi aplikacijo, ki ima vmesnik, s katerim uporabnik lahko komunicira. Ta je predstavljen

na Sliki 3.1. Aplikacija naj bi uporabnikom nudila enostaven način zapisovanja ravni

sladkorja v krvi ter shranjevanja teh podatkov v oblak. Nekateri ponudniki so na zelo lahek

način definirali uporabo grafičnega vmesnika, nekateri pa so omogočili prenos in nalaganje

datoteke v ozadju, brez možnosti grafične izbire. Govorimo o grafični izbiri znotraj

aplikacije, ki nam jo ponuja uraden SDK, in ne gradnji lastnega grafičnega vmesnika prek

klicev API. Proces pridobitve SDK in avtorizacije programa pri ponudniku smo temeljito

opisali za vsakega ponudnika posebej.

9

Slika 3.1: Osnovni grafični vmesnik aplikacije Diabetix

Največja prednost aplikacije naj bi bila enostavnost uporabe in tako potencial za doseg vseh

demografskih skupin. Diabetix deluje na precej enostavnem principu, prisotnem pri mnogih

implementacijah brez strežnika (ov), in sicer shranjevanju podatkov v obliki XML (Extensible

Markup Language). XML namesto JSON (Javascript Object Notation) uporabimo zaradi

berljivosti človeku. Za prijaznost uporabnikom in dejansko smiselnost uporabe smo

aplikaciji dodali možnost, da iz vseh treh oblačnih storitev prenesemo datoteko.

Uporabnik tako vsak dan, ko se mu zdi primerno, shrani raven izmerjenega sladkorja v krvi

prek menija, enakega kot tisti na Sliki 3.2. Podatki se shranijo v lokalno datoteko XML in ko

si uporabnik zaželi, da bi podatke shranil v oblak, se s pritiskom gumba pojavi dialog,

prikazan na Sliki 3.3, ki uporabniku omogoča izbiro storitve, kamor želi shraniti datoteko.

10

Glede na izbiro in v primeru, da uporabnik v storitev še ni vpisan, se mora vpisati z vnaprej

ustvarjenim uporabniškim imenom in geslom. V primeru, da je uporabnik že vpisan, se to

ne zgodi. Google Drive in OneDrive ponudita možnost, da si uporabnik grafično izbere ime

datoteke ter mesto, kamor želi shraniti datoteko. V primeru Dropboxa se datoteka na

storitev naloži avtomatsko. Pri vseh treh storitvah dobi uporabnik povratno informacijo, če

je bil proces uspešen. Na enak način, kot je uporabnik shranil datoteko na eno izmed treh

storitev, lahko v primeru, da je izgubil lokalno datoteko, pridobi prej shranjeno datoteko

XML. To lahko stori na enak način, kot je to storil pri shranjevanju v oblak.

Slika 3.2: Meni, ki se pojavi, ko uporabnik želi vpisati novo koncentracijo

Slika 3.3: Meni, s katerim uporabnik izbere, kam želi naložiti ali prenesti datoteko

Ker smo preverjali tudi dostopnost integracije oblačnih storitev vsem razvijalcem, smo

uporabljali večinoma uradno dokumentacijo in uradni primeri kode na portalu Github ter

javno dostopni SDK. Pri tem razmišljanju je prisoten tudi vidik varnosti, ki ga ponujajo

ponudniki, na katere marsikateri razvijalec niti ne pomisli. Kasneje v razvoju se je zaradi

težav s kompatibilnostjo s testnim telefonom ponudila rešitev z Intenti. Moderne aplikacije

namreč oblačne storitve integrirajo prek gumba »deli«, ki operacijskemu sistemu le javi,

katero datoteko želi deliti, ta pa mu ponudi aplikacije v telefonu, ki omogočajo

manipuliranje s takšnim tipom datoteke. Uporabnik si nato izbere, katera aplikacija naj

11

uporabi datoteko, nato pa se mu ta odpre. Aplikacija Diabetix je zaradi pomanjkanja

grafičnega vmesnika za Dropbox ter težav z uradnim SDK OneDrive in različico Androida 7.0

implementirala takšno rešitev. Google Drive pa je imel že v uradnem primeru zelo podobno

rešitev. Zaradi obstoja na številnih različicah naprav ohranimo rešitvi z Intenti in z uporabo

SDK. Prav tako obstaja možnost implementacije oblačnih storitev z uporabo knjižnice

CloudRails, vendar zaradi ustreznosti prej opisanih načinov ni prišlo do njene uporabe.

3.1 Knjižnice in orodja

Poleg uradnih knjižnic za oblačne storitve smo uporabljali tudi knjižnico sdp, ki omogoči, da

pri ustvarjanju grafičnih vmesnikov pri aplikaciji uporabljamo enoto sdp, ki vzame v obzir

velikost zaslona. Prednost je predvsem to, da naj bi bil grafični vmesnik na različnih

telefonih z zelo različnimi velikostmi zaslona videti enako. Za nadzor nad različicami kode

in tudi shranjevanje kode smo uporabljali orodje Git, ki nam omogoča shranjevanje kode

na spletni strani Github, enostavno posodabljanje kode in pisanje dokumentacije.

12

4. OBLAČNE STORITVE

Trenutno na tržišču oblačnih storitev v mobilnem okolju, ki ponujajo shranjevalni prostor,

prevladujejo OneDrive, Google Drive in Dropbox. Njihova premoč je še posebej izražena pri

mobilnih uporabnikih.

Čeprav je Dropbox v zadnjem letu izgubil zelo velik delež uporabnikov (leta 2016 je bil ta

delež namreč 80 %), ima še vedno največ uporabnikov. Sledi mu Google Drive s 26,9 % in

OneDrive z 15,3 % in Box z 10,5 %, kot je vidno na Sliki 4.1.

Slika 4.1: Tržni deleži oblačnih storitev v mobilnem prostoru [12]

Bret Taylor (direktor tehnološkega razvoja v podjetju Facebook, soavtor Google Maps)

napoveduje, da bo Dropbox v prihodnosti težko tekmoval s storitvami OneDrive in Google

Drive, predvsem zaradi široke integracije drugih storitev v oblaku, ki jih ponuja konkurenca

[13]. Vsem je skupno, da ponujajo osnovni paket, za katerega ni treba doplačati, ter

možnost dodatne spominske kapacitete, za katero je treba doplačati. Razlike v brezplačni

kapaciteti so precej občutne. Dropbox za kompenzacijo omogoča razširitev spomina s tem,

da uporabnik Dropbox priporoča drugim, s čimer nabira točke, vsako uspešno priporočilo

pa prinese 500 MB prostora, do 16 GB. OneDrive ponuja le 5 GB brezplačne kapacitete in

13

ne omogoča nobene kompenzacije. Google Drive pa omogoča 15 GB brezplačne spominske

kapacitete, za katero ni treba ničesar doplačati. Plačljivi paketi za osebne uporabnike imajo

še večjo varianco, kot vidimo iz tabel 4.1, 4.2 in 4.3.

Tabela 4.1: Kapacitete in cene paketov storite Dropbox

Paket[Kapaciteta] Osnovni[2 GB] Dropbox Plus[1 TB]

Cena/mesec / 9.99 €

Tabela 4.2: Kapacitete in cene paketov storitve OneDrive

Kapaciteta 5 GB 50 GB 1 TB 5 TB

Cena/mesec / 1.99 € 6.99 € 9.99 €

Tabela 4.3: Kapacitete in cene paketov storitve Google Drive

Paket 15 GB 100 GB 1 TB 2 TB 10 TB 20 TB 30 TB

Cena/mesec / 2.99 € 9.99 € 19.99 € 99.99 € 199.99 € 299.99 €

Vredno je omeniti, da je Dropbox Plus mogoče nadgraditi brezplačno, in sicer s

priporočanjem drugim uporabnikom na enak način, kot je to mogoče v brezplačnem

paketu, le da je vsako uspešno priporočilo vredno 1 GB dodatnega prostora. Tako obstaja

možnost, da pridobimo 32 GB dodatnega prostora brez dodatnih stroškov [14, 15, 16, 17,

18, 19, 20].

Dropbox je ena izmed prvih oblačnih storitev na trgu. Pojavila se je namreč že leta 2008,

ustvarili pa so jo študenti univerze Massachusetts Institute of Technology [17]. Razširjena

je po vseh operacijskih sistemih in temelji na sistemu poslovanja, ki omogoča brezplačen

paket, z doplačilom pa se količina spomina poveča (angl. freemium) kot pri večini

ponudnikov na trgu. Dropbox je včasih za shranjevanje podatkov uporabljal storitev

Amazon S3, nedavno pa se je preselil na lastno infrastrukturo. Po decembrskih statistikah

ima Dropbox na vseh platformah okoli 500 milijonov uporabnikov [21].

14

Microsoft OneDrive, včasih SkyDrive, LiveMesh, OneFolder, je storitev, ki poleg ponujanja

prostora za shranjevanje v oblaku ponuja tudi druga Microsoftova orodja, kot je Microsoft

Office Suite. Odlikuje ga predvsem močna integriranost z MS Windows, ki je trenutno daleč

najbolj razširjen operacijski sistem. Da se omogoči dostop do OneDrive, je potreben

Microsoftov račun, obstaja pa tudi možnost za podjetja. Trenutno ni na voljo modernih

podatkov o številu uporabnikov, Microsoft pa je podal statistiko, da njegove oblačne

storitve uporablja 80 % podjetij, ki so na seznamu Fortune 500 [22, 23].

Druga najpopularnejša storitev med ponudniki oblačnih storitev in prva, ki se je realizirala

v aplikaciji Diabetix, je Google Drive. Google Drive je storitev, ki jo je razvil Google.

Namenjena je predvsem shranjevanju datotek in njihovi sinhronizaciji. Prav tako svojim

uporabnikom ponuja orodja za urejanje dokumentov v oblaku. Prisoten je na skoraj vseh

operacijskih sistemih, tako za mobilne naprave kot za osebne računalnike, prav tako pa je

na voljo vmesnik na spletu, do katerega dostopamo z brskalnikom. Pred uporabo je

potrebna registracija ali pa uporaba obstoječega Google računa. Enak račun deluje za vse

Google storitve, zato prostor na Google Drive zasedajo tudi viri iz Gmaila. Spletni viri

navajajo, da naj bi storitev Google Drive imela na vseh platformah 800 milijonov

uporabnikov [23, 24]. Obstajajo tudi paketi za podjetja, ki pa pridejo v sklopu G-Suite, ki

poleg spominskega prostora in storitev, ki so na voljo brezplačnim uporabnikom, nudi

Google Vault Google Admin in Google Mobile, ki izvajajo funkcije, značilne za podjetja [24,

25, 26].

4.1 Google Drive

Prvi korak k integraciji storitve Google Drive k mobilni aplikaciji je realizacija vpisa v Google

storitve (angl. Google Sign-in), za kar je na voljo Google Play Services SDK, ki vključuje

uporabo vseh Google storitev. Google Play Services SDK se lahko najlažje namesti z uporabo

Android Studia. V zavihku SDK Manager se izbere možnost Extras, ki kasneje ponudi

možnost Google Repository.

15

Naslednji korak je pridobitev konfiguracijske datoteke, ki je prikazana na slikah 4.2 in 4.3.

Ta je na voljo na povezavi v uradni dokumentaciji organizacije Google, znani tudi pod

imenom Google Developers. Pojavi se dialog, ki prosi, da vnesemo ime aplikacije in ime

Android paketa. Obstaja možnost registracija nove aplikacije ali urejanje že obstoječe.

Slika 4.2: Pridobitev konfiguracijske datoteke, korak 1

Slika 4.3: Pridobitev konfiguracijske datoteke, korak 2

16

Da se ustvari konfiguracijska datoteka, je potrebno avtenticirat odjemalca. Ta proces

ustvari ključ SHA-1, ki ga moramo vnesti v za to določeno polje. Za avtentikacijo je potreben

terminal. Nad datoteko debug.keystore moramo izvesti ukaz:

keytool -exportcert -list -v \

-alias androiddebugkey -keystore

Lokacija te datoteke je različna glede na operacijski sistem. Rezultat izvajanja tega ukaza je

ključ SHA-1, ki ga moramo vnesti v prej omenjeni okvir, prikazan na Sliki 4.3. Ko se ta ključ

preveri, lahko prenesemo konfiguracijsko datoteko. Po priporočilu Googla moramo

konfiguracijsko datoteko shraniti v podmapo app/ našega projekta [13]. Vedeti je treba, da

moramo pri menjavi operacijskega sistema, računalnika ali kakšne druge menjave ustvariti

novo konfiguracijsko datoteko z novim številom SHA-1, da Google storitve delujejo.

Sledi dodajanje knjižnice Google-services v Gradle. V Gradle projektno datoteko moramo

dodati (čez čas se pojavljajo različne različice):

classpath 'com.google.gms:google-services:3.0.0'

Na konec datoteke Gradle za naš modul pa dopišemo:

apply plugin: 'com.google.gms.google-services'

Tako omogočimo, da se uporabnik lahko vpiše v Google račun. Za specifično določitev

Google Drive pa moramo v modulski datoteki Gradle nujno imeti naslednji stavek:

'com.google.android.gms:play-services-drive:9.2.0'

Po priporočilih Androida je za delovanje aplikacije nujno, da je v datoteki

»AndroidManifest.xml« prisotno dovoljenje za uporabo interneta. Ko je to vse omogočeno,

lahko naložimo ali prenesemo datoteko v Google Drive [25].

17

Za prenos in kasneje branje ter nalaganja datotek iz storitve Google Drive imamo glede na

način delovanja na voljo več objektov, kar je prikazano na tabeli 4.4.

Tabela 4.4: Uporaba objektov glede na uporabljeni način delovanja

Način Metoda Razred

Samo bralni način getInputStream() InputStream

Samo pisalni način getOutputStream() OutputStream

Pisalni in bralni način getParcelFileDescriptor() ParcelFileDescriptor

Pri programiranju smo sledili algoritmu za pridobitev datoteke, ki si jo uporabnik sam

izbere, v aplikaciji pa lahko specificiramo tip končnice datoteke, ki jo dovolimo prenesti:

- preveritev, če je Google Api Client inicializiran,

- če je, sproži Intent, ki odpre grafični vmesnik (prikazan na sliki 4.4), kjer si lahko

uporabnik izbere datoteko, ki naj bi jo aplikacija odprla, uporabnik sam navigira po

svojih osebnih mapah v oblačni storitvi, ustvarja nove, briše stare itd.,

- ko uporabnik uspešno izbere datoteko ali pa izbiro prekliče, preverimo, kakšna je

vsebina izbrane datoteke.

Slika 4.4: Prenos iz Google Drive

18

Algoritem za nalaganje v Google Drive je naslednji:

- vsebina datoteke se vpiše v izhodni pretok;

- izhodni pretok ujame IntentSender;

- Prikaže se grafični vmesnik (takšen kot je na sliki 4.5), kjer si uporabnik izbere

lokacijo datoteke;

- izpiše se uspešnost naložitve.

Slika 4.5: Naložitev v Google Drive znotraj aplikacije Diabetix

Vso ostalo delovanje je uporabniku in tudi razvijalcu aplikacije skrito. Na podoben način

implementiramo tudi storitev Dropbox, z nekaterimi lahko opaznimi razlikami.

4.2 Dropbox

Najpomembnejši korak za uporabo Dropbox API je pridobitev aplikacijskega ključa. Tega

pridobimo z registracijo aplikacije na Dropboxovi konzoli za razvijalce (slika 4.6 in 4.7).

Registracija aplikacije je vezana na uporabniški račun, zato se predhodno registrirmo ali pa

uporabimo obstoječi račun. Po vpisu se pojavi gumb »Create app«, ki pripelje do nadaljnjih

nastavitev za aplikacijo.

19

Slika 4.6: Registracija aplikacije v razvojni konzoli Dropbox, korak 1

Izbiramo lahko med osebnim API in API za podjetja. Prav tako se da določiti vrsto dostopa. Dropbox ponuja dve vrsti dostopa.

- »app folder« dostop omogoča dostop samo do ene mape na spominu, ustvarjene za registrirano aplikacijo,

- »full dropbox« dostop je možen do vseh datotek v spominskem prostoru. Po vpisu imena aplikacije se sproži proces registracije.

Slika 4.7: Registracija aplikacije na razvojni konzoli, korak 2

Naslednje okno je razvojna konzola prej registrirane aplikacije. Iz tega pogleda pridobimo

aplikacijski ključ, ki je potreben za komunikacijo z API.

Za uporabo Dropbox storitve prek orodja Gradle uvozimo knjižnico. V modulsko datoteko

Gradle dodamo naslednji stavek:

20

compile 'com.dropbox.core:dropbox-core-sdk:2.1.1'

Prav tako v datoteko »AndroidManifest«.xml shranimo aplikacijski ključ v naslednji obliki:

<data android:scheme="db-APP-KEY" />

V mesto APP-KEY vpišemo aplikacijski ključ, ki smo ga pridobili iz konzole.

Uporaba uradnih navodil na spletni strani Dropboxa ne prikazuje implementacije z

grafičnim vmesnikom, kar pa v primeru aplikacijske mape sploh ni potrebno. Aplikacija

mora tudi ročno nastaviti ime datoteke, to lahko implementira z uporabniškim vnosom ali

s statično zapečenim imenom datoteke.

Dropbox API uporablja za avtentikacijo oAuth2, za delovanje katerega potrebujemo pravilni

aplikacijski ključ. oAuth2 poskrbi za celoten proces avtentikacije in aplikacije ne vpleta v to.

Ob zagonu klienta oAuth2 uporabnik v primeru, da ima na napravi že uradno aplikacijo

Dropbox, da dovoljenje aplikaciji, da manipulira z njegovimi podatki. Če na napravi nima

uradne aplikacije Dropbox, pa se s spletnim brskalnikom odpre stran, kjer lahko vpiše

uporabniško ime in geslo ter kasneje da dovoljenje. Ko je dovoljenje dano, aplikacija pridobi

avtorizacijski žeton, ki ga uporablja za izvajanje procesov, kot sta shranjevanje in nalaganje

datotek v Dropbox. Komunikacija z Dropbox API je tudi s SDK rahlo manj abstraktna. Proces

shranjevanja datoteke v Dropbox poteka asinhrono:

- pridobitev žetona oAuth2 ali uporaba že prej pridobljenega žetona,

- ustvari objekt tipa DropboxClient z uporabo žetona oAuth2,

- prek objekta tipa DropboxClient se izgradi zahteva z uporabo vnaprej definiranih

metod:

o metodi določimo, da želimo delati z datotekami,

o metodi določimo, da želimo datoteko naložiti v Dropbox, in ime datoteke,

o način zapisovanja, na izbiro imamo prepis stare datoteke ali nalaganje

nove. Določimo lokacijo datoteke, ki jo želimo shraniti,

o stari datoteki, kar je tudi ena izmed glavnih prednosti Dropboxa pred

Google Drive, ki ne omogoča prepisa datotek z istim imenom,

21

o konec grajenja zahteve, za tem se metoda izvede;

- pridobitev napak pri nalaganju.

V primeru, da uporabljamo že prej opisan način z Intenti, je algoritem takšen:

- ustvari objekt tipa intent,

- določi ime paketa (»com.dropbox.android«),

- določi tip datoteke, ki jo želimo poslati ali shraniti,

- določi lokacijo datoteke (zastavica EXTRA STREAM), ki jo želimo naložiti (rezultat je

predstavljen na Sliki 4.8) ali pa namen, da želimo neko datoteko shraniti,

(createChooser), kar pripravi odprtje aplikacije Dropbox s pogledom, prikazanim

na Sliki 4.9,

- določi kontekst (aktivnost), iz katerega se bo aplikacija Dropbox zagnala,

- zaženi intent.

Slika 4.8: Nalaganje datoteke v Dropbox z uporabo Intenta

22

Na skoraj identičen način pridobimo vhodni pretok datoteke, pridobljene iz Dropboxa. Pri

grajenju zahteve le specificiramo, da se datoteka želi prenesti, za zaključitev zahteve pa

uporabimo metodo, ki pretvori rezultat zahteve v objekt vhodnega pretoka.

Slika 4.9: Prenos datoteke iz Dropboxa z uporabo Intenta

Zelo podobnemu postopku za pridobitev aplikacijskega ključa sledimo pri registraciji

aplikacije k Microsoft OneDrivu [28].

4.3 Microsoft OneDrive

Za implementacijo OneDrive v mobilni aplikaciji moramo slediti do zdaj že znanemu

postopku. V Gradle datoteko vključimo knjižnico, in sicer z naslednjim stavkom, ki ga

vključimo v zavihek »dependencies«:

compile('com.microsoft.onedrivesdk:onedrive-picker-android:v2.0')

Naslednji korak je pridobitev aplikacijskega ključa. Aplikacijo registriramo na portalu za

razvijalce Microsoft, prikazanem na Sliki 4.10.

23

Slika 4.10: Registriranje aplikacije, korak 1

S klikom na gumb za dodajanje aplikacije se ponudi dialog, v katerega vpišemo osnovne

podatke o aplikaciji. Vpišemo ime aplikacije, elektronsko pošto in lastnika aplikacije. Za

novejše uporabnike portala je možna tudi izbira vodene namestitve. Po končani namestitvi

imamo dostop do razvojne konzole, kjer je prikazan tudi naš aplikacijski ključ. Kar se tiče

obsega kode, je implementacija nalaganja in shranjevanja prek OneDrive storitve najkrajša.

Za nalaganje je treba ustvariti le eno datoteko (objekt File) ter jo vstaviti v obliki URI v klic

metode »startSaving«, ki se vrši nad objektom »ISaver«, ki se ga ustvari s klicem metode

»createSaver«, ki ima kot argument aplikacijski ključ. Sproži se grafični vmesnik, ki

uporabniku omogoči, da si sam izbere, kam želi shraniti datoteko. Napake se lovijo v metodi

»onResume()«, ki jo Android avtomatsko sproži, ko se uporabnik vrne v aplikacijo.

Podobna logika se izvršuje za shranjevanje datoteke iz OneDriva. Sprožimo grafični vmesnik

(enak kot na Sliki 4.11) , ki uporabniku prikaže datoteke, ki jih ima shranjene na svojem

profilu. Ko si izbere datoteko, se ta prenese v aplikacijo, grafični vmesnik pa se avtomatsko

zapre. Razlika je le, da za sprožitev grafičnega vmesnika nad objektom tipa IPicker sprožimo

metodo »startPicking()«, ki pa nima nobenih uporabniško definiranih argumentov [29].

24

Slika 4.11: Grafični vmesnik za shranjevanje in nalaganje v OneDrive [29]

V primeru, da uporabljamo Intent, je proces enak kot pri Dropboxu, razlika je le v tem, da

uporabljamo drugo ime paketa, in sicer »com.microsoft.skydrive«. Zaradi solidne

implementacije shranjevanja iz OneDrive se Intent uporabi le za nalaganje v OneDrive

(njegov grafični vmesnik je prikazan na Sliki 4.12). V primeru, da imamo osebni in poslovni

račun OneDrive, na slednjega ni mogoče nalagati datotek, mogoče je samo shranjevati iz

OneDrive računa. Na to nas opozori aplikacija, ko jo namestimo prek Google Play tržnice.

25

Slika 4.12: Nalaganje v OneDrive z uporabo Intenta

26

5. SKLEP

V projektnem delu smo pregled nad oblačnimi storitvami in njihovo integracijo naredili na

osnovi lastno izdelane aplikacije Diabetix. Ta omogoča nalaganje in shranjevanje iz vseh

treh glavnih ponudnikov oblačnih storitev. Storitve smo lahko v aplikacijo vključili na dva

načina, med katerima smo se odločali glede na poznavanje platforme, želje po

prilagodljivosti interakcije ter različico Androida. Integracija po navodilih ponudnikov je v

grobem potekala po istih korakih: 1. pridobitev aplikacijskega ključa, 2. uvoz knjižnic z

uporabo orodja Gradle in 3. vključevanje konceptov, prikazanih na uradnih primerih, v

lastno kodo.

Z vidika neizkušenega razvijalca je najlažje integrirati Google Drive storitev, saj nas uradna

dokumentacija vodi skozi vsak korak, z mnogimi primeri in razlago, primerno za vse

razvijalce. OneDrive je zaradi skope dokumentacije in težav z najnovejšo različico Androida

najtežje integrirati. Dropbox je zaradi uporabe dodatnega koraka avtentikacije in ročnega

manipuliranja s pridobljenim žetonom oAuth2 ter sumarične dokumentiranosti najnovejše

različice Dropbox API na drugem mestu. Največja prednost integracije Dropboxa je, da

razvijalec z izkušnjami s kakšnim drugim jezikom lahko brez težav integrira storitev. Če je

prvi cilj aplikacije, da vključi vse potencialne ponudnike ter samo osnovne funkcionalnosti,

kot sta nalaganje in shranjevanje, je mogoče, da integracijo izpeljemo z uporabo lastno

definiranih Intentov. Lastno definirani Intenti lahko zaradi odprtosti in enostavnosti kode

nudijo najenostavnejšo rešitev problema integracije. V takšni implementaciji namreč niso

potrebni aplikacijski ključi in dodatno kodiranje. V primeru Dropboxa uporabniku prav tako

brez dodatnega programiranja ponudimo grafični vmesnik. Potrebne pa so izkušnje z

življenjskim ciklom aktivnosti in Intenti, manj je funkcionalnosti, prav tako so možne težave

pri starejših različicah Androida in uporabnik mora imeti na telefonu aplikacijo. Največja

slabost definiranja lastnih Intentov pa je, da je na voljo precej manj funkcionalnosti. V

aplikaciji Diabetix tako obstaja kombinacija uradnih rešitev in definiranja lastnih Intentov.

Za storitev Google Drive je dokumentacija dovolj natančna, koda pa dovolj enostavna, da

lahko za proces nalaganja in shranjevanja uporabimo uradno rešitev. Pri storitvi OneDrive

se pojavi težava z Androidom 7.0, zato se nalaga prek lastno definiranega Intenta, shranjuje

27

pa iz uradnega primera, saj spremembe različice Android 7.0 ne vplivajo na delovanje

uradnega primera. Za Dropbox se zaradi pomanjkanja prej ustvarjenega grafičnega

vmesnika uporabi lastno definiran Intent tako za nalaganje kot za shranjevanje.

28

6. VII

[1] Fang Liu, Jin Tong, Jian Mao, Robert Bohn, John Messina, Lee Badger and Dawn

Leaf.Recommendations of the National Institute of Standards and Technology.

September 2011. Dostopno na:

http://imtdocs.alberta.ca/NIST_Cloud_Computing_Reference_Architecture.pdf [21.

6. 2017].

[2] Gillian Oliver Victoria University of Wellington, New Zeal and Steve Knight National

Library of New Zealand, marec 2015. Dostopno na:

http://www.dlib.org/dlib/march15/oliver/03oliver.html [21. 6. 2017].

[3] Judith Hurwitz, Robin Bloor, Marcia Kaufman, Fern Halper. Cloud Computing For

Dummies. Wiley Publishing, 2010.

[4] Rajkumar Buyya, James Broberg, Andrzej M. Goscinski. Cloud Computing: Principles

and Paradigms. John Wiley & Sons, 2010. Dostopno na:

http://www.dlib.org/dlib/march15/oliver/03oliver.html [21. 6. 2017].

[5] Android Studio The Official IDE for Android. Avtor in čas publikacije neznan.

Dostopno na: https://developer.android.com/studio/index.html#features [14. 6.

2017].

[6] Frederic Lardinois. Google updates drive with a focus on its business users, marec

2017.Dostopno na: https://techcrunch.com/2017/03/09/google-drive-now-has-

800m-users-and-gets-a-big-update-for-the-enterprise/ [21. 6. 2017].

[7] Kotlin and Android. Dostopno na: https://developer.android.com/kotlin/index.html

[12. 6. 2017].

[8] Alberto Furlan. Android Development Tools List. April 2017. Dostopno na:

http://www.businessofapps.com/guide/android-development-tools/ [1. 6. 2017].

[9] Neil Smyth Android Studio 2.3 Development Essentials - Android 7 Edition.

PayloadMedia, Inc., 2017.

[10] Maven vs. Gradle. Dostopno na: https://gradle.org/maven-vs-gradle[25. 6. 2017].

[11] Configure your build. Dostopno na:

https://developer.android.com/studio/build/index.html [20. 6. 2017].

29

[12] Felix. Cloud storage report 2017. Marec 2017. Dostopno na:

https://blog.cloudrail.com/cloud-storage-report-2017/ [11. 6. 2017].

[13] Bret Taylor. What does Bret Taylor think of Dropbox's future, given that we're

moving to a world without files? Marec 2016. Dostopno na:

https://www.quora.com/What-does-Bret-Taylor-think-of-Dropboxs-future-given-

that-were-moving-to-a-world-without-files [1. 6. 2017].

[14] How much free space can I earn? Dostopno na:

https://www.dropbox.com/help/space/how-much-free-space [25. 7. 2017].

[15] Johnson Hur. History of online storage. Junij 2017. Dostopno na:

http://bebusinessed.com/history/history-of-online-storage/ [23. 6. 2017].

[16] Martyn Casserly. The best cloud storage services of 2017. Junij 2017. Dostopno na:

http://www.techadvisor.co.uk/test-centre/internet/best-cloud-storage-services-

2017-uk-3614269/ [24. 6. 2017].

[17] Mauricio Prinzlau. Avgust 2016. The Best Cloud Storage 2017: Google Drive vs

Dropbox vs iCloud vs OneDrive vs Amazon Cloud Drive. Dostopno na:

https://www.cloudwards.net/best-cloud-storage/ [12. 6. 2017].

[18] Ivanka Menken. Dropbox Complete Certification Kit - Core Series for It. Lightning

Source, 2012.

[19] Cade Metz. The epic story of Dropbox's exodus from the Amazon cloud empire.

Marec 2016. Dostopno na: https://www.wired.com/2016/03/epic-story-dropboxs-

exodus-amazon-cloud-empire/ [23. 6. 2017].

[20] Craig Smith. By the numbers: 21 staggering Dropbox statistic(December 2016).

Dostopno na: http://expandedramblings.com/index.php/dropbox-statistics/ [25. 6.

2017].

[21] OneDrive for business. Dostopno na: https://products.office.com/sl-SI/onedrive-for-

business/online-cloud-storage [25. 7. 2017].

[22] By the numbers. Dostopno na: https://news.microsoft.com/bythenumbers/ms-

cloud [25. 7. 2017].

30

[23] Desktop Operating System Market Share. Maj 2017. Dostopno na:

https://www.netmarketshare.com/operating-system-market-

share.aspx?qprid=10&qpcustomd=0 [11. 6. 2017].

[24] Larry Dignan. Google plans to leverage G Drive for broader enterprise footprint,

team management and collaboration. Marec 2017 Dostopno na:

http://www.zdnet.com/article/google-plans-to-leverage-g-drive-for-broader-

enterprise-footprint-team-management-and-collaboration/ [1. 1. 2017].

[25] Start integrating. Dostopno na: https://developers.google.com/identity/sign-

in/android/start-integrating [20. 6. 2017].

[26] Ian Lamont. Google Drive and Docs in 30 Minutes (2nd Edition): The unofficial guide

to the new Google Drive, Docs, Sheets & Slides. i30 Media Corporation, 2015.

[27] Quickstart. Dostopno na:

https://developers.google.com/drive/v3/web/quickstart/android [2. 5. 2017].

[28] Dropbox for Java Developers. Dostopno na:

https://www.dropbox.com/developers/documentation/java [1. 5. 2017].

[29] OneDrivePicker for Android. Dostopno na: OneDrive picker for Android:

https://dev.onedrive.com/sdk/android-picker/android-picker-overview.htm [22. 6.

2017].