Artikel top billede

(Foto: Computerworld)

Sådan laver du apps til Android uden at kode

Har du aldrig skrevet en linjes kode i dit liv, men vil lave dine egne Android apps? Så prøv det gratis og simple App Inventor fra MIT og Google.

Af Michell Cronberg, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Tænk hvis alle kunne ”kode”. Tænk hvis alle - uanset alder, viden og erfaring – kunne udvikle en applikation til at løse netop deres helt konkrete og personlige udfordring. Det ville måske ikke ændre verden, men det ville give mange mennesker et nyt, spændende og praktisk værktøj. Det kunne eksempelvis være udvikling af en applikation til en speciel matematisk problemstilling, et personligt spil, indsamle og gemme data omkring husets varmeforbrug, en personlig kilometeropgørelse til brug i bilen, en applikation til ungerne så de nemt via sms kan kommunikere, hvor de befinder sig – og så videre.

Problemet er, at programmering ikke er nemt. Det kræver en stor og bred viden om it generelt, det kræver evnen til både at tænke kreativt og logisk, og det kræver en masse erfaring med flere typer af såvel applikationsarkitektur som programmeringssprog. Derfor er datalogistudiet jo også en længere uddannelse.

App Inventor

Men hvad nu hvis det faktisk ikke var så svært… Den tanke har ligget bag mange forskellige projekter gennem tiderne. De fleste har haft til formål at introducere børn og voksne til programmering uden at have reel praktisk værdi, men nogle enkelte sigter højere og forsøger at skabe en mulighed for nemt at skabe rigtige brugbare applikationer.

I 2010 gav Google adgang til App Inventor, hvor man gennem en web-brugerflade kan udvikle applikationer til Android-enheder ved at arbejde med visuelle blokke, der repræsenterer forskellige programmeringsmæssige ressourcer. Det er således ikke nødvendigt at skrive noget kode overhovedet – alt ”programmering” sker grafisk. I 2011 gav Google projektet videre til MIT (Massachusetts Institute of Technology), som i slutningen af 2013 frigav version 2.

I skrivende stund har App Inventor 2,9 millioner registrerede brugere rundt omkring i verden, som tilsammen har produceret 7,5 millioner applikationer. Hvor mange af disse applikationer som er meget andet end ”Hello World” er ikke til at gisne om, men tallene er alligevel ret imponerende. Hele App Inventor-projektet er open source, og dermed gratis for alle.

Bag kulisserne

Rent teknisk sker al udvikling på nettet – der skal ikke installeres noget udviklingsmiljø eller kompiler. App Inventor består af en HTML-brugerflade, hvor man kan designe en applikation med knapper, lister, tekstbokse og andre komponenter, samt en grafisk blok-editor, hvor man kan arbejde med de blokke, der repræsenterer logikken i applikationen.

Sidstnævnte er baseret på Google Blocky, som også benyttes i alle mulige andre projekter. Selve projektet (brugerflade og blok-logik) kompileres til afvikling på Android ved hjælp af en Kawa-kompiler, men denne del er abstraheret helt væk fra brugerne af App Inventor – de kan blot downloade en APK-fil til afvikling i Android, når projektet er færdigt.

Brugerfladen

Når man har oprettet sig som bruger på http://appinventor.mit.edu, og har oprettet et nyt projekt, kan man designe brugerfladen i et klassisk udviklingsmiljø. Det sker ved at trække og slippe brugerflade-elementer (i andre udviklingsmiljøer kaldes de kontroller) fra en værktøjskasse, og man kan dermed ”tegne” sin brugerflade.

Elementerne kan enten være repræsenteret visuelt på brugerfladen eller skjult for at stille en funktionalitet til rådighed for blok-logikken. Af de visuelle elementer finder man blandt andet knapper, tekstbokse, lister, etiketter, browservinduer, billeder (sprites), video- og audio-afspillere, tabeller med videre. Det er med disse elementer, man designer sin brugerflade.

De skjulte elementer er eksempelvis forskellige sensorer og komponenter som timere, scannere, gps, NFC, Bluetooth, telefon, sms, web-service, database med videre. De er typisk ikke repræsenteret på brugerfladen, men kan bruges i logikken til at fange hændelser (”når der kommer en sms, så…” eller ”når lokationen ændrer sig, så…”) eller til at foretage en konkret handling (”send sms”, ”hvad er lokationen”, ”gem data i database” med videre).

