Jump to content

# Android (Suomi)

From ArchWiki

Tämä artikkeli tai osa vaatii Suomennosta.

Huomioita: Missing some sections from the English page, broken packages have been fixed too. (Keskustele asiasta Talk:Android (Suomi)#)

Aiheeseen liittyen

- Android tethering
- Android Debug Bridge

## Tiedostojen siirtäminen

On olemassa useita tapoja siirtää tiedostoja tietokoneen ja Android laitteen välillä:

- USB kaapeli
  - Media Transfer Protocol moderneille Android laitteille
  - USB massamuisti vanhoille laitteille
  - Android Debug Bridge
- erityiset USB tikut / tavallinen USB tikku adapterilla
- Bluetooth
- Arch Linux ohjelmat Android vastakappaleella
  - asiakasohjelma tai palvelin protokollille joita voidaan käyttää tiedostojen siirtoon (kuten SSH, FTP, Samba tai HTTP)
  - KDE Connect (kdeconnect) – integroi Android laitteen KDEn tai Gnomen työpöytäympäristön kanssa (sisältää synkatut ilmoitukset & leikepöydän, multimedia hallinnan, ja tiedosto/URL jakaminen).
  - pilvipalvelusta synkronoivat asiakasohjelmat
  - Syncthing
  - sendanywhereAUR – järjestelmästäriippumaton tiedoston jakaminen
  - qrcpAUR – siirrä tiedostoja wifissä tietokoneesta mobiililaitteeseen QR-koodin skannauksella

## Sovelluksen kehittäminen

Virallisesti tuettu tapa koota Android sovelluksia on käyttää Android Studiota.[1]

### Android Studio

Android Studio on virallinen Android kehittämis ympäristö perustuen IntelliJ IDEA:an. Se antaa Android kehittäjän työkalut kehittelyä ja testailua varten.

Asenna kyseinen ohjelma android-studioAUR paketilla.

Android Studio luo `.android` polun kotihakemistoon. Android Studio resetointia varten tämän polun voi poistaa.

Huomautus

- Varmista että Java ympäristö on asetettu kunnolla muuten android-studio ei pysty käynnistymään.
- Jos Android Studio näkyy tyhjänä ikkunana, yritä siirtää `_JAVA_AWT_WM_NONREPARENTING=1`, katso pulma #57675.

Android Studion Setup Wizard asentaa tarvittavat #SDK paketit ja laittaa SDK oletukselta polkuun `~/Android/Sdk`.

Komentoriviltä sovellusten kokoamista varten (käyttäen esimerkiksi `./gradlew assembleDebug`) aseta ANDROID_SDK_ROOT mpäristömuuttuja SDKn sijaintiin.

### SDK paketit

Android SDK paketit voidaan asentaa suoraan ylävirrasta käyttäen #Android Studion SDK hallintaohjelmaa tai sdkmanager komentorivi työkalua (osana Android SDK Tools). Jotkin Android SDK paketit ovat myös saatavissa AUR paketteina, yleensä ne asentuvat `/opt/android-sdk/` polkuun.

Tarvittavat SDK paketit ovat:

Android SDK Paketti | SDK-tyyli polku | AUR paketti | AUR malli | CLI työkalut
--- | --- | --- | --- | ---
Komentorivi Työkalut | työkalut | android-sdk-cmdline-tools-latestAUR | android-sdk-cmdline-tools-latest-dummyAUR | apkanalyzer, avdmanager, lint, retrace, screenshot2, sdkmanager
SDK Build-Tools | koontityökalut;versio | android-sdk-build-toolsAUR | android-sdk-build-tools-dummyAUR | aapt, aapt2, aidl, apksigner, bcc_compat, d8, dexdump, dx, lld, llvm-rs-cc, mainDexClases, split-select, zipalign
SDK Platform-Tools | alustatyökalut | android-sdk-platform-toolsAUR | android-sdk-platform-tools-dummyAUR | adb, dmtracedump, e2fsdroid, etc1tool, #fastboot, hprof-conv, make_f2fs, make_f2fs_casefold, mke2fs, sload_f2fs, sqlite3, systrace
SDK Platform | alustat;android-taso | android-platformAUR, vanhemmat versiot | android-platform-dummyAUR (tarpeeton)

android-tools paketti antaa adb, #fastboot, `e2fsdroid` ja `mke2fs.android` SDK Platform-Tools:eista mukaanlukien `mkbootimg` ja `ext2simg`.

Huomautus ;

- Koska Android SDK sisältää 32-bittisiä binäärejä, kannattaa aktivoida multilib paketinjakelu. Muuten saat `error: target not found: lib32-*` virheviestin.
- Jos päätät suoraan asentaa SDK paketit ylävirrasta, asenna AUR paketit AUR mallit sarakkeesta saadaksesi tarvittavat riippuvuudet.
- Jos `java.lang.NoClassDefFoundError` poikkeus ilmestyy yritettäessä suorittaa`sdkmanager`, käytä OpenJDK 8 JRE:tä väliaikaisesti asentamalla paketti jre8-openjdk ja vaihtamalla Java ympäristö. Katso skdmanager --list ei toimi Java 9 kanssa

#### Android Emulaattori

Android Emulaattori on saatavissa `emulator` SDK pakettina, android-emulatorAUR pakettina, ja on olemassa myös malli paketti sille: android-emulator-dummyAUR.

Android Emulaattorin suorittamiseen tarvitaan Intel tai ARM järjestelmä kuvake. Ne voidaan asentaa AUR paketinjakelusta[2], sdkmanagerilla tai käyttämällä Android Studion AVD Manageria.

#### Muut SDK paketit AUR paketinjakelussa

Android tuki kirjasto on nyt saatavilla netistä Googlen Maven paketinjakelusta. Sen voi myös asentaa offline tilassa jakelusta `extras;android;m2repository` SDK pakettina (myös saatavilla android-support-repositoryAUR).

#### /opt/android-sdk tekeminen ryhmä-kirjoitettavaksi

AUR paketit asentavat SDKn polkuun `/opt/android-sdk/`. Tällä polulla on root oikeudet, joten muista suorittaa sdk manageria root käyttäjänä. Jos aiot käyttää sitä tavallisena käyttäjänä, luo android-sdk käyttäjien ryhmä, lisää käyttäjäsi sinne.

    # groupadd android-sdk
    # gpasswd -a <user> android-sdk

Laita pystyyn pääsyn hallinta lista antaaksesi uudelle ryhmälle oikeudet kirjoittaa android-sdk kansioon. sdkmanageri voi myös luoda uusia tiedostoja, joten aseta ACL oletus ACL:äksi. X merkintä oletusryhmässä tarkoittaa suorituksen sallimista omistajalta tai keltä vain muulta.

    # setfacl -R -m g:android-sdk:rwx /opt/android-sdk
    # setfacl -d -m g:android-sdk:rwX /opt/android-sdk

Kirjaudu sisään uudelleen tai käyttäjällä <user> kirjaudu terminaalissa uuteen ryhmään:

    $ newgrp android-sdk

### Muut IDE sovellukset

Android Studio on virallinen Android kehitysympäristö perustuen IntelliJ IDEAan. Vaihtoehtoisesti voidaan käyttää Netbeans sovellusta NBAndroid-V2 kanssa. Kaikki on kuvattu alapuolella.

#### Netbeans

Jos Netbeans on mieluisampi IDE ja Android sovelluksia halutaan kehittää, käytä NBAndroid-V2 .

Asenna android-sdkAUR paketti ja seuraa ohjeita täältä.

#### Vim / Neovim

On mahdollista kirjoittaa `flutter` ohjelmia Androidille ja iOS:lle käyttämällä tekstinkäsittely ohjelmaa (Neo)vim kuten IDE:tä. Asenna coc käyttäen jotain Vim lisäosiehallitsiaa. Asenna myös coc-flutter lisäosa automaattista täydennystä varten (kuten Android Studiossa) ja lataa koodi Android emulaattoriin.

#### Emacs

Jos haluaa käyttää Emacsia `flutter` ohjelmien kehittämiseen, kannattaa asentaa lsp-dart, niin kuin täällä on sanottu.

### Muut työkalut

#### Marvin

Marvin on työkalu, joka auttaa aloittelijita asettamaan Android kehitysympäristön. marvin_dscAUR asentaminen auttaa asettamaan seuraavat asiat: JDK, Android SDK, IDE(t), ja AVD.

## Koonti

Huomaa että nämä ohjeet perustuvat virallisiin AOSP koonti ohjeisiin. Muut Android-peräiset järjestelmät kuten LineageOS usein vaaivat ylimääräisiä askeleita.

### Tarvittavat paketit

Huomautus Ennen seuraavien askelien suorittamista, multilib paketinjakelu pitää olla aktivoituna `/etc/pacman.conf` tiedostossa.

2020 Huhtikuusta lähtien kootaksesi AOSP 10 tai LineageOS 17.1 tarvitaan (mahdollisesti vain osajoukko):

- base-devel, multilib-devel, gcc, repo, git, gnupg, gperf, sdlAUR, wxgtk2[broken link: package not found], squashfs-tools, curl, ncurses, zlib, schedtool, perl-switch, zip, unzip, libxslt, bc, rsync, ccache, lib32-zlib, lib32-ncurses, lib32-readline, ncurses5-compat-libsAUR, lib32-ncurses5-compat-libsAUR, ja TTF fontti asennettuna, kuten ttf-dejavu. Erityisesti Python2 tai Javaa ei tarvita, sillä ne tulevat AOSPsta/Lineagesta.

Seuraavat paketit koskevat vain vanhoja Android versioita: {,{Pkg|lib32-gcc-libs}} git, gnupg, flex, bison, gperf, sdlAUR, wxgtk2[broken link: package not found], squashfs-tools, curl, ncurses, zlib, schedtool, perl-switch, zip, unzip, libxslt, bc, rsync, ncurses5-compat-libsAUR, lib32-zlib,lib32-ncurses, lib32-readline, lib32-ncurses5-compat-libsAUR.

aosp-develAUR metapaketti kaiken yksinkertaista asennusta varten.

Lisäksi LineageOS tarvitsee seuraavat paketit: xml2AUR, lzop, pngcrush, imagemagick. Ne voidaan asentaa lineageos-develAUR metapaketilla.

### Java kehityssarja - JDK

Tarvittava JDK versio riippuu Android versiosta, jota kootaan:

- Android 9 (Pie) ja uudemmat, Java sisältyy Androidin lähdekoodiin ja erillistä asennusta ei siksi tarvita.
- Android 7 ja 8 (Nougat ja Oreo), OpenJDK 8 tarvitaan, joka on saatavissa jdk8-openjdk paketilla.

Huomautus Vanhemmille Android versioille, mihin Java ei sisälly, Javan oletuspolku on `/usr/lib/jvm/java-versio-openjdk-amd64`.

Aseta JAVA_HOME muuttuja välttääksesi ongelmia, joka myös vastaa paremmin Arch Linux asennuksen polkua. Esimerkki:

    $ export JAVA_HOME=/usr/lib/jvm/java-versio-openjdk

Tämä muutos toimii vain sen hetkisessä terminaali istunnossa.

### Koontiympäristön valmistelu

Asenna repo paketti.

Luo polku koonnille.

    $ mkdir ~/android
    $ cd ~/android

Android koonti prosessi olettaa `python` olevan python2. Lisää se muuttujaan `PATH`:

    $ mkdir bin
    $ ln -s /bin/python2 bin/python
    $ export PATH=$PWD/bin:$PATH

Vaihtoehtoisesti luo python2 virtuaaliympäristö ja aktivoi se:

    $ virtualenv2 --system-site-packages venv
    $ source venv/bin/activate

Huomautus

- Tämä aktivointi koskee vain sen hetkistä terminaali istuntoa. Virtuaaliympäristö env pidetään `venv` kansiossa.
- "--system-site-packages" antaminen virtualenv2 osoittaa virtuaaliympäristön asennetuille python2.7 moduuleille. Tämän pitäisi antaa käyttöön kaikki python moduulit mitä tarvitaan koontiin, olettaen kaikkien tarvittavien olevan asennettuna, kuten esimerkiksi python2-mako.
- Jos koonnin aikana edelleen saadaan virheilmoituksia littyen puuttuviin python moduuleihin nopea ja hieman rikkinäinen tapa korjata se on symlinkata /usr/lib/python2.7/* polkuun ~/android/venv/lib/python2.7/ (Vaihda ~/android vastaamaan omaa polkurakennettasi).

Esimerkki:

    $ ln -s /usr/lib/python2.7/* ~/android/venv/lib/python2.7/

tai (olettaen koontipoluksi Data/Android_Build):

    $ ln -s /usr/lib/python2.7/* /Data/Android_Build/venv/lib/python2.7/

### Lähdekoodin lataaminen

Tämä kloonaa riippuvuudet. Tämän tarvitsee tehdä vain ensimmäisen kerran kun kootaan Androidia, tai jos halutaan vaihtaa haaraa.

- `repo` sisältää `-j` argumentin joka operoi samalla tavalla kuin `make` komennossa. Koska se kontrolloi monia samanaikaisia latauksia, sitä arvoa kannattaa muuttaa sopimaan alavirran verkon kaistaan.

- haara pitää määritellä (lista haaroista) kuittaamaan `-b` argumentin kanssa. Jos tämän argumentin jättää pois, tästä saadaan ns. master haara.

    $ repo init -u https://android.googlesource.com/platform/manifest -b master
    $ repo sync -j4

Huomautus Synkronointiajan pienentämistä varten voidaan käyttää `-c` vipua repo komennolla kuten tässä esimerkissä:

    $ repo sync -j8 -c

`-c` vipu synkronoi vain sen haaran, joka on määritelty manifestissa. Vastaavasti tämän päättää haara määriteltynä `-b` vivulla tai sitten paketinjakelun ylläpitäjän oletushaara.

Odota pitkään. Kääntämätön lähdekoodi, `.repo` ja `.git` polkujen kanssa, joilla seurataan tämän kehitystä, yhdessä muodostavat valtavan määrän koodia. Android 10 julkaisemisen jälkeen, vähintään 250 GT vapaata levytilaa tarvitaan.

Huomautus Jos haluat päivittää paikallisen kopion Android lähdekoodista, myöhemmällä aikaa, anna vain koonti haara, lataa Virtualenv, ja uudelleen synkronoi:

    $ repo sync

### Koodin koonti

Tämän pitäisi tehdä mitä tarvitaan AOSP:tä varten:

    $ source build/envsetup.sh
    $ lunch full-eng
    $ make -j4

Jos suoritat lunch komentoa ilman argumentteja, se kysyy minkä koonnin haluat luoda. Käytä -j argumenttia numeron kanssa joka vastaa, tai on kaksinkertainen verraten ydin/säie määrään.

Koonti vie hyvin paljon aikaa.

Huomautus

- Huolehdi, että RAM-muisti ei lopu kesken. Android käyttää `/tmp` polkua raskaasti. Oletukselta partition tai levyn osan koko missä `/tmp` kansio on, on noin puolet RAM-muistin määrästä. Jos se täyttyy, koonti epäonnistuu. 4GT RAM-muistia ja enemmän on suositus. Jos `/tmp` ei ole tarpeeksi iso, sitä voi laajentaa. Vaihtoehtoisesti voidaan poistaa koko tmpfs fstab:ista.
- Android koonti ja suorittamis oppaasta suomennettuna:

"GNU make pystyy hoitamaan rinnakkaisia tehtäviä `-jN` vivulla ja on siis yleistä käyttää N tilalla numeroa välillä 1 tai 2 kerrottuna säikeiden määrällä, mitä tietokoneessa on jolla koontia suoritetaan. Esimerkiksi dual-E5520 koneessa (2 CPUta, 4 ydintä per CPU, 2 säiettä per ydin), nopeimmat koonnit tehdään komennoilla `make -j16` ja `make -j32`."

### Koonnin testaus

Kun valmis, suorita/testaa viimeinen levykuva (tai useampi).

    $ emulator

### Live levykuvan luonti

Asennettavan levykuvan luontia varten on tarpeellista suorittaa:

    make -j8 updatepackage

Tämä luo zip kuvakkeen `out/target/product/hammerhead` alle (hammerhead laitteen nimenä) joka on mahdollista asentaa.

## Asentaminen

Joissain tapauksissa halutaan palata vakioverioon Androidista, Android mobiili laitteen räätälöidyn ROMmin asennuksen jälkeen. Laitekohtaisille asennusohjeille, käytä XDA foorumeita.

### Fastboot

Fastboot (kuin myös ADB) sisältyy android-tools pakettiin.

Huomautus

- Firmwaren palauttaminen käyttämällä `fastboot` ohjelmaa voi osoittautua hankalaksi, mutta haluat ehkä selata XDA kehittäjien foorumeita vakio firmwarelle, joka löytyy usein `*.zip` tiedostona, sen sisällä tuleekin firmware tiedostot sekä `flash-all.sh` skripti. Esimerkiksi Google Nexus firmwaret sisältäväy `flash-all.sh` skriptin tai toisena esimerkkina voisi olla OnePlus One - XDA kommenttiketju, mistä löytyy firmware sisälletyllä `flash-all.sh` skriptillä.

- Jos saat `no permissions` virheilmoituksen tai suorittaminen jää roikkumaan `< waiting for any device >` ilmoituksella, joudut suorittamaan `fastboot`:in root käyttäjänä. Vaihtoehtoisesti voidaan asentaa android-udev paketti tai AUR pakettiandroid-udev-gitAUR ja yhdistämällä laite uudestaan.

### Samsungin laitteet

Samsungin laitteisiin ei pystytä asentamaan Fastboot työkalun avulla. Vaihtoehtoina on vain Heimdall ja Odin (käyttämällä Windowsia ja VirtualBoxia).

#### samloader

Ladataksesi alkuperäisen Samsungin laiteohjelmiston voidaan käyttää alustasta riippumatonta samloader skriptiä.

#### Heimdall

Heimdall on järjestelmäriippumaton avoimeen lähdekoodiin perustuva työkalusarja, jota käytetään asentamaan firmwarea (tiedetään myös ROMmina) Samsungin mobiililaitteisiin ja joka myös tiedetään vaihtoehtona Odinille. Se voidaan asentaa heimdall paketilla.

Asennusohjeet löytyy Heimdallin Githubista tai XDA foorumeilta.

#### Odin (Virtualbox)

Huomautus Tämä osio sisältää vain valmistelun, ei asennusohjeita. Hae XDA kehittäjä foorumeilta asennusohjeita erityiselle laitteelle. Esimerkiksi Samsung Galaxy S4.

On mahdollista myös palauttaa laiteohjelmisto (Android) Samsungin laitteille käyttäen Odinia, mutta vain VirtualBox:issa.

Arch Linux (isäntä) valmistelu:

1. Asenna VirtualBox sen lisäosan kanssa ja vieras lisä.
2. Asenna oma suosima, mutta Odinin kanssa yhteensopiva, Windows käyttöjärjestelmä (VirtualBoxin vieraslisien kanssa) virtuaalikiintolevylle VirtualBoxilla.
3. Avaa VirtualBoxin asetukset Windows käyttöjärjestelmästä, navigoi kohtaan USB, sen jälkeen rasti (tai varmista että se on rastittuna) Enable USB 2.0 (EHCI) Controller.
4. VirtualBox joka suorittaa Windows käyttöjärjestelmää, klikkaa menu napista Devices > USB Devices, jonka jälkeen klikkaa Samsung mobiililaitteesta, joka on yhdistetty koneeseesi USB liitännällä.

Windows (vieras) valmistelu:

1. Asenna Samsungin ajurit.
2. Asenna Odin.
3. Lataa tarvittava Samsung firmware (Android) siihen älypuhelin malliin joka on käytössä

Varmista että konfiguraatio toimii:

1. Laita laite Download tilaan ja yhdistä Linux laitteeseen.
2. Virtuaalikoneen työkaluriviltä, valitse Devices > USB > ...Samsung... laite.
3. Avaa Odin. Valkoiseen laatikkoon (suurehko alhaalta vasemmalta) nimellä Message, pitäisi tulla teksti samantapainen kuin tämä:

    <ID:0/003> Added!!

joka tarkoittaa vain sitä että laite näkyy Odinille ja Windows käyttöjärjestelmälle ja on valmis asentelua varten.

## Käytä Androidia Arch Linux pohjalla

On olemassa monia projekteja ja methodeja, jotka tukeat Androidin suorittamista Arch Linux pohjalla:

- Container -pohjautuvat ratkaisut ovat kaikkein suosituimpia. Se on läheisin tapa suorittaa Android ohjelmia ei-Android Linux kernelin kanssa. Ne integroituvat hyvin järjestelmiin ja ne toimivat tehokkaasti. Huomattavampia ovat:
  - Waydroid on haarukoitu Anboxista ja se on saanut paljon suosiota osakseen. Se on tehokkaampi, koska se toimii laitteisto-läheisemmin. Se perustuu uudempaan LineageOs 17.1 (Android 10) ja siinä pystyy myös asentamaan Google Play Storen ja muita Open Gappseja. Yksittäisten ikkunoiden lisäksi sillä voi myös käyttää täyttä Androir käyttöliittymää.

- On olemassa myös useita Chromium lisäosia, joilla voidaan suorittaa android ohjelmia:
  - Arc Welder oli googlen lisäosa ohjelmien suorittamiseen ja testailuun Chrome OS pohjaa varten, mutta se on nykyään jo vanhentunut.
  - ARChon on avoimen lähdekoodin lisäosa Chromiumia varten, jolla voidaan suorittaa android ohjelmia.

- On myös mahdollista käyttää android emulaattoreita. Etuna tässä on se, että arm ohjelmia pystytään suorittamaan x86:ssa. Tämä kumminkin maksaa tehokkuudessa. Esimerkkeinä:
  - Android Studion sisään rakennettu emulaattori, kuten aiemmin mainittu tässä artikkelissa.
  - Genymotion on Android emulaatio/testaus ympäristö.

Vinkki Jos haluat käyttää Android ohjelmia x86 pohjalla ja toisen käyttöjärjestelmän käyttö ei haittaa, voit käyttää Android-x86: suora portti Androidista x86 arkkitehtuuriin.
Categories:

- Android (Suomi)
- Development (Suomi)

Hidden categories:

- Pages or sections flagged with Template:Translateme (Suomi)
- Pages with broken package links

Android (Suomi)
Add topic