Android Central

Är alla Androids skapade lika? Programvara gör stor skillnad

protection click fraud

Vi har pratat om hur hårdvaran inuti din telefon kan göra skillnad när det kommer till användarupplevelsen. Nu är det dags att prata om programvaran.

Programvara är den enskilt viktigaste delen av alla datorer. Oavsett om vi pratar om den lilla datorn du har i fickan eller de rumsstora klustren som gör saker som att hantera rymduppdrag, utan mjukvara skulle alla dessa kretsar och kablar och chips duga ingenting. Det krävs till och med programvara för att slå på din telefon och starta den innan du kan se att den gör något. Oavsett hur dyr eller ny hårdvaran inuti din telefon är, skulle den vara värdelös utan allt arbete som gick åt att programmera den för att göra något.

Vi kommer att fokusera på Android med det här eftersom det är vad vi gör här, men många av idéerna vi kommer att prata om är desamma för alla datorer du kan köpa eller göra själv. De största skillnaderna (och utmaningarna) är att våra telefoner är mobila enheter som inte är särskilt stora, och det betyder att allt görs med ett öga för energieffektivitet. Extrem energieffektivitet. Efter att de rätta delarna har designats och monterats för att försöka ge den bästa användarupplevelsen med en liten strömförsörjning, är det dags för mjukvaruteamen att börja arbeta.

Vad är Android

Det här är Android
Bildkredit: Android Open Source Project.

Vi har nämnt detta förut, men det är värt att ta upp igen – Android är förmodligen inte vad du tror att det är. Ordet används på en hel del olika sätt — Android är ett varumärke, Android är ett operativsystem och Android är källkod. Vad Android är, på grundnivå, är ett gäng kod som kan användas för att köra applikationer. Det kommer med ett grundläggande användargränssnitt till dess kärnfunktioner men det kräver mycket tid och utveckling för att få det att köras på vilken enhet den är avsedd att köras på.

Medan allt du behöver att behöva skapa en startbar mjukvaruavbildning ingår i Android-källkoden, du kan inte skapa en enda bild och installationsprogram som kan användas för all hårdvara. Stöd för den specifika hårdvaran måste deklareras innan du försöker bygga in den till något som faktiskt kommer att fungera. När det är gjort kan du bygga ett körande Linux-operativsystem och installera det till det avsedda målet.

Innan du kan skicka något måste du dock justera och vrida mycket av det - det är vad vi menar när vi säger optimering.

Operativsystemet

AT&T Galaxy S7

Det finns två nivåer av programvara - operativsystemet och dess tillhörande extrafunktioner och applikationer som är installerade för att köras på det. Människorna som tillverkade din telefon behöver inte bara oroa sig för att operativsystemet ska fungera bra, utan måste även bibehålla kompatibilitet med en miljon applikationer. Lägg märke till att vi sa "upprätthåll kompatibilitet", inte optimera någonting för appar från tredje part. Det är en helt annan sak, och Google gör det mesta av arbetet där med Android-applikationsramverket - allt telefontillverkaren behöver göra är att försöka att inte bryta något av det. Och det är mer jobb än du tror att det är, på grund av hur dessa företag förändrar hur Android ser ut och känns.

Varje Android-modell kör olika program.

Ingen Android-modell är den andra lik. Även telefoner från samma tillverkare med samma namn kan köra olika program i olika regioner (eller för olika kunder - ditt telefonbolag), och det gör de. Och det är vettigt. Vi har inte gigabyte lagringsutrymme så stöd för alla olika modeller av Samsung Galaxy S7 — det finns mer än 30 versioner av den ena telefonen — inbyggd i en mjukvara är inte praktiskt. Det är därför du till exempel inte kan ladda ner Verizon-uppdateringen för S7 och använda den på din AT&T-modell. Men förutom de små ändringar som gjorts för olika SKU: er av samma modell, är basprogramvaran som används på alla Galaxy S7 (med Qualcomm CPU) densamma.

För att hålla med vårt Galaxy S7-exempel måste du också komma ihåg att "Touchwiz" inte är ett skal eller en launcher. Det är operativsystemet. Samsung tar den basprogramvaran från Google och ändrar den för att bättre passa dess behov. Hur det ser ut, funktionerna det har och alternativen och inställningarna är alla byggda av Samsung och läggs till i Android på ett sätt som fortfarande tillåter tredjepartsappar att installera och köra. Det finns många delar av Android-koden som Samsung inte ändrar (eller inte kan ändra) eftersom Google kräver att vissa saker sparas för att kunna använda deras butik och applikationer. Det är upp till Google att förbättra och underhålla de delarna, men en stor del av operativsystemet överlåts till Samsung att optimera för den specifika hårdvaran det ska installeras på.

Vad är optimering?

källkod

Mjukvaruoptimering är ett nödvändigt ont. Det är tidskrävande och svårt. Men utan det skulle användarupplevelsen bli lidande. Google optimerar kontinuerligt Android-koden på en hårdvaruoberoende nivå. Tekniker som loop-avrullning, användning av färre funktionsanrop och mer minneseffektiva rutiner är saker som gynnar varje enhet som kör Android. Men Samsung (i vårt exempel) måste vidareutveckla dessa för hårdvaran de använder för att minska den totala instruktionsväglängden (antalet CPU-cykler som krävs går ner med färre instruktioner) och minskar minnesfotavtrycket, samt bygger på saker som schemaläggning och cacheoptimering för deras specifika modell av CPU. Allt samtidigt som man lägger till fler funktioner och funktioner för användaren och bibehåller kompatibiliteten med Google Play. I allmänhet går processen ungefär så här:

  • Bestäm vilka funktioner dina kunder vill ha. Släng sedan 80 % av dem och bestäm vilka funktioner som är genomförbara.
  • Definiera den specifika hårdvara som kommer att användas.
  • Bygg en startbar version av operativsystemet med alla nödvändiga funktioner som fungerar.
  • Hitta flaskhalsarna, försök åtgärda dem, skölj och upprepa.

Att hitta dessa flaskhalsar är svårt. Att fixa dem är ännu svårare. Och det finns flera sätt att tackla det hela. Ett sätt är att inte lägga till funktioner i operativsystemet som skapar overhead, vilket ger dig färre saker som kan gå fel. Det var där 2015 års Moto G lyste. Det var en väldigt enkel telefon, med väldigt grundläggande programvara. Efter att ett talangfullt team optimerat programvaran som levererades på telefonen var det en av årets mest flytande Android-upplevelser – tills du lade till en handfull appar från Google Play i mixen. Sedan var det uppenbart att hårdvaran inuti inte var lika kapabel att göra många saker samtidigt som dyrare telefoner. Hårdvaran som användes var billig så att telefonen kunde vara billig, och mjukvaruoptimeringen på bara operativsystemet var utmärkt.

Ett andra sätt är att fortsätta att optimera din plattform utan att ta bort några viktiga funktioner och låta bättre hårdvara hjälpa till att minimera effekten. Galaxy S7 är en produkt av allt arbete som mjukvaruutvecklingsteamet på Samsung har gjort sedan original Galaxy S introducerades, som körs ovanpå hårdvara som är kraftfull nog att leverera den på ett smidigt och vänligt sätt paket. Resultatet är en telefon som är allmänt hyllad av både branschen och användare. Felsteg med minneshantering och tröghet vi såg upp och inklusive Galaxy S6 är nästan borta, och oavsett om du älskar eller hatar slutprodukten du kan inte säga att det inte är en av de bästa Android-telefonerna du kan köpa idag när det kommer till prestanda.

Minneshantering

RAM-hantering

Vi kan inte gå bort från detta ämne utan att ta upp minneshantering. Det är en av de termer som kastas runt eftersom vissa människor ser något slags problem när de gör vissa saker, och tåget börjar rulla. Det kan (och har) dock varit ett verkligt problem.

Operativsystemet bestämmer när det ska dödas (som i nära och inte köras i bakgrunden) applikationer och processer som lagras i RAM-minnet. Att skriva till och läsa från RAM går snabbt — mycket snabbare än att skriva och läsa från lagring. Men det är begränsat. Även en telefon med 6 GB RAM måste fortfarande ha parametrar inställda för bästa prestanda. Och inte allt RAM-minne som är installerat inuti din telefon är tillgängligt för operativsystemet att använda. Delar är reserverade för kärnan att köra i, GPU: n att använda och mobilradion. Vid uppstart är det vanligt att se minst 512 MB (eller mer) RAM-minne som används och inte är tillgängligt. Det är bra – dessa funktioner behöver "omedelbar" åtkomst till processorn.

Det som är kvar hanteras på ett stegvis sätt. Vissa appar och processer har högre prioritet än andra, och de kommer att tilldelas en högre nivå än andra, ibland valfria, saker som körs i bakgrunden. När den totala mängden ledigt RAM-minne krymper till en fördefinierad nivå, dödas processer enligt prioritet. Målet är att hålla så många saker levande i bakgrunden som möjligt samtidigt som det finns tillräckligt med utrymme för att starta nya saker. Medan de nya sakerna börjar spolas RAM tills de har tillräckligt att ladda och en fri buffert upprätthålls. Det är därför du hör folk säga "gratis RAM är bortkastat RAM" när man talar om Linux - Android körs ovanpå Linux-kärnan.

Att justera RAM-hantering är en trial and error process. Sedan mer trial and error. Det är svårt.

Alla dessa parametrar (utanför det reserverade området för kärnan) är justerbara av personerna som byggde operativsystemet. De kan bestämma hur mycket RAM som behöver förbli ledigt och hur mycket RAM som kan användas av varje nivå av processer. De kan också skriva sin programvara så att delar tilldelas en specifik nivå i trädet. Ett praktiskt knep är att hålla startprogrammet - det du ser på hemskärmen (-erna) och programlådan - i RAM-minne hela tiden. Detta innebär att användargränssnittet för de saker du sannolikt kommer att spendera mest tid på att interagera med alltid lagras i RAM och kommer att vara mer flytande eftersom ingen tid går åt till att läsa från lagring och skriva till RAM när du sveper och trycker.

Problem kan uppstå när för mycket eller för lite RAM-minne hålls ledigt eller för många saker "markeras" som väsentliga och hålls kvar i RAM-minnet. Det är därför du till exempel kan börja skriva något i ett formulär på en webbsida, byta till en annan app och komma tillbaka för att se att allt du skrivit är borta eftersom sidan måste uppdateras. Systemet kommer fortfarande att försöka behålla de saker du använder mest i RAM, men det kan inte göra det.

Allt detta går att fixa, förutsatt att det finns tillräckligt med RAM installerat. Det är en annan del av optimeringsprocessen, och svår att få till rätt.

Alla Androider är inte skapade lika

Och vi borde inte vilja att de ska vara det. Mjukvaran är skräddarsydd för den specifika hårdvara som används, och trial and error och Red Bull är en del av optimeringsprocessen. Detta är en del av det som gör varje Android-telefon unik och ger alla ett val.

instagram story viewer