Design af brugerfladen er således meget simpel. Alt foregår ved ”træk og slip”, og når elementerne er placeret på brugerfladen, kan egenskaber (farve, størrelse, font med videre) tilrettes i et egenskabsvindue. I komplekse brugerflader vil man sikkert hurtigt blive begrænset af udviklingsmiljøet, men simplicitet har jo som bekendt en pris. Man vil dog uden de store problemer kunne skabe en pæn standard-brugerflade.

Logik i blokke

Det innovative i App Inventor er dog muligheden for at skabe logik uden kode ved hjælp af grafiske blokke. Det foregår i en anden designer, hvor man dels kan arbejde med standardblokke for kontrol (betingelser og løkker), logik (udtryk), matematik, tekster, lister, variabler med videre. En blok skal typisk kombineres med andre blokke for at skabe den ønskede logik – eksempelvis består en betingelse (if/else) af selve betingelsen og en blok, der udføres, hvis udtrykket er sandt, og en anden hvis udtrykket er falsk. Blokkene sættes sammen i designeren nemt og effektivt, og selv om man ikke er programmør, kan det næsten ikke gå galt.

Ud over standardblokke findes der også blokke svarende til elementerne på brugerfladen. Man kan ændre teksten i en tekstboks, afvikle andre blokke, når gps’en fortæller, at positionen er ændret, eller afvikle blokke, når der klikkes på en knap.

Kør

Selve kompileringen af projekterne til afvikling på Android-platformen sker helt automatisk via Build-menuen, og man kan vælge at hente APK-filen til afvikling direkte på en enhed eller lade enheden hente applikationen selv gennem en QR-kode. Nærmest skræmmende så simpelt det er at få en nyudviklet applikation installeret. Hvis man ønsker at kunne fejlfinde mere effektivt, kan man benytte den indbyggede emulator, tilslutte enheden via USB til en på forhånd installeret applikation, der findes til alle platforme, eller installere en applikation på selve enheden og lade den kommunikere direkte med App Inventor-sitet.

Prøv det

Om man så reelt kan bruge App Inventor til noget kommer helt an på formålet. Hvis man gerne vil lege og eller lære, er det tæt på genialt, og hvis man gerne vil udvikle en prototype, er det absolut værd at overveje. Vil du gerne udvikle din helt personlige Android-applikation, er du i gang på meget kort tid. Men hvis du vil udvikle en ”rigtig” applikation til Google Play, som andre kan hente/købe, vil du sikkert løbe panden mod abstraktionsmuren relativt hurtigt, og bande over at man er begrænset til de brugerflade-elementer og blokke, som er tilgængelige.

Men prøv det selv på http://www.appinventor.org – eventuelt med et barn eller to ved din side – det er absolut værd at bruge et par aftner på.

I min familie manglede vi en applikation, så vi nemt kunne kommunikere sammen vis sms. Vi kunne ikke finde en brugbar på Google Play – så vi bankede selv en sammen. Læs hvordan

Som du kan læse i ovenstående, så kan du meget nemt skabe din egen Android-applikation til telefon, tablet, fjernsyn eller andre enheder. Det giver mulighed for at lege med og lære om programmering, skabe en prototype eller udvikle din helt egen personlige applikation. Her giver vi et eksempel på en sådan personlig applikation – den er meget simpel og nem at udvikle, men den giver mig og min familie stor personlig værdi, fordi den sparer os for tid og besvær.

Ideen bag applikationen

Her i familien (to drenge samt far og mor) kommunikerer vi en del på sms, og flere gange er der tale om fælles beskeder. Vi har ligeledes nogen faste tekster, som vi sender indimellem (”er du kommet hjem”, ”sov godt” og så videre). Jeg kunne godt tænke mig en meget simpel sms-applikation, der gør det nemt at sende til en eller flere i familien. Jeg er helt klar over, at Google Play bugner med sms-applikationer, men typisk kan de alt for meget i forhold til, at mine drenge også skal kunne finde ud af det.

