Android (Suomi)

From ArchWiki

Tiedostojen siirtäminen

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

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ä suorittaasdkmanager, 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):

Seuraavat paketit koskevat vain vanhoja Android versioita: {,{Pkg|lib32-gcc-libs}} git, gnupg, flex, bison, gperf, sdlAUR, wxgtk2, 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:
    • Anbox on ehkä kuuluisin container-pohjautuva ratkaisu Linuxille. Se on Android 7.1 pohjalla joka taas pohjautuu LineageOs ja on täysin avoimeen lähdekoodiin pohjautuva.
    • 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ä:
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.