Et enkelt hack for å se om Android-koden din kjøres på emulatoren

Hvis du har skrevet til og med de mest elementære Android-programmene, har du nesten helt sikkert brukt Android-emulatoren. Gjennom årene som en innebygd programvareingeniør har jeg hatt hendene på alle slags emulatorer. Når det gjelder innebygd programmering, er emulatorer ofte en vesentlig del av programvaren utvikling livssyklus (SDLC).

Emulatoren Google leverer som en del av Android-utviklingssettet er en av de beste jeg har jobbet med. Og likevel, på slutten av dagen er det en emulator, ikke en faktisk Android-enhet. Å bruke en emulator betyr før eller siden at det kommer en tid hvor du står overfor et conundrum: På grunn av en viss begrensning eller kritisk forskjell mellom din fysiske målenhet og emulatoren, vil du at koden din skal oppføre seg på en måte på emulatoren og en annen når den er distribuert til enheten. Dette stiller spørsmålet: Hvordan kan du programmatisk bestemme om en app kjøres på emulatoren eller på en faktisk enhet?

Så vidt jeg vet, er det ingen offisielt støttet mekanisme for å gjøre dette. I denne korte opplæringen vil jeg imidlertid demonstrere teknikken jeg ofte bruker i min egen kode. Du kan følge med trinnvise instruksjoner som følger med, eller laste ned hele prosjektet og importere det direkte til Eclipse.

1. Lag et nytt Android-prosjekt i Eclipse. Målrette Android 1.6 eller nyere. Endre navnet på oppstartsaktiviteten til Main.java, og den tilhørende layoutfilen til main.xml.

2. I mappen / res / layout definerer du main.xml for å inkludere en enkelt tekstvisning pakket inn i en lineær layout.

 main.xml 
 "Http://schemas.android.com/apk/res/android" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "vertikal" 
 android: bakgrunn = "# 000000" 
 android: gravitasjon = "sentrum" > 
 android: id = "@ + id / tekst" 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: tekst = "tekst" 
 android: textSize = "14sp" 
 android: textColor = "#ffffff" /> 

3. Det siste trinnet er å overstyre on-create-metoden til /src/Main.java-filen. Her drar jeg merkeegenskapen til bygningen. På emulatoren returnerer dette ordet "generisk" i små bokstaver.

 Main.java 
 pakke com.authorwjf.amianemulator; 
 import android.os.Build; 
 import android.os.Bundle; 
 import android.widget.TextView; 
 import android.app.Aktivitet; 
 offentlig klasse Hoved utvider aktivitet { 
 @Overstyring 
 public void onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 setContentView (R.layout. main ); 
 TextView tv = (TextView) findViewById (R.id. Text ); 
 if (Build. BRAND .equalsIgnoreCase ("generisk")) { 
 tv.setText ("JA, jeg er en emulator"); 
 } annet { 
 tv.setText ("NEI, jeg er IKKE en emulator"); 
 } 
 } 
 } 
Gå videre og samle APK og last den ned til en emulator og den fysiske enheten din. Ta-da! ( Figur A ) Figur A

Å bruke build-merket som en indikator er en av mange måter jeg har kommet over i de forskjellige Android-forumene for å utføre denne testen. Mine egne førstehåndserfaringer har bevist denne metoden som den mest pålitelige.

Imidlertid understreker jeg igjen at det ikke er en Google-sanksjonert tilnærming, og at den derfor ikke er garantert som fremtidig bevis. Så vidt jeg vet har Google ikke tilbudt en alternativ løsning. Når og hvis Google gjør det, vil jeg gå tilbake og refaktorere koden min. Inntil da vil jeg fortsette å bruke tilnærmingen som er skissert i dette innlegget.

© Copyright 2021 | pepebotifarra.com