Jeg vil udvikle vores egen applikation, og så tilrette den løbende, så vi alle kan bruge den. Så kan jeg efterfølgende tilføje diverse fede features. Kald det en personlig sms-applikation, og første version er helt ”ren” og simpel. Hvis den bliver brugt meget, kan vi begynde at udvikle yderligere på den. Her er en kort beskrivelse af, hvordan jeg har udviklet applikationen ved at oprette mig som gratis bruger på http://ai2.appinventor.mit.edu.

Brugerfladen

Brugerfladen er, som det fremgår af figur 1, meget simpel. Den består af fire checkbokse, en liste (kaldet en Spinner i værktøjskassen), en tekstboks og en knap. Kontrollerne er trukket fra værktøjskassen til venstre, og egenskaber som tekst, bredde, font og så videre kan tilrettes i egenskabsvinduet til højre. Den eneste kontrol, der er lidt speciel er Spinner-kontrollen, som har fået tildelt statiske faste tekster i egenskabsvinduet.

Det er nemt og simpelt, og man kan eventuelt benytte en af flere kontroller til at styre, hvordan andre kontroller placeres i forhold til hinanden (se under Layout i værktøjskassen).

Slutteligt benyttes en Texting-kontrol (Under Social i værktøjskassen). Den er ikke synlig i brugerfladen og benyttes kun til at håndtere sms’er.

Logik

Det var selve brugerfladen – absolut ikke fancy men brugbar med den ønskede funktionalitet. Tilbage er så selve logikken, og den kan tilrettes ved at klikke på Blocks-knappen øverste til højre. Så skifter designeren og værktøjskassen til at håndtere blokke af logik.

Der er umiddelbart to logiske områder i min applikation – begge relateret til hændelser på brugerfladen. Når der bliver valgt et element på listen, skal den valgte tekst indsættes i tekstboksen, og når der klikkes på knappen, skal der sendes en eller flere sms’er.

I figur 2 kan du se logikken bag et valgt element på listen, og den kan nogenlunde oversættes til: Når der vælges et element på listen, og dette element ikke er det første (som er ”Vælg evt. tekst”) så sæt teksten i tekstboksen til en sammenkædning af det, der står i tekstboksen, og det der er valgt på listen. Sæt herefter listen tilbage til det første element.

I figur 3 kan du finde logikken bag et klik på knappen, som kan oversættes til: Når der klikkes på knappen, så sæt teksten der skal sendes til indholdet af tekstboksen, og send til de personer, hvor checkboksen er true. Slet herefter teksten i tekstboksen og ret alle checkbokse, så de ikke er valgt.
Blokkene kan trækkes fra værktøjskassen til venstre, og ”klikkes” nemt sammen for på den måde at skabe en sammenhængende funktionalitet.

Kør applikationen

Tilbage er at få applikationen ned på vores telefoner. MIT har frigivet en applikation på Google Play kaldet ”MIT AI 2”, som gør det meget simpelt. Man bygger (kompilerer) projektet fra Build-menuen ved at vælge ”Provide QR code for .apk”, og efter nogle få sekunder dukker en QR-kode frem (se figur 4). Denne scannes af MIT AI 2-applikationen, hvorefter applikationen installeres. Nemt, smertefrit og helt uden kabler.

Næste version

Vores simple sms-applikation er installeret på samtlige fire telefoner (se figur 5 og figur 6), og fungerer upåklageligt. Jeg ved godt, at ”rigtige” applikationer naturligvis ikke ville have navne, telefonnumre og faste tekster som en del af brugerfladen og logikken, men det er ligegyldigt her. Vi er kun os fire, og hvis telefonnumre eller tekster ændres, så retter jeg bare applikationen og installerer igen. Det er som sagt en ”personlig” applikation, og ikke en der skal bruges af andre end os.

Men hvad med næste version? Vi har blandt andet talt om, at det ville være smart at kunne sende et billede på samme måde (Camera-kontrollen), et lydklip (SoundRecorder-kontrollen), eller få applikationen til at sende besked til far og mor, når ungerne kommer hjem (LocationSensor- eller NearField-kontrollerne). Det er kun fantasien, der sætter grænserne. Hvem ved – måske bliver applikationen så effektiv, så den går fra at være en personlig applikation til en prototype og slutteligt til en rigtig applikation på Google Play. Og hvis ikke så er det også ligegyldigt – applikationen giver værdi for os.