Vraag een ontwikkelaar om de grootste uitdaging van ontwikkelen voor Android te noemen, en de kans is groot dat ze fragmentatie gaan zeggen. Het creëren van een app die flexibel genoeg is om door het enorme scala aan apparaten te lopen die onder de 'Android'-banner vallen, is een enorme hoofdpijn die de meeste Android-ontwikkelaars ooit hebben meegemaakt.
Maar ontwikkelen voor een gefragmenteerd platform heeft zijn voordelen! Omdat er zoveel verschillende Android-apparaten zijn, kan uw app verbinding maken met een reusachtig publiek en dat publiek is net veel groter geworden, aangezien Android-apps nu kunnen worden uitgevoerd op Chrome OS.
In dit artikel laat ik u zien hoe u uw nieuwste Android-app-project kunt gebruiken in Chrome OS. En omdat u de best mogelijke gebruikerservaring op dit nieuwe platform wilt bieden, zal ik ook kijken naar hoe u uw Android-app kunt optimaliseren, zodat u uw nieuwe Chromebook-publiek echt kunt wowen.
Als Android-ontwikkelaar moet je app altijd voor zoveel mogelijk mensen de prioriteit krijgen, toch??
Niet noodzakelijk.
Alleen omdat Android-apps nu compatibel zijn met Chrome OS, betekent dit nog niet dat alle Android-apps automatisch geschikt zijn voor dit nieuwe platform.
Stel je voor dat je een app ziet die je leuk vindt, en Google Play laat zien dat deze app compatibel is met je smartphone en uw Chromebook. U besluit om de app naar uw laptop te downloaden en beseft meteen dat de meeste functies van de app afhankelijk zijn van mobielspecifieke hardware, zoals de mogelijkheid om te bellen en sms-berichten te verzenden.
Het eindresultaat? Deze app is vrijwel onbruikbaar in Chrome OS. U verwijdert het onmiddellijk, het gevoel dat de ontwikkelaar dat heeft helemaal verspilde je tijd, en laat ze een negatieve beoordeling achter op Google Play in retribution.
Een app die Chrome OS niet ondersteunt, is in het slechtste geval licht irritant voor Chromebook-gebruikers, maar een app die een vreselijke gebruikerservaring biedt in Chrome OS is ver erger.
Neem even de tijd om na te denken of uw app daadwerkelijk iets te bieden heeft aan Chromebook-gebruikers voordat u erin duikt en begint met het voorbereiden van uw app voor het Chrome OS-debuut..
Uw standaard Chromebook heeft zeer verschillende hardware van uw normale Android-smartphone of -tablet. Hardware zal een terugkerend thema zijn in dit artikel, maar kijk nu alleen maar naar de lijst met functies van uw toepassing - doe een van deze functies op u als incompatibel met uw standaardlaptop?
Het is bijvoorbeeld onwaarschijnlijk dat de stappenteller-app waar je aan hebt gewerkt ooit zal floreren in Chrome OS, omdat laptops meestal niet de hardware hebben die nodig is om voetstappen te meten (en wanneer was de laatste keer dat je iemand hun Chromebook zag nemen op hun ochtend joggen, eigenlijk?).
Als uw app een aantal incompatibele functies bevat, kunt u deze functies op elk gewenst moment aanpassen om ze Chromebook-vriendelijker te maken? Als het antwoord 'nee' is, moet u deze functie (s) uitschakelen wanneer uw app wordt uitgevoerd in Chrome OS, wat leidt tot een andere vraag: kan uw app nog steeds een goede gebruikerservaring bieden, zelfs zonder deze functies? Als het onwaarschijnlijk lijkt, is uw app mogelijk niet geschikt voor Chromebooks.
Hopelijk zal uw app nog steeds iets te bieden hebben aan Chromebook-gebruikers, zelfs als u sommige functies moet uitschakelen of wijzigen. Op dit moment bent u klaar om aan de slag te gaan met het bijwerken van uw app voor Chrome OS!
Als uw app hardware vereist die niet wordt ondersteund door Chrome OS, kunnen Chromebook-gebruikers uw app niet installeren. En er is met name één stuk hardware dat aanwezig is op de meeste (zo niet alle) smartphones en tablets, maar niet op alle Chromebooks: een touchscreen.
Om het nog erger te maken, zal Google Play, tenzij u anders aangeeft, ervan uitgaan dat uw Android-app een aanraakscherm vereist, en als gevolg daarvan wordt voorkomen dat uw app wordt geïnstalleerd op alle apparaten die geen touchscreenfunctionaliteit bevatten. Als u uw app beschikbaar wilt maken voor zoveel mogelijk Chromebook-gebruikers, moet u zich afvragen: doet mijn Android-app werkelijk een touchscreen nodig hebben?
Voor de meeste Android-apps is het antwoord nee. De meeste Android-apps kunnen prima functioneren zonder een aanraakscherm, vooral op Chromebooks waar de gebruiker een volledig toetsenbord, trackpad en mogelijk ook een externe muis tot zijn beschikking heeft. Sommige Chromebooks ondersteunen zelfs 'nep-touchscreen', een extra invoersysteem waarmee u de muis en het toetsenbord kunt gebruiken om elementaire aanraakgebeurtenissen te emuleren.
Dus tenzij u een goede reden hebt om dat niet te doen, moet u aangeven dat uw app geen touchscreen nodig heeft om te kunnen functioneren. Dit houdt in dat u het Manifest van uw project opent en touchscreen verklaart als een functie die door uw toepassing wordt gebruikt (uses-feature android: name = "android.hardware.touchscreen"
) en gebruik vervolgens de android: attribuut
om aan te geven of uw aanvraag:
Vereist deze functie om te kunnen functioneren ("True"
).
Geeft er de voorkeur aan dat deze functie beschikbaar is, maar zonder kan functioneren ("False"
).
In dit geval willen we verklaren dat een touchscreen de voorkeur heeft maar niet vereist is:
Google Play gebruikt vervolgens uw project
en android: verplicht
Verklaringen om te bepalen of uw app compatibel is met het apparaat van een gebruiker en gebruikers alleen toestaan uw app te downloaden als hun apparaat aan alle vereisten voldoet.
Nadat u heeft verklaard dat uw app geen touchscreen vereist, wordt uw app onmiddellijk beschikbaar voor een groter percentage van de Chromebook-gebruikers.
Nu afspoelen en herhalen voor elke functie die uw toepassing gebruikt. Dit is een beste methode om te ontwikkelen ieder Android-app, maar het is ook een belangrijke stap in het optimaliseren van uw app voor Chromebook-gebruikers.
Om u te helpen uw app klaar te maken voor Chrome OS, heeft het Android-team een handige lijst met alle hardwareaangiften gemaakt die doorgaans niet compatibel zijn met Chromebooks. Als er functies in deze lijst zijn die uw app gebruikt maar niet vereisen, dan is het bijzonder belangrijk dat u deze functie in uw manifest verklaart en markeert als android: required = "false"
.
Stel echter niet automatisch elke functie in "False"
omdat u wilt dat uw app beschikbaar is voor zoveel mogelijk Chromebooks! Overweeg welke gebruikerservaring uw app zal bieden zonder toegang tot elk stuk hardware. Hoewel het verleidelijk is om te proberen uw app voor zoveel mogelijk mensen te krijgen, is dat wel zo altijd beter om een goede gebruikerservaring te bieden aan een kleiner publiek dan een gemiddelde of slechte gebruikerservaring voor een groot publiek.
Op dit moment moet u ook de rechten bekijken die uw app vraagt, omdat sommige machtigingen impliciete hardwareaanvragen doen. Als uw app bijvoorbeeld de toestemming voor de camera aanvraagt, gaat Google Play ervan uit dat uw app camerahardware vereist en wordt voorkomen dat uw app wordt geïnstalleerd op apparaten die niet aan deze vereiste voldoen. Als uw app eigenlijk geen camera nodig heeft, dan is dit een goede manier om potentiële gebruikers te missen! Om dit te voorkomen, moet u deze functie in het manifest van uw app declareren en markeren als "False"
.
Als je je houdt aan de beste praktijk om elke functie die je app gebruikt te declareren, hoef je je in theorie geen zorgen te maken over impliciete functieverzoeken, maar het is altijd de moeite waard om je project dubbel te controleren, voor het geval dat.
In het bijzonder maken de volgende machtigingen impliciete functieverzoeken die kunnen voorkomen dat uw app wordt geïnstalleerd in Chrome OS:
CALL_PHONE
CALL_PRIVILEDGED
CAMERA
MODIFY_PHONE_STATE
PROCESS_OUTGOING_CALLS
READ_SMSREAD_SMS
RECEIVE_MMS
RECEIVE_SMS
RECEIVE_WAP_PUSH
VERSTUUR SMS
WRITE_APN_SETTINGS
WRITE_SMS
Als uw app een van deze machtigingen aanvraagt, controleert u vervolgens of u de gerelateerde hardware hebt gedeclareerd in het manifest van uw project en markeert u elke aangifte als "False"
als uw app deze hardware niet echt nodig heeft.
Terwijl u bezig bent met uw functieverzoeken, kan het helpen om een voorbeeld te zien van hoe Google Play uw toepassing filtert op basis van de huidige hardwareaangiften en toestemmingsverzoeken. De Android SDK bevat een 'aapt
'tool waarmee u precies dat kunt doen-u kunt dit hulpprogramma uitvoeren, controleren hoe de uitvoer ervan overeenkomt met de functies die uw app daadwerkelijk nodig heeft en aanpassingen aanbrengen zoals vereist.
Raadpleeg de officiële Android-documenten voor meer informatie over het gebruik van aapt.
De meeste Android-smartphones en -tablets hebben verschillende ingebouwde sensoren die uw toepassing kunnen voorzien van een reeks gegevens, waaronder de huidige oriëntatie, positie en soms zelfs informatie over de omgevingsomstandigheden van het apparaat..
Veel van de sensoren die u normaal gesproken op een smartphone of tablet zou verwachten, zijn niet beschikbaar in Chrome OS, dus als uw app gegevens gebruikt van ieder sensor dan moet u plannen hoe uw app zal reageren als deze sensor niet beschikbaar is.
Als uw hele app afhankelijk is van toegang tot een bepaalde sensor, moet u voorkomen dat uw app wordt geïnstalleerd op elk apparaat dat deze sensor niet bevat. Als uw app bijvoorbeeld niet kan functioneren zonder gegevens van een accelerometersensor, moet u het volgende toevoegen aan het manifest van uw project:
Het andere scenario is dat uw app dat niet doet vereisen een bepaalde sensor, maar heeft functies die gegevens van een sensor gebruiken als deze beschikbaar is. Als dit klinkt als je app, moet je deze sensor in je manifest vermelden maar markeren als android: required = "false"
. Uw app kan vervolgens controleren of deze sensor tijdens runtime beschikbaar is en alle functies uitschakelen die afhankelijk zijn van een sensor die niet op het apparaat van de gebruiker aanwezig is.
Als u wilt bepalen welke sensoren beschikbaar zijn, moet u een exemplaar van de SensorManager
klasse, bel dan de getSystemService
methode en doorgeven in de SENSOR_SERVICE
argument:
private SensorManager mSensorManager; ... mSensorManager = (SensorManager) getSystemService (Context.SENSOR_SERVICE);
Vervolgens moet u een lijst krijgen van alle sensoren die momenteel beschikbaar zijn, door de getSensorListmethod
en gebruik de Sensor.TYPE_ALL
constante:
LijstdeviceSensors = mSensorManager.getSensorList (Sensor.TYPE_ALL);
Gewapend met deze informatie kunt u vervolgens alle toepassingsfuncties uitschakelen die afhankelijk zijn van gegevens van sensoren die niet aanwezig zijn op het huidige apparaat.
In Chrome OS worden Android-apps weergegeven in afzonderlijke vensters die de gebruiker kan verplaatsen en kunnen ze door de volgende drie ondersteunde formaten bladeren:
Portret. Een vergelijkbare grootte als het scherm van een Nexus 5.
Landschap. Een vergelijkbaar scherm als de Nexus 7.
gemaximaliseerd. De app gebruikt alle beschikbare schermruimte.
Wanneer het tijd is om uw app te testen in Chrome OS, moet u ervoor zorgen dat uw app er goed uitziet en goed functioneert in alle drie de ondersteunde formaten, bijvoorbeeld door te controleren of alle tekst van uw app gemakkelijk te lezen is en alle UI-elementen bereikbaar blijven ongeacht of de gebruiker je app in staande, liggende of gemaximaliseerde modus plaatst.
Hoewel Chrome OS-gebruikers meerdere Android-apps tegelijkertijd kunnen bekijken, kan slechts één app focus hebben, dus in het belang van het sparen van de batterij van de gebruiker, moet uw app het renderen onderbreken wanneer de focus wordt verloren. De enige uitzondering is wanneer uw app inhoud heeft die voortdurend moet worden bijgewerkt. Als u bijvoorbeeld een app ontwikkelt die muziek of video afspeelt, wilt u dit waarschijnlijk niet Activiteit
om te stoppen elke keer dat uw app de focus verliest.
Als uw activiteit de hele tijd dat deze op het scherm wordt bijgewerkt moet updaten, moet u deze pauzeren onStop
en hervat het afspelen in onStart
, in plaats van te gebruiken onPause
handlers.
Chromebooks zijn zo ontworpen dat gebruikers eenvoudig kunnen schakelen tussen apparaten. Ze hoeven alleen in te loggen op hun Google-account en al hun apps en inhoud zijn gewoon er, ongeacht of ze deze specifieke Chromebook eerder hebben gebruikt.
Aangezien dit het gedrag is dat Chromebook-gebruikers gewend zijn te zijn, is dit ook hoe uw app zich zou moeten gedragen wanneer deze wordt uitgevoerd in Chrome OS. Dit betekent dat u online een back-up van de gegevens van uw app moet maken in plaats van deze alleen lokaal op te slaan. De eenvoudigste manier is om de Auto Backup-functie van Android te gebruiken, waarmee u een back-up kunt maken van de gegevens van uw app naar het Google Drive-account van de gebruiker..
Als uw app Android 6.0 of hoger target, is Automatische back-up standaard ingeschakeld. Het is echter altijd een goed idee om expliciet te zijn over de functies die uw app gebruikt (er is geen garantie dat Automatische back-up standaard wordt ingeschakeld voor toekomstige versies van Android), dus open het Manifest van uw project en voeg het volgende toe:
android: allowBackup = "true"
Raadpleeg de officiële Android-documenten voor meer informatie over het implementeren van back-up en herstel.
Zelfs nadat u al deze praktische tips heeft gevolgd, weet u niet zeker of uw app een goede gebruikerservaring biedt in Chrome OS-tenzij u test uw app op een levensechte Chromebook.
Op het moment van schrijven raadt Google u aan uw Chromebook-klaar apps te testen voor het volgende:
Een op ARM gebaseerde Chromebook.
Een Intel x86-gebaseerde Chromebook.
Een converteerbare Chromebook (een die van vorm kan veranderen tussen een laptop en een tablet).
Een Chromebook met ondersteuning voor touchscreens.
Een Chromebook met ondersteuning voor 'nep-aanraking'.
Maar laten we realistisch zijn: het is onwaarschijnlijk dat u toevallig toegang heeft tot meerdere Chromebooks. Wanneer u besluit welke Chromebook (s) u moet gebruiken om uw app te testen, kunt u een kijkje nemen in de lijst van Google van alle Android-compatibele Chromebooks die momenteel op de markt zijn.
Voordat u uw Android-app in Chrome OS kunt installeren, moet u uw Chromebook in de ontwikkelaarsmodus zetten en installaties uit onbekende bronnen inschakelen.
Het exacte proces voor het plaatsen van uw Chromebook in de ontwikkelaarsmodus varieert per apparaat, dus als deze instructies niet werken voor uw specifieke model, moet u de Chromium-documenten doorzoeken op apparaatspecifieke instructies.
Om de ontwikkelaarsmodus in te gaan:
Zorg ervoor dat uw Chromebook is uitgeschakeld.
Houd de toets ingedrukt Esc en verversen toetsen terwijl u op uw apparaat drukt macht knop. Uw Chromebook moet dan opstarten naar het herstelscherm.
druk de Controle-D toetsen op het toetsenbord van uw Chromebook.
Druk als daarom wordt gevraagd op invoeren sleutel.
druk de Controle-D sleutels opnieuw.
Uw Chromebook start nu op in ontwikkelaarsmodus.
De volgende stap is het inschakelen van Onbekende bronnen door naar te navigeren Chrome-instellingen> App-instellingen> Beveiliging en selecteren Onbekende bronnen.
Zodra u deze stappen hebt voltooid, bent u klaar om het APK (Android Application Package) te installeren dat u wilt testen. Als u uw APK snel naar uw Chromebook wilt overbrengen, kunt u:
Voeg uw APK toe aan Google Drive.
Kopieer het APK-bestand naar uw Chromebook downloads map met behulp van een externe schijf of SD-kaart.
Stuur de APK per e-mail naar uzelf.
Vervolgens moet u de APK naar uw Chromebook downloaden en openen met de app Android File Manager (die u kunt vinden door te navigeren naar Chrome-instellingen> App-instellingen> Apparaat en USB> Verkennen).
U kunt ook de APK van uw ontwikkelmachine naar uw Chromebook pushen met behulp van Android Debug Bridge (ADB) -opdrachten.
Om ervoor te zorgen dat ADB goed kan worden afgespeeld met Chrome OS moet je wel wat instellen, maar als je eenmaal verbinding hebt gemaakt, kun je ADB gebruiken om een reeks opdrachten uit te geven die heel handig kunnen zijn om je Android-app te testen. (Voor meer informatie over ADB-opdrachten, bekijk de officiële Android-documenten).
Het instellen van ADB is een proces dat uit meerdere stappen bestaat, dus laten we dit stap voor stap aanpakken:
Start de Chrome OS Terminal door op te drukken Ctrl-Alt-T op uw toetsenbord en typ vervolgens schelp
om de bash command shell te krijgen:
crosh> shell chronos @ localhost / $
Voer uw wachtwoord in en voer vervolgens de volgende opdrachten uit via het Terminal-venster:
chronos @ localhost / $ sudo / usr / libexec / debugd / helpers / dev_features_rootfs_verification
Lees de disclaimer. Als je graag verder wilt gaan, voer je de volgende opdracht in:
chronos @ localhost / $ sudo reboot
Op dit moment wordt uw Chromebook opnieuw gestart. Nadat uw Chromebook is opgestart, start u de Terminal opnieuw en typt u:
chronos @ localhost / $ sudo / usr / libexec / debugd / helpers / dev_features_ssh
Als u ADB-foutopsporing inschakelt, heeft u het IP-adres van uw Chromebook nodig, dus:
Klik op de Netwerk pictogram in de rechterbenedenhoek van het startscherm van uw Chromebook.
Selecteer het netwerk waarmee uw Chromebook momenteel is verbonden.
Klik op de ik pictogram in de rechterbenedenhoek van het menu.
Op dit punt wordt een venster weergegeven met het IP-adres van uw Chromebook. Noteer het, want u heeft dit later nodig.
Voer de volgende stappen uit op uw Chromebook:
Klik op het klokpictogram in de rechterbenedenhoek van het scherm.
kiezen instellingen.
In de Android-apps sectie, klik op de Beheer uw Android-apps in Instellingen link.
Klik Over apparaat.
Ga naar de ontwikkelaarsmodus door op te klikken Bouw nummer zeven keer.
Klik op de pijl linksboven in het venster. Hiermee gaat u terug naar de main instellingen scherm.
Klik Ontwikkelaarsopties.
in staat stellen ADB-foutopsporing en klik vervolgens op OK.
Voer vervolgens de volgende stappen uit op uw ontwikkelingsmachine:
Open een Terminal-venster en verander map (CD
) dus het wijst naar de locatie van het 'adb'-programma van je Android SDK.
cd / Gebruikers / jessicathornsby / Bibliotheek / Android / sdk / platform-tools
Laat uw ontwikkelmachine luisteren naar een TCP / IP-verbinding op poort 22 door de volgende opdracht adb te geven:
./ adb tcpip 22
Geef de adb verbindt
opdracht gevolgd door het IP-adres van uw Chromebook, bijvoorbeeld:
./ adb connect 100.100.0.10
Klik op uw Chromebook op Toestaan als daarom gevraagd wordt.
Het enige wat u hoeft te doen, is de APK van uw ontwikkelmachine naar uw Chromebook te sturen.
Breng op uw ontwikkelingsmachine de adb installeren
opdracht, gevolgd door het pad en de bestandsnaam van de APK die u wilt installeren, bijvoorbeeld:
./ adb install Gebruikers / jessicathornsby / Documents / app-name.apk
En dat is het! Uw Android-app is nu op uw Chromebook geïnstalleerd en kan worden getest!
In dit artikel hebben we gekeken hoe u uw app kunt bijwerken zodat deze op Chromebooks kan worden uitgevoerd en, als deze vervolgens kan worden uitgevoerd op dit nieuwe platform, hoe u deze kunt optimaliseren voor een betere gebruikerservaring.
Toegang tot hun favoriete apps via hun smartphones, tablets en nu hun laptops is geweldig nieuws voor Chromebook-gebruikers, en voor u als ontwikkelaar betekent dit een grotere potentiële doelgroep voor uw Android-apps - en wie zou dat niet willen?