Harjoitus 7

Linkki repoon

Tämä on jatkoa edelliselle raportille, jossa tein SaltStack-tilaa, joka asentaa ja konfiguroi Ubuntulle tarvittavat ohjelmat mobiilisovelluksen kehittämistä varten.

Tämä raportti on tehty käyttäen Markdownia, lähdekoodi näkyy tässä.


Sain edellisessä raportissa toimimaan noden ja npm:n, mutta android SDK:tä en saanut vielä toimimaan. Käytän taas masterina virtuaalipalvelinta, minionina windows 7 64-bit:ssä virtualboxissa pyörivä Ubuntu 16.04 Server 64-bit.

Huomasin, että käyttäessä virtuaalipalvelimella state.apply:tä, joskus tulee muistivirhe OSError: [Errno 12] Cannot allocate memory. Tämä johtuu siitä, että virtuaalipalvelimen muisti ei riitä, sitä on 1 GB. Ennen kuin aloin kirjoittamaan tätä raporttia muutin yhden asetuksen tiedostossa /etc/salt/master, luettuani tämän. Etsin rivin, jolla lukee worker_thread painamalla nanossa Ctrl-w, ja kirjoittamalla sen. Vaihtoehto on kommentoitu ja sen default arvo 5. Kommentissa lukee, että ei voi laittaa alle 3. Kokeilen laittaa juuri 3. Tallennan tiedoston, ja restarttaan salt-masterin komennolla sudo systemctl restart salt-master.service. Tällä hetkellä salt-master vie 290 MB RAMia. Kirjoitan raportin lopussa esiintyikö muistiongelma.

Android SDK konfigurointi

Manuaalisesti

Tällä hetkellä tila lataa android-sdk zipin ja extractaa sen käyttäjän kotihakemistoon kansioon android-sdk. Seuraavaksi pitää konfiguroida sitä, koska siitä puuttuu joitain tarvittavia osia, kuten build-tools. En ole ihan varma mitä kaikkea tarvitsen, koitan ladata jotain ensin. Kokeilen ensin manuaalisesti minionilla. Menen kansioon ~/android-sdk/tools/bin ja ajan komennon ./sdkmanager --list. Se kertoo, että vain tools on asennettu, versio 26.0.1. Teen ensin updaten komennolla ./sdkmanager --update. Tässä piti odottaa aika kauan, luulin että jumittui. Mutta pitkän ajan jälkeen tulee teksti done. Tämän jälkeen tapahtui jotain kummallista, kun yritin katsoa tarviiko hyväksyä lisenssejä:

# olen kansiossa ~/android-sdk/tools/bin
$ ./sdkmanager --licenses
-bash: ./sdkmanager: No such file or directory
$ ./sdkmanager
-bash: ./sdkmanager: No such file or directory
$ ls
$ cd ..
$ ls
android  bin  emulator  emulator-check  lib  mksdcard  monitor  NOTICE.txt  package.xml  proguard  source.properties  support
$ cd bin
$ ls
apkanalyzer  archquery  avdmanager  jobb  lint  monkeyrunner  screenshot2  sdkmanager  uiautomatorviewer

Siis kansion kaikki tiedostot olivat kateissa vähän aikaan, kunnes tulin siihen takaisin. En ole koskaan nähnyt tällaista. Toivottavasti tätä ei tapahdu Saltissa.

Seuraavaksi hyväksyn kaikki mahdolliset lisenssit käyttämällä komentoa yes.

$ yes | ./sdkmanager --licenses
..
Accept? (y/N): All SDK package licenses accepted

Asennan sdkmanagerilla paketteja. En ole ihan varma mitä kaikkea pitää asentaa, joten katson koneiltani, joissa olen käyttänyt android sdk:tä, että mitä niissä on. Kummassakin on build-tools/23.0.1, extras/android/m2repository, patcher/v4, platform-tools, platforms/android-23, ja lisäksi tools, joka on jo asennettu. Yritän asentaa kaikki nämä, paitsi ehkä vähän uudemmat versiot. Ajan uudelleen komennon ./sdkmanager --list, ja huomaan, että nyt emulator, patcher/v4 ja platform-tools on asennettu. Ennen updatea ei ollut. En kuitenkaan tiedä käykö näin aina, joten varmuuden vuoksi laitan nämäkin minun install komentoon. Kokeilen tällaista ensin: ./sdkmanager "platform-tools" "platforms;android-27" "patcher;v4" "emulator" "build-tools;27.0.3" "extras;android;m2repository". Ajan vielä tämän jälkeen uudestaan lisenssien hyväksymiskomennon, mitään uutta ei kuitenkaan ollut.

Muistaaksen react native vaatii, että android sdk löytyy pathistä, joten teen sen vielä. Ohje löytyi tästä.

$ cd
$ nano .profile
# kopioin seuraavat neljä riviä
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

# tallennan ja teen source, jotta muutos on välitön
$ source .profile

.bash_profile sijasta piti käyttää .profile. Saltissa en voi käyttää $HOME, ja sourcea ei tarvitse tehdä, koska se liittyy yhteen komentorivi-instanssiin. Tässä välissä kokeilenkin päivittää Salt-tilani, ja testata toimiiko se.

Saltilla

Lisään Android SDK:n lataavan if-lauseen sisälle lisää juttuja, koska tarkoitus on konfiguroida se vain kerran.

configure_android_sdk:
  cmd.run:
    - user: {{ user }}
    - group: {{ user }}
    - cwd: /home/{{ user }}/android-sdk/tools/bin
    - name: |
        yes | ./sdkmanager --update
        ./sdkmanager "platform-tools" "platforms;android-27" "patcher;v4" "emulator" "build-tools;27.0.3" "extras;android;m2repository"
        yes | ./sdkmanager --licenses

add_android_to_path:
  file.append:
    - name: /home/{{ user }}/.profile
    - source: salt://android-dev/to_path

reminder_to_source:
  cmd.run:
    - name: printf "update path with this command:\nsource ~/.profile\n\n" | write {{ user }}

Pari uutta juttua tässä. cmd.run:in cwd-parametri tarkoittaa, että komento suoritetaan sen määrittämässä kansiossa. file.append lisää tiedoston loppuun halutut rivit. Lisäsin myös kohdan joka muistuttaa minionia tekemään source ~/.profile, koska tietääkseni salt ei voi sitä tehdä. Ohjeen siihen löysin tästä. Muutoin siis minionin pitäisi kirjautua ulos ja takaisin sisään, jotta path päivittyisi.

Testaan tilaa tässä vaiheessa. Resettaan ensin virtualboxini aloitustilaan, ja teen state.apply. Kaikki toimii hyvin. Tein uuden appin windowsilla, asensin sen kännykkään, ja siirsin sen uuteen GitHub-repoon. Kloonasin minionilla tämän, siirryin siihen kansioon, ja ajoin komennon npm i, jolloin node_moduulit ladataan. Sitten npm start, joka aktivoi development serverin, johon voin ottaa yhteyden kännykällä kirjoittamalla appissä kohtaan Debug server host & port for device osoitteeksi 192.168.0.14:8081.

Nyt voin siis minionilla editoida appiä ja nähdä muutokset kännykkässä. Huono puoli emulaattooriin verrattuna on se, että pitää olla samassa langattomassa verkossa, ja pitää omistaa android puhelin. En ehdi yrittää saada emuulattoria toimimaan, ja minun koneella ei ole ehkä mahdollista, koska teho ei riitä.

Lisään tilan ensimmäiseen kohtaan vielä, että ladataan git ja geany. Git on tosi tärkeä olla, ja geany on android ohjelmointia varten. Olen itse käyttänyt sitä aika paljon, se on kiva kevyt ohjelma.

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s