Vi föreslår att ni först läser beskrivningen av labb 3 som app; denna finns här.
Programmet i labb 6 består av ett interface och tio klasser. För att åstadkomma motsvarande Android-app behålls gränssnittet GuessEngine oförändrat, liksom klasserna Code, Color, ContradictionException och Reply, samt er modellklass. Dock måste samtliga förses med en första rad som anger paketnamnet.
Vyklasserna OldGuessPanel och NewGuessPanel måste skrivas om för att utnyttja Android-bibliotekets komponenter och metoder. Här har vi inte gjort detta för att kunna anpassas till godtycklig skärmstorlek; vi förväntar oss en WVGA-skärm med 800x480 pixlar.
Slutligen slås MasterMindView och Main ihop på liknande sätt som i Game of Life. Också här beskrivs layouten i en separat XML-fil.
Allt detta, utom modellklassen, är gjort i den zip-fil ni kan ladda ner nedan.
Följande fyra korta steg måste utföras:
$ ls Mastermind AndroidManifest.xml res src
Manifestfilen AndroidManifest.xml innehåller information om projektet; den skapas automatiskt när ett Android-projekt skapas. Katalogen res innehåller resurser hörande till projektet. Här finns i underkatalogen layout den layoutbeskrivning vi nämnde ovan. I de tre drawable-katalogerna finns projektets ikon för olika skärmupplösningar.
I katalogen src finns källkoden; närmare bestämt i underkatalogen src/se/chalmers/cse/tda547/mastermind. Anledningen till denna djupa katalogstruktur är att varje Android-program måste ha ett unikt paketnamn; därför väljer man konventionellt paketnamnet så att början är reverseringen av ett domännamn man kontrollerar, i vårt fall cse.chalmers.se. Tillägget tda547 identifierar programmet som utvecklat för denna kurs och slutligen identifierar suffixet mastermind unikt detta projekt. Katalogstrukturen följer då av standardregler för hur Java-paket placeras i ett filträd. Vi kan se vad som finns där:
$ ls Mastermind/src/se/chalmers/cse/tda547/mastermind/ Code.java Color.java ColorUtils.java ... resten av programmets klasser ...
$ android update project -p Mastermind -t android-7
Programmet android hjälper till att administrera Android-projekt. Vi uppdaterar projektet i katalogen Mastermind (-p eller --path) för att generera kod för Android, API-nivå 7 (ofta kallad för Android 2.1) (-t eller --target). Ett antal ytterligare filer, som behövs men som vi bortser från här, skapas.
package se.chalmers.cse.tda547.mastermind;
Notera att vi förväntar oss att er modellklass heter CleverEngine. Döp om eller ändra namn i skapandet av modellobjektet i Mastermind.java.
$ ant debug ... mycket utskrifter ... BUILD SUCCESSFUL Total time: 3 seconds $
I den nyskapade katalogen bin finns nu filen Mastermind-debug.apk. Suffixet .apk anger ett Android package; denna fil kan laddas ner till en telefon och installeras som en app. Suffixet debug anger att detta fortfarande är en utvecklingsversion. För publicering gör man i stället en release-version, men detta kräver digital signering på ett sätt som vi inte vill diskutera här.
ant är ett verktyg som används för att bygga Java-applikationer; när de som här blir litet mer komplicerade är detta verktyg att föredra framför att själv köra javac.
ant hämtar information om vad som behöver göras från filen build.xml, som skapades av android när projektet uppdaterades.
För utveckling av Android-applikationer används ofta Eclipse med en speciell plugin; för ovanstående korta lista av åtgärder finns dock ingen fördel med användning av Eclipse.