Be noen utvikler å nevne den største utfordringen med å utvikle for Android, og sjansen er at de skal si fragmentering. Å lage en app som er fleksibel nok til å kjøre over det store spekteret av enheter som faller under "Android" -banneret, er en stor hodepine som de fleste Android-utviklere har opplevd på et tidspunkt.
Men å utvikle seg for en fragmentert plattform har sine sider! Siden det er så mange forskjellige Android-enheter der ute, har appen potensial til å koble til en enorm publikum - og publikum har nettopp blitt mye større, siden Android-apper nå kan kjøre på Chrome OS.
I denne artikkelen vil jeg vise deg hvordan du får ditt nyeste Android-appprosjekt oppe i Chrome OS. Og siden du vil gi best mulig brukeropplevelse på denne nye plattformen, vil jeg også se på hvordan du optimaliserer Android-appen din, slik at du virkelig kan wow din nye Chromebook-målgruppe.
Som en Android-utvikler bør det alltid være høyest prioritet, å få appen din så mange som mulig?
Ikke nødvendigvis.
Bare fordi Android-apper er nå kompatible med Chrome OS, betyr ikke at alle Android-apper automatisk kommer til å passe godt til denne nye plattformen.
Tenk deg at du ser en app du liker utseendet på, og Google Play viser at denne appen er kompatibel med smarttelefonen din og din Chromebook. Du bestemmer deg for å laste ned appen til den bærbare datamaskinen og umiddelbart innse at de fleste appens funksjoner er avhengige av mobilspesifikk maskinvare, for eksempel muligheten til å ringe og sende SMS-meldinger.
Sluttresultatet? Denne appen er ganske ubrukelig på Chrome OS. Du avinstallerer det umiddelbart, føler som utvikleren har helt kastet bort tiden din, og la dem få en negativ gjennomgang på Google Play i gjengjeldelse.
En app som ikke støtter Chrome OS, er i verste fall mildt irriterende for Chromebook-brukere, men en app som gir en forferdelig brukeropplevelse på Chrome OS er langt verre.
Før du dykker inn og begynner å forberede appen din til Chrome OS-debuten, ta et øyeblikk å tenke på om appen din faktisk har noe å tilby Chromebook-brukere.
Din typiske Chromebook har svært forskjellig maskinvare fra den typiske Android-smarttelefonen eller nettbrettet. Maskinvare vil være et gjentakende tema gjennom hele denne artikkelen, men for øyeblikket bare kaster øyet over programmets funksjonsliste - gjør noen av disse funksjonene deg som uforenlig med din typiske bærbare?
For eksempel er det usannsynlig at pedometerappen du har jobbet med, kommer til å trives på Chrome OS, da bærbare datamaskiner vanligvis ikke har nødvendig maskinvare for å måle fotspor (og når var siste gang du så at noen tok Chromebooken sin på deres morgenjog, uansett?).
Hvis appen din inneholder noen inkompatible funksjoner, er det noen måte du kan endre disse funksjonene for å gjøre dem mer Chromebook-vennlige? Hvis svaret er "nei", må du deaktivere disse funksjonene når appen din kjører på Chrome OS, noe som fører til et annet spørsmål: kan appen din fortsatt gi en god brukeropplevelse, selv uten disse funksjonene? Hvis det virker lite sannsynlig, kan det hende at appen din ikke er riktig for Chromebooks.
Forhåpentligvis, selv om du trenger å deaktivere eller endre noen funksjoner, har appen din fortsatt noe å tilby Chromebook-brukere - og på dette tidspunktet er du klar for å begynne å oppdatere appen din for å kjøre på Chrome OS!
Hvis appen krever maskinvare som ikke støttes av Chrome OS, vil Chromebook-brukere ikke kunne installere appen din. Og det er spesielt en maskinvare som er til stede på de fleste smart smartphones og tabletter, men ikke tilgjengelig på alle Chromebooks: en berøringsskjerm.
For å gjøre saken verre, forutsatt at Google Play antar at din Android-app krever en berøringsskjerm, med mindre du angir noe, vil det forhindre at appen din blir installert på alle enheter som ikke inkluderer berøringsskjermfunksjonalitet. Hvis du skal gjøre appen tilgjengelig for så mange Chromebook-brukere som mulig, må du spørre deg selv: Bruker min Android-app egentlig krever en berøringsskjerm?
For de fleste Android-apper er svaret nei. De fleste Android-apper kan fungere perfekt, uten berøringsskjerm, spesielt på Chromebooks der brukeren har et tastatur, styreflate i full størrelse og muligens også en ekstern mus til disposisjon. Noen Chromebooks støtter til og med "falsk berøringsskjerm", som er et ekstra inngangssystem som lar deg bruke musen og tastaturet til å etterligne grunnleggende berøringshendelser.
Så med mindre du har en veldig god grunn til ikke å, bør du angi at appen din ikke krever en berøringsskjerm for å fungere. Dette innebærer å åpne prosjektets manifest, deklarere berøringsskjerm som en funksjon som programmet bruker (bruker-funksjon android: name = "android.hardware.touchscreen"
) og deretter bruke android: attributt
å angi om søknaden din:
Krever denne funksjonen for å fungere ("ekte"
).
Foretrekker denne funksjonen å være tilgjengelig, men kan fungere uten den ("falsk"
).
I dette tilfellet ønsker vi å erklære at en berøringsskjerm er foretrukket, men ikke nødvendig:
Google Play bruker deretter prosjektet ditt
og android: påbudt
erklæringer for å finne ut om appen din er kompatibel med en brukers enhet, og bare tillater brukere å laste ned appen din hvis enheten oppfyller alle kravene.
Når du erklærer at appen din ikke krever en berøringsskjerm, blir appen din umiddelbart tilgjengelig for en større prosentandel av Chromebook-brukere.
Skyll og gjenta for hver funksjon som søknaden din bruker. Dette er en god praksis for å utvikle noen Android-app, men det er også et viktig skritt i å optimalisere appen din til Chromebook-brukere.
For å hjelpe deg med å få appen din klar til Chrome OS, har Android-teamet laget en nyttig liste over alle maskinvaredeklarasjonene som vanligvis ikke er kompatible med Chromebook. Hvis det er noen funksjoner på denne listen som appen din bruker, men ikke krever, så er det spesielt viktig at du erklærer denne funksjonen i manifestet og merker det som android: påbudt = "false"
.
Men sett ikke automatisk alle funksjoner til "falsk"
fordi du vil at appen din skal være tilgjengelig for så mange Chromebooks som mulig! Vurder hvilken brukeropplevelse appen din vil levere uten tilgang til hvert maskinvare. Selv om det er fristende å prøve å få din app foran så mange som mulig, er det alltid bedre å gi en god brukeropplevelse til et mindre publikum enn en gjennomsnittlig eller dårlig brukeropplevelse til et stort publikum.
På dette tidspunktet bør du også se gjennom eventuelle tillatelser som appen din ber om, da noen tillatelser gir implisitte maskinvareforespørsler. Hvis for eksempel appen din ber om kameraets tillatelse, antar Google Play at appen krever kamerahardware, og vil forhindre at appen din blir installert på enheter som ikke oppfyller dette kravet. Hvis appen din ikke egentlig krever et kamera, er dette en god måte å gå glipp av potensielle brukere! For å unngå at dette skjer, må du deklarere denne funksjonen i appens manifest og merke den som "falsk"
.
Hvis du holder deg til den beste praksisen med å erklære hver funksjon som appen din bruker, så i teorien bør du ikke bekymre deg for implisitte funksjoner, men det er alltid verdt å dobbeltsjekke prosjektet ditt, bare i tilfelle.
Spesielt gir følgende tillatelser underforståtte funksjonsforespørsler som kan forhindre at appen din blir installert på Chrome OS:
RING TELEFON
CALL_PRIVILEDGED
KAMERA
MODIFY_PHONE_STATE
PROCESS_OUTGOING_CALLS
READ_SMSREAD_SMS
RECEIVE_MMS
RECEIVE_SMS
RECEIVE_WAP_PUSH
SEND TEKSTMELDING
WRITE_APN_SETTINGS
WRITE_SMS
Hvis appen din ber om noen av disse tillatelsene, må du dobbeltsjekke at du har erklært den relaterte maskinvaren i prosjektets manifest, og merk hver deklarasjon som "falsk"
hvis appen din ikke egentlig krever denne maskinvaren.
Mens du jobber med funksjonsforespørslene, kan det bidra til å få en forhåndsvisning av hvordan Google Play vil filtrere søknaden din basert på gjeldende maskinvaredeklarasjoner og tillatelsesforespørsler. Android SDK inneholder en "AAPT
'verktøy som lar deg gjøre nettopp det - du kan kjøre dette verktøyet, kontroller hvordan utdataene sammenlignes med funksjonene dine app faktisk krever, og foreta justeringer etter behov.
For mer informasjon om bruk av aapt, sjekk ut de offisielle Android-dokumentene.
De fleste Android-smarttelefoner og -tabletter har forskjellige innebygde sensorer som kan gi din applikasjon en rekke data, inkludert enhetens nåværende orientering, posisjon og noen ganger til og med informasjon om miljøforhold.
Mange av sensorene du vanligvis ville forvente å finne på en smarttelefon eller nettbrett, er ikke tilgjengelige på Chrome OS, så hvis appen din bruker data fra noen sensor, bør du planlegge hvordan appen din vil reagere hvis denne sensoren ikke er tilgjengelig.
Hvis hele appen din avhenger av å ha tilgang til en bestemt sensor, bør du forhindre at appen din blir installert på en hvilken som helst enhet som ikke inneholder denne sensoren. For eksempel, hvis appen din ikke kan fungere uten data fra en accelerometer sensor, bør du legge til følgende i prosjektets manifest:
Det andre scenariet er at appen din ikke gjør det krever en bestemt sensor, men har funksjoner som vil bruke data fra en sensor hvis den er tilgjengelig. Hvis dette høres ut som din app, bør du deklarere denne sensoren i manifestet ditt, men merk det som android: påbudt = "false"
. Appen din kan deretter sjekke om denne sensoren er tilgjengelig i løpet av en stund, og deaktivere hvilken funksjonalitet som er avhengig av en sensor som ikke er tilstede på brukerens enhet.
For å finne ut hvilke sensorer som er tilgjengelige, må du opprette en forekomst av SensorManager
klasse, og ring deretter getSystemService
metode og passere i SENSOR_SERVICE
argument:
privat SensorManager mSensorManager; ... mSensorManager = (SensorManager) getSystemService (Context.SENSOR_SERVICE);
Deretter må du få en liste over alle sensorene som er tilgjengelige, ved å ringe getSensorListmethod
og bruke Sensor.TYPE_ALL
konstant:
ListedeviceSensors = mSensorManager.getSensorList (Sensor.TYPE_ALL);
Bevæpnet med denne informasjonen, kan du deaktivere alle programfunksjoner som er avhengig av data fra sensorer som ikke er tilstede på den gjeldende enheten.
På Chrome OS vises Android-apper i separate vinduer som brukeren kan bevege seg rundt, og sykle mellom følgende tre støttede størrelser:
Portrett. En lignende størrelse som skjermen til en Nexus 5.
Landskap. En lignende skjerm til Nexus 7.
maksimert. Appen bruker alt tilgjengelig skjermrom.
Når det er på tide å teste appen din på Chrome OS, vil du sørge for at appen din ser bra ut og fungerer riktig i alle tre støttede størrelser, for eksempel ved å sjekke at teksten i appen din er lett å lese og alle brukergrensesnittelementer er nås uavhengig av om brukeren plasserer appen din i stående, liggende eller maksimert modus.
Selv om Chrome OS-brukere kan se flere Android-apper om gangen, kan bare en app ha fokus, så for å beskytte brukerens batteri, bør appen pause gjengivelsen når den mister fokus. Det eneste unntaket er når appen din har innhold som må oppdateres hele tiden. Hvis du for eksempel utvikler en app som spiller musikk eller video, vil du sannsynligvis ikke ønske dette Aktivitet
å stoppe hver gang appen din mister fokus.
Hvis aktiviteten din trenger å oppdatere hele tiden på skjermen, bør du sette den på pause onStop
og fortsett avspillingen i onStart
, heller enn å bruke onPause
handlers.
Chromebooks er utformet slik at brukerne enkelt kan bytte mellom enheter - de trenger bare å logge på Google-kontoen, og alle deres apper og innhold er bare der, uansett om de noen gang har brukt denne Chromebook-enheten før.
Siden dette er atferden Chromebook-brukere har forventet, er dette også hvordan appen din skal oppføre seg når den kjører på Chrome OS. Dette betyr at du må sikkerhetskopiere appens data online i stedet for bare å lagre det lokalt. Den enkleste måten er å bruke Android Auto Backup-funksjonen, som lar deg sikkerhetskopiere appens data til brukerens Google Drive-konto.
Hvis appen din er rettet mot Android 6.0 eller nyere, aktiveres automatisk sikkerhetskopiering som standard. Men det er det alltid en god ide om å være eksplisitt om funksjonene din app bruker (det er ingen garanti for at automatisk sikkerhetskopiering vil bli aktivert som standard på fremtidige versjoner av Android, tross alt), så åpne prosjektets manifest og legg til følgende:
android: allowBackup = "true"
For mer detaljert informasjon om implementering av sikkerhetskopiering og gjenoppretting, sjekk ut de offisielle Android-dokumentene.
Selv etter å ha fulgt alle disse beste rutene, kan du ikke være sikker på at appen din vil gi en god brukeropplevelse på Chrome OS-med mindre du tester appen din på en Chromebook i virkeligheten.
På tidspunktet for skriving anbefaler Google at du tester dine Chromebook-klare programmer på følgende måte:
En ARM-basert Chromebook.
En Intel x86-basert Chromebook.
En konvertibel Chromebook (en som kan forme skift mellom en bærbar PC og en nettbrett).
En Chromebook med berøringsskjermstøtte.
En Chromebook med "falsk berøring" -støtte.
Men la oss være realistiske: Det er usannsynlig at du bare kommer til å ha tilgang til flere Chromebooks. Når du bestemmer hvilken Chromebook (e) du burde sikte på for å teste appen din på tvers, kan det hjelpe å se på Googles liste over alle Android-kompatible Chromebooks som er på markedet for øyeblikket..
Før du kan installere Android-appen din på Chrome OS, må du sette Chromebooken din i utviklingsmodus og aktivere installasjoner fra ukjente kilder.
Den nøyaktige prosessen for å plassere Chromebooken din i utviklingsmodus varierer mellom enheter, så hvis disse instruksjonene ikke virker for din spesielle modell, bør du søke i Chromedokumenter for enhetsspesifikke instruksjoner.
For å gå inn i utviklingsmodus:
Sørg for at Chromebook er slått av.
Hold nede Esc og Forfriske taster mens du trykker på enheten din Makt knapp. Chromebooken din skal da starte opp på skjermbildet Gjenoppretting.
trykk Kontroll-D nøkler på Chromebook-tastaturet.
Når du blir bedt om det, trykker du på Tast inn nøkkel.
trykk Kontroll-D tastene igjen.
Chromebooken din starter nå i utviklingsmodus.
Det neste trinnet er å aktivere ukjente kilder, ved å navigere til Chrome-innstillinger> Appinnstillinger> Sikkerhet og velg Ukjente kilder.
Når du har fullført disse trinnene, er du klar til å installere APK (Android Application Package) du vil teste. Hvis du raskt skal overføre APK til Chromebook, kan du enten:
Legg til din APK i Google Disk.
Kopier APK-filen til Chromebook-en din Nedlastinger mappe ved hjelp av en ekstern disk eller SD-kort.
Send APK til deg selv via e-post.
Deretter må du laste ned APK til Chromebooken din og åpne den ved hjelp av Android File Manager-appen (som du finner ved å navigere til Chrome-innstillinger> Appinnstillinger> Enhet og USB> Utforsk).
Alternativt kan du skyve APK fra utviklingsmaskinen din til Chromebook med kommandoer for Android Debug Bridge (ADB).
Å få ADB til å spille pent med Chrome OS krever noe oppsett, men når du har opprettet tilkoblingen, kan du bruke ADB til å utstede en rekke kommandoer som kan være ganske nyttige for testing av Android-appen din. (For mer informasjon om ADB-kommandoer, sjekk ut den offisielle Android-docen).
Sette opp ADB er en multi-trinns prosess, så la oss takle det ett trinn av gangen:
Start Chrome OS Terminal ved å trykke på Ctrl-Alt-T på tastaturet, og skriv deretter inn shell
for å få bash kommandoen skallet:
crosh> shell chronos @ localhost / $
Skriv inn passordet ditt, og utsted følgende kommandoer via Terminal-vinduet:
chronos @ localhost / $ sudo / usr / libexec / debugd / helpers / dev_features_rootfs_verification
Les ansvarsfraskrivelsen. Hvis du er glad for å fortsette, skriv inn neste kommando:
chronos @ localhost / $ sudo reboot
På dette tidspunktet starter Chromebooken på nytt. Når Chromebooken din er ferdig oppstart, start på nytt Terminal og type:
chronos @ localhost / $ sudo / usr / libexec / debugd / helpers / dev_features_ssh
Aktivere ADB-feilsøking krever din Chromebooks IP-adresse, så:
Klikk på Network ikonet nederst til høyre på Chromebooks startskjerm.
Velg nettverket din Chromebook er koblet til.
Klikk på Jeg ikonet nederst til høyre i menyen.
På dette tidspunktet vises en boks som inneholder din Chromebooks IP-adresse - noter det, slik du trenger det senere.
Gjør følgende på din Chromebook:
Klikk på klokkeikonet nederst til høyre på skjermen.
Å velge innstillinger.
I Android Apps delen, klikk på Administrer Android-appene dine i Innstillinger link.
Klikk Om enhet.
Angi utviklermodus ved å klikke på Bygg nummer syv ganger.
Klikk pilen øverst til venstre i vinduet. Dette tar deg tilbake til hovedmenyen innstillinger skjerm.
Klikk Utviklermuligheter.
Aktiver ADB feilsøking og klikk deretter OK.
Neste, fullfør følgende trinn på utviklingsmaskinen din:
Åpne et Terminal-vindu og endre katalogen (cd
) så det peker på plasseringen av Android SDKs "adb" -program.
cd / Users / jessicathornsby / Bibliotek / Android / sdk / platform-verktøy
Fortell utviklingsmaskinen din for å lytte etter en TCP / IP-tilkobling på port 22, ved å utstede følgende adb-kommando:
./ adb tcpip 22
Utgitt Adb-tilkobling
kommando etterfulgt av IP-adressen til Chromebooken din, for eksempel:
./ adb koble 100.100.0.10
På Chromebooken din, klikk Tillate når du blir bedt om det.
Det eneste du må gjøre er å skyve APK fra utviklingsmaskinen din til Chromebook.
På utviklingsmaskinen din skal du utstede adb installasjon
kommando, etterfulgt av banen og filnavnet til APK du vil installere, for eksempel:
./ adb installere Brukere / jessicathornsby / Dokumenter / app-name.apk
Og det er det! Din Android-applikasjon er nå installert på Chromebook, klar for at du skal teste!
I denne artikkelen så vi på hvordan du oppdaterer appen din for å kjøre på Chromebooks, og når den er i stand til å kjøre på denne nye plattformen, hvordan optimalisere den for å gi en bedre brukeropplevelse.
Å kunne få tilgang til favorittappene sine på smarttelefonene, nettbrettene og nå, deres bærbare datamaskiner er gode nyheter for Chromebook-brukere, og for deg som utvikler betyr det et større potensialmål for Android-appene dine, og hvem vil ikke ha det?