Android Handledning
Komma igång med Android
Sök…
Anmärkningar
Om du vill lära dig mer om Android Gradle Plugin-inställningen, kolla dokumentationen för android-gradle
.
Om du är intresserad av alternativa emulatorer kan du titta på Genymotion . Det ger en gratis plan och kräver mindre RAM-minne.
versioner
Version | API-nivå | Versionskod | Utgivningsdatum |
---|---|---|---|
1,0 | 1 | BASE | 2008-09-23 |
1,1 | 2 | BASE_1_1 | 2009-02-09 |
1,5 | 3 | CUPCAKE | 2009-04-27 |
1,6 | 4 | DONUT | 2009-09-15 |
2,0 | 5 | ECLAIR | 2009-10-26 |
2.0.1 | 6 | ECLAIR_0_1 | 2009-12-03 |
2.1.x | 7 | ECLAIR_MR1 | 2010-01-12 |
2.2.x | 8 | FROYO | 2010-05-20 |
2,3 | 9 | GINGERBREAD | 2010-12-06 |
2.3.3 | 10 | GINGERBREAD_MR1 | 2011-02-09 |
3.0.x | 11 | HONEYCOMB | 2011-02-22 |
3.1.x | 12 | HONEYCOMB_MR1 | 2011-05-10 |
3.2.x | 13 | HONEYCOMB_MR2 | 2011-07-15 |
4,0 | 14 | ICE_CREAM_SANDWICH | 2011-10-18 |
4.0.3 | 15 | ICE_CREAM_SANDWICH_MR1 | 2011-12-16 |
4,1 | 16 | JELLY_BEAN | 2012-07-09 |
4,2 | 17 | JELLY_BEAN_MR1 | 2012/11/13 |
4,3 | 18 | JELLY_BEAN_MR2 | 2013/07/24 |
4,4 | 19 | KITKAT | 2013/10/31 |
4.4W | 20 | KITKAT_WATCH | 2014/06/25 |
5,0 | 21 | LOLLIPOP | 2014/11/12 |
5,1 | 22 | LOLLIPOP_MR1 | 2015/03/09 |
6,0 | 23 | M (Marshmallow) | 2015/10/05 |
7,0 | 24 | N (Nougat) | 2016/08/22 |
7,1 | 25 | N_MR1 (Nougat MR1) | 2016/10/04 |
8,0 | 26 | O (Förhandsvisning av utvecklare 4) | 2017/07/24 |
Ställa in Android Studio
Android Studio är Android-utvecklings-IDE som officiellt stöds och rekommenderas av Google. Android Studio levereras med Android SDK Manager , som är ett verktyg för att ladda ner Android SDK
komponenterna som krävs för att börja utveckla appar.
Installera Android Studio och Android SDK
verktyg:
- Ladda ner och installera Android Studio .
- Ladda ner de senaste SDK-verktygen och SDK-plattformsverktygen genom att öppna Android Studio och sedan följa anvisningarna för Android SDK Tool Updates . Du bör installera de senaste tillgängliga stabila paketen.
Om du behöver arbeta med gamla projekt som byggdes med äldre SDK-versioner, kan du behöva ladda ner dessa versioner också
Sedan Android Studio 2.2 kommer en kopia av den senaste OpenJDK med installationen och är den rekommenderade JDK (Java Development Kit) för alla Android Studio-projekt. Detta tar bort kravet på att ha Oracle's JDK-paket installerat. Gör så här för att använda den medföljande SDK: n;
- Öppna ditt projekt i Android Studio och välj Arkiv> Projektstruktur i menyraden.
- Markera kryssrutan Använd inbäddad JDK på SDK-platssidan och under JDK-plats .
- Klicka på OK .
Konfigurera Android Studio
Android Studio ger tillgång till två konfigurationsfiler via Hjälp-menyn:
- studio.vmoptions : Anpassa alternativ för Studio's Java Virtual Machine (JVM), till exempel högstorlek och cache-storlek. Observera att den här filen kan kallas studio64.vmoptions på Linux-maskiner, beroende på din version av Android Studio.
- idea.properties : Anpassa Android Studio-egenskaper, till exempel mappvägen för plugins eller maximal filstorlek som stöds.
Ändra / lägg till tema
Du kan ändra det efter dina önskemål. File->Settings->Editor->Colors & Fonts->
och välj ett tema. Du kan också ladda ner nya teman från http://color-themes.com/ När du har laddat ner .jar.zip
filen, gå till File -> Import Settings...
och välj den nedladdade filen.
Kompilera appar
Skapa ett nytt projekt eller öppna ett befintligt projekt i Android Studio och tryck på den gröna Play-knappen på det översta verktygsfältet för att köra det. Om det är grått måste du vänta en sekund för att tillåta Android Studio att indexera vissa filer ordentligt, vars framsteg kan ses i den nedre statusfältet.
Om du vill skapa ett projekt från skalet, se till att du har en local.properties
fil, som skapas automatiskt av Android Studio. Om du behöver skapa projektet utan Android Studio behöver du en rad som börjar med sdk.dir=
följt av sökvägen till din SDK-installation.
Öppna ett skal och gå in i projektets katalog. Ange ./gradlew aR
och tryck på enter. aR
är en genväg för assembleRelease
, som kommer att ladda ner alla beroenden för dig och bygga appen. Den sista APK-filen kommer att vara i ProjectName/ModuleName/build/outputs/apk
och kommer att kallas ModuleName-release.apk
.
Skapa ett nytt projekt
Ställ in Android Studio
Börja med att ställa in Android Studio och öppna sedan den. Nu är du redo att skapa din första Android-app!
Obs! Den här guiden är baserad på Android Studio 2.2, men processen i andra versioner är huvudsakligen densamma.
Konfigurera ditt projekt
Grundläggande konfiguration
Du kan starta ett nytt projekt på två sätt:
- Klicka på
Start a New Android Studio Project
från välkomstskärmen. - Navigera till
File
→New Project
om du redan har ett projekt öppet.
Därefter måste du beskriva din ansökan genom att fylla i några fält:
Programnamn - Detta namn visas för användaren.
Exempel:
Hello World
. Du kan alltid ändra det senare i filenAndroidManifest.xml
.Företagsdomän - Detta är kvalificeringen för ditt projekt paketnamn.
Exempel:
stackoverflow.com
.Paketnamn (aka
applicationId
) - Detta är det fullt kvalificerade projektpaketnamnet.Det bör följa Notera omvänd domännamn (aka Reverse DNS ): Top Level Domain . Företagets domän . [ Företagssegment . ] Programnamn .
Exempel:
com.stackoverflow.android.helloworld
ellercom.stackoverflow.helloworld
. Du kan alltid ändra din applikation genom att åsidosätta den i din gradfil .
Använd inte standardprefixet "com.example" såvida du inte tänker skicka in din ansökan till Google Play Store. Paketnamnet kommer att vara din unika applikation i Google Play.
- Projektplats - Detta är katalogen där ditt projekt kommer att lagras.
Välj Formfaktorer och API-nivå
I nästa fönster kan du välja formulärfaktorer som stöds av din app, till exempel telefon, surfplatta, TV, Wear och Google Glass. De valda formfaktorerna blir appmodulerna i projektet. För varje formfaktor kan du också välja API-nivå för den appen. För att få mer information, klicka på Hjälp mig att välja
Diagram över de aktuella Android-versionens distributioner, visas när du klickar på Hjälp mig att välja.
Fönstret Distribution för Android-plattformen visar distributionen av mobila enheter som kör varje version av Android, som visas i figur 2. Klicka på en API-nivå för att se en lista med funktioner som introducerats i motsvarande Android-version. Detta hjälper dig att välja den minsta API-nivån som har alla funktioner som dina appar behöver, så att du kan nå så många enheter som möjligt. Klicka sedan på OK .
Välj nu vilka plattformar och version av Android SDK som applikationen kommer att stödja.
För nu väljer du bara Telefon och surfplatta .
Minsta SDK är den nedre gränsen för din app. Det är en av signalerna som Google Play Store
använder för att avgöra vilka enheter en app kan installeras på. Till exempel stöder Stack Exchange-appen Android 4.1+.
Android Studio kommer att berätta (ungefär) vilken procentandel enheter som stöds med tanke på det angivna minimum SDK.
Lägre API-nivåer är inriktade på fler enheter men har färre funktioner tillgängliga.
När du beslutar om minimum SDK bör du ta hänsyn till statistiken på Dashboards som ger dig versioninformation om enheterna som besökte Google Play Store globalt under den senaste veckan.
Från: Dashboards på Android Developer-webbplats.
Lägg till en aktivitet
Nu ska vi välja en standardaktivitet för vår applikation. I Android är en Activity
en enda skärm som kommer att presenteras för användaren. En applikation kan hysa flera aktiviteter och navigera mellan dem. I det här exemplet väljer du Empty Activity
och klickar på Nästa.
Här kan du ändra namnet på aktiviteten och layouten om du vill. En bra praxis är att behålla Activity
som ett efterföljd för aktivitetsnamnet och activity_
som ett prefix för layoutnamnet. Om vi lämnar dessa som standard kommer Android Studio generera en aktivitet för oss kallas MainActivity
och en layout fil som heter activity_main
. Klicka nu på Finish
.
Android Studio skapar och konfigurerar vårt projekt, vilket kan ta lite tid beroende på systemet.
Inspekterar projektet
För att förstå hur Android fungerar, låt oss titta på några av filerna som skapades för oss.
På den vänstra rutan för Android Studio kan vi se strukturen för vår Android-applikation .
Låt oss först öppna AndroidManifest.xml
genom att dubbelklicka på den. Android-manifestfilen beskriver en del av den grundläggande informationen om en Android-applikation. Den innehåller deklarationen av våra aktiviteter, samt några mer avancerade komponenter.
Om en applikation behöver åtkomst till en funktion som är skyddad av en tillåtelse, måste den förklara att den kräver det tillståndet med ett <uses-permission>
-element i manifestet. När applikationen sedan installeras på enheten bestämmer installationsprogrammet huruvida den begärda behörigheten ska beviljas eller inte genom att kontrollera myndigheterna som undertecknade applikationens certifikat och i vissa fall fråga användaren. En applikation kan också skydda sina egna komponenter (aktiviteter, tjänster, sändningsmottagare och innehållsleverantörer) med behörigheter. Den kan använda någon av de behörigheter som definierats av Android (listad i android.Manifest.permission) eller deklarerats av andra applikationer. Eller så kan den definiera sin egen.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stackoverflow.helloworld">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Låt oss nu öppna activity_main.xml
som finns i app/src/main/res/layout/
. Denna fil innehåller deklarationer för de visuella komponenterna i vår MainActivity. Du kommer att se visuell designer. Detta låter dig dra och släppa element till den valda layouten.
Du kan också växla till xml-layoutdesignern genom att klicka på "Text" längst ner i Android Studio, så här:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.stackexchange.docs.helloworld.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
Du kommer att se en widget som kallas en TextView
inuti denna layout, med egenskapen android:text
inställd på "Hello World!". Detta är ett textblock som visas för användaren när de kör applikationen.
Du kan läsa mer om layouter och attribut .
Låt oss nu ta en titt på MainActivity
. Detta är Java-koden som har genererats för MainActivity
.
public class MainActivity extends AppCompatActivity {
// The onCreate method is called when an Activity starts
// This is where we will set up our layout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView sets the Activity's layout to a specified XML layout
// In our case we are using the activity_main layout
setContentView(R.layout.activity_main);
}
}
Som definierat i vårt Android-manifest kommer MainActivity
att starta som standard när en användare startar HelloWorld
appen.
Slutligen, öppna upp filen med namnet build.gradle
finns i app/
.
Android Studio använder build-systemet Gradle för att sammanställa och bygga Android-applikationer och bibliotek.
apply plugin: 'com.android.application'
android {
signingConfigs {
applicationName {
keyAlias 'applicationName'
keyPassword 'password'
storeFile file('../key/applicationName.jks')
storePassword 'anotherPassword'
}
}
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.stackexchange.docs.helloworld"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
signingConfig signingConfigs.applicationName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0'
}
Den här filen innehåller information om build och din appversion, och du kan också använda den för att lägga till beroenden till externa bibliotek. För nu, låt oss inte göra några ändringar.
Det rekommenderas att alltid välja den senaste versionen som är tillgänglig för beroenden:
- buildToolsVersion : 26.0.0
- com.android.support:appcompat-v7 : 26.0.0 (juli 2017)
- eldstad : 11.0.4 (augusti 2017)
compileSdkVersion
compileSdkVersion
är ditt sätt att berätta för Gradle vilken version av Android SDK som du ska kompilera din app med. Att använda den nya Android SDK är ett krav för att använda någon av de nya API: er som läggs till på den nivån.
Det bör betonas att ändring av din compileSdkVersion
inte förändrar körbeteende. Medan nya kompilatorvarningar / -fel kan finnas när du ändrar din compileSdkVersion
, ingår inte din compileSdkVersion
i din APK: den används rent vid kompileringstiden.
Därför rekommenderas det starkt att du alltid sammanställer med den senaste SDK: n. Du får alla fördelarna med nya sammanställningskontroller av befintlig kod, undvik nyligen avskrivna API: er och vara redo att använda nya API: er.
minSdkVersion
Om compileSdkVersion
ställer in de senaste API: erna tillgängliga för dig, är minSdkVersion
den undre gränsen för din app. minSdkVersion
är en av signalerna som Google Play Store använder för att avgöra vilken av användarens enheter en app kan installeras på.
Det spelar också en viktig roll under utvecklingen: som standard löper ludd mot ditt projekt och varnar dig när du använder några API: er ovanför minSdkVersion
, vilket hjälper dig att undvika runtime-problemet med att försöka ringa ett API som inte finns. Att kontrollera systemversionen vid körning är en vanlig teknik när man bara använder API: er på nyare plattformsversioner.
targetSdkVersion
targetSdkVersion
är det huvudsakliga sättet för att Android ger framåtkompatibilitet genom att inte tillämpa beteendeförändringar om inte targetSdkVersion
är uppdaterad. Detta gör att du kan använda nya API: er innan du arbetar genom beteendeförändringar. Uppdatering för att rikta in sig på den senaste SDK: n bör vara en hög prioritet för varje app. Det betyder inte att du måste använda alla nya funktioner som introduceras och inte heller ska du uppdatera din targetSdkVersion
utan att testa.
targetSDKVersion är den version av Android som är den övre gränsen för tillgängliga verktyg. Om targetSDKVersion är mindre än 23, behöver appen inte begära behörigheter vid körning för en instans, även om appen körs på API 23+. TargetSDKVersion hindrar inte Android-versioner ovanför plockas Android-version från att köra appen.
Du kan hitta mer info om Gradle-plugin:
- Ett grundläggande exempel
- Introduktion till Gradle-plugin för Android och omslaget
- Introduktion till konfigurationen av build.gradle och DSL-metoderna
Kör applikationen
Låt oss nu köra vår HelloWorld-applikation. Du kan antingen köra en virtuell Android-enhet (som du kan ställa in med hjälp av AVD Manager i Android Studio, som beskrivs i exemplet nedan) eller ansluta din egen Android-enhet via en USB-kabel.
Ställa in en Android-enhet
Om du USB Debugging
köra en applikation från Android Studio på din Android-enhet måste du aktivera USB Debugging
i Developer Options
i enhetens inställningar.
Settings > Developer options > USB debugging
Om Developer Options
inte syns i inställningarna, navigerar du till About Phone
och trycker på Build Number
sju gånger. Detta gör det möjligt för Developer Options
att visas i dina inställningar.
Settings > About phone > Build number
Du kanske också måste ändra build.gradle
konfigurationen för att bygga på en version som din enhet har.
Kör från Android Studio
Klicka på den gröna Run
knappen från verktygsfältet högst upp i Android Studio. I fönstret som visas väljer du vilken enhet du vill köra appen på (starta en Android Virtual Device om det behövs, eller se Ställa in en AVD (Android Virtual Device) om du behöver installera en) och klicka på OK
.
På enheter som kör Android 4.4 (KitKat) och eventuellt högre, visas en pop-up som godkänner USB-felsökning. Klicka på OK
att acceptera.
Programmet kommer nu att installeras och köras på din Android-enhet eller emulator.
APK-filplats
När du förbereder din ansökan för frisläppning konfigurerar du, bygger och testar en version av din ansökan. Konfigurationsuppgifterna är enkla och involverar grundläggande kodrensning och kodändringsuppgifter som hjälper till att optimera din applikation. Byggprocessen liknar felsökningsprocessen och kan göras med JDK och Android SDK-verktyg. Testuppgifterna fungerar som en slutkontroll, vilket säkerställer att din applikation fungerar som förväntat under verkliga förhållanden. När du är klar med att förbereda din ansökan för utsläpp har du en signerad APK-fil som du kan distribuera direkt till användare eller distribuera via en applikationsmarknad som Google Play.
Android Studio
Eftersom i ovanstående exempel används Gradle är platsen för den genererade APK-filen: <Your Project Location>/app/build/outputs/apk/app-debug.apk
IntelliJ
Om du är en användare av IntelliJ innan du byter till Studio och importerar ditt IntelliJ-projekt direkt ändras ingenting. Platsen för utgången kommer att vara densamma under:
out/production/...
Obs: detta kommer att avskrivas ibland runt 1,0
Förmörkelse
Om du importerar Android Eclipse-projektet direkt, gör inte detta! Så fort du har beroenden i ditt projekt (burkar eller biblioteksprojekt) fungerar detta inte och ditt projekt kommer inte att konfigureras ordentligt. Om du inte har några beroenden skulle apk vara under samma plats som du hittar den i Eclipse:
bin/...
Android-programmering utan IDE
Detta är ett minimalistiskt Hello World-exempel som bara använder de mest grundläggande Android-verktygen.
Krav och antaganden
- Oracle JDK 1.7 eller senare
- Android SDK-verktyg (bara kommandoradsverktygen )
Detta exempel antar Linux. Du kanske måste justera syntaxen för din egen plattform.
Ställa in Android SDK
Efter packning av SDK-utgåvan:
Installera ytterligare paket med SDK-hanteraren. Använd inte
android update sdk --no-ui
enligt instruktionerna i den medföljande Readme.txt; den laddar ner ungefär 30 GB onödiga filer.android sdk
istället den interaktiva SDK-managerandroid sdk
att få det rekommenderade minimipaketet.Lägg till följande JDK- och SDK-kataloger till din körning PATH. Detta är valfritt, men instruktionerna nedan antar det.
- JDK / bin
- SDK / plattform-verktyg
- SDK / verktyg
- SDK / build-tools / LATEST (som installerat i steg 1)
Skapa en virtuell Android-enhet. Använd den interaktiva AVD-hanteraren (
android avd
). Du kanske måste fikra lite och söka efter råd; instruktionerna på plats hjälper inte alltid.(Du kan också använda din egen enhet)
Kör enheten:
emulator -avd DEVICE
Om enhetsskärmen verkar vara låst, svep sedan för att låsa upp den.
Låt den gå medan du kodar appen.
Kodar appen
Byt till en tom fungerande katalog.
Gör källfilen:
mkdir --parents src/dom/domain touch src/dom/domain/SayingHello.java
Innehåll:
package dom.domain; import android.widget.TextView; public final class SayingHello extends android.app.Activity { protected @Override void onCreate( final android.os.Bundle activityState ) { super.onCreate( activityState ); final TextView textV = new TextView( SayingHello.this ); textV.setText( "Hello world" ); setContentView( textV ); } }
Lägg till ett manifest:
touch AndroidManifest.xml
Innehåll:
<?xml version='1.0'?> <manifest xmlns:a='http://schemas.android.com/apk/res/android' package='dom.domain' a:versionCode='0' a:versionName='0'> <application a:label='Saying hello'> <activity a:name='dom.domain.SayingHello'> <intent-filter> <category a:name='android.intent.category.LAUNCHER'/> <action a:name='android.intent.action.MAIN'/> </intent-filter> </activity> </application> </manifest>
Skapa en underkatalog för de deklarerade resurserna:
mkdir res
Lämna det tomt för nu.
Bygg koden
Generera källan för resursdeklarationerna. Ersätt här rätt väg till din SDK och det installerade API: n för att bygga mot (t.ex. "android-23"):
aapt package -f \ -I SDK/platforms/android-API/android.jar \ -J src -m \ -M AndroidManifest.xml -S res -v
Resursdeklarationer (beskrivs vidare nedan) är faktiskt valfria. Under tiden gör ovanstående samtal ingenting om res / är fortfarande tomt.
Kompilera källkoden till Java-bytekod (.java → .klass):
javac \ -bootclasspath SDK/platforms/android-API/android.jar \ -classpath src -source 1.7 -target 1.7 \ src/dom/domain/*.java
Översätt bytekoden från Java till Android (.klass → .dex):
Först med Jill (.klass → .jayce):
java -jar SDK/build-tools/LATEST/jill.jar \ --output classes.jayce src
Sedan Jack (.jayce → .dex):
java -jar SDK/build-tools/LATEST/jack.jar \ --import classes.jayce --output-dex .
Android-bytekod kallades tidigare "Dalvik körbar kod", och så "dex".
Du kan ersätta steg 11 och 12 med ett enda samtal till Jack om du vill; det kan kompilera direkt från Java-källa (.java → .dex). Men det finns fördelar med att sammanställa med
javac
. Det är ett mer känt, bättre dokumenterat och mer tillämpligt verktyg.Paketera resursfilerna, inklusive manifestet:
aapt package -f \ -F app.apkPart \ -I SDK/platforms/android-API/android.jar \ -M AndroidManifest.xml -S res -v
Det resulterar i en partiell APK-fil (Android-applikationspaket).
Gör hela APK med hjälp av
ApkBuilder
verktyget:java -classpath SDK/tools/lib/sdklib.jar \ com.android.sdklib.build.ApkBuilderMain \ app.apkUnalign \ -d -f classes.dex -v -z app.apkPart
Den varnar, "DETTA VERKTYG ÄR DEPRECATERAD. Se - hjälp för mer information." Om
--help
misslyckas med enArrayIndexOutOfBoundsException
,ArrayIndexOutOfBoundsException
stället inga argument:java -classpath SDK/tools/lib/sdklib.jar \ com.android.sdklib.build.ApkBuilderMain
Det förklarar att CLI (
ApkBuilderMain
)ApkBuilderMain
för att direkt ringa Java API (ApkBuilder
). (Om du vet hur du gör det från kommandoraden, uppdatera detta exempel.)Optimera APK-datainriktningen ( rekommenderad praxis ):
zipalign -f -v 4 app.apkUnalign app.apk
Installera och köra
Installera appen på Android-enheten:
adb install -r app.apk
Starta appen:
adb shell am start -n dom.domain/.SayingHello
Den borde springa och säga hej.
Det är allt. Det är vad som krävs för att säga hej med hjälp av de grundläggande Android-verktygen.
Att förklara en resurs
Det här avsnittet är valfritt. Resursdeklarationer krävs inte för en enkel "hejvärld" -app. Om de inte heller krävs för din app kan du effektivisera byggandet något genom att utelämna steg 10 och ta bort referensen till res / katalogen från steg 13.
Annars är här ett kort exempel på hur man deklarerar en resurs och hur man refererar till den.
Lägg till en resursfil:
mkdir res/values touch res/values/values.xml
Innehåll:
<?xml version='1.0'?> <resources> <string name='appLabel'>Saying hello</string> </resources>
Hänvisning till resursen från XML-manifestet. Detta är en deklarativ referensstil:
<!-- <application a:label='Saying hello'> --> <application a:label='@string/appLabel'>
Hänvisning till samma resurs från Java-källan. Detta är en absolut hänvisning:
// v.setText( "Hello world" ); v.setText( "This app is called " + getResources().getString( R.string.appLabel ));
Testa ovanstående ändringar genom att bygga om, installera om och köra appen igen (steg 10-17).
Det bör starta om och säga, "Den här appen heter Saying hej".
Avinstallera appen
adb uninstall dom.domain
Se även
- originalfråga - Den ursprungliga frågan som ledde till detta exempel
- fungerande exempel - Ett fungerande build-skript som använder kommandona ovan
Grundläggande för ansökan
Android-appar skrivs i Java. Android SDK-verktygen sammanställer kod, data och resursfiler till en APK (Android-paket). I allmänhet innehåller en APK-fil allt appens innehåll.
Varje app körs på sin egen virtuella maskin (VM) så att appen kan köra isolerat från andra appar. Android-systemet fungerar med principen om minst privilegium. Varje app har bara åtkomst till de komponenter som den kräver för att utföra sitt arbete och inte mer. Det finns dock sätt för en app att dela data med andra appar, till exempel genom att dela Linux-användar-ID mellan appen, eller appar kan begära tillåtelse att få åtkomst till enhetsdata som SD-kort, kontakter etc.
App-komponenter
Appskomponenter är byggstenarna i en Android-app. Varje komponenter spelar en specifik roll i en Android-app som tjänar ett tydligt syfte och har distinkta livscykler (flödet av hur och när komponenten skapas och förstörs). Här är de fyra typerna av appkomponenter:
- Aktiviteter: En aktivitet representerar en enda skärm med ett användargränssnitt (UI). En Android-app kan ha mer än en aktivitet. (t.ex. en e-post-app kan ha en aktivitet för att lista alla e-postmeddelanden, en annan för att visa innehållet i varje e-postmeddelande och en annan för att skriva ett nytt e-postmeddelande.) Alla aktiviteter i en app fungerar tillsammans för att skapa en User eXperience (UX).
- Tjänster: En tjänst körs i bakgrunden för att utföra långvariga operationer eller för att utföra arbete för fjärrprocesser. En tjänst tillhandahåller inget användargränssnitt, den körs bara i bakgrunden med användarens input. (t.ex. kan en tjänst spela musik i bakgrunden medan användaren är i en annan app, eller så kan den hämta data från internet utan att blockera användarens interaktion med Android-enheten.)
- Innehållsleverantörer: En innehållsleverantör hanterar delade appdata. Det finns fyra sätt att lagra data i en app: det kan skrivas till en fil och lagras i filsystemet, infogas eller uppdateras till en SQLite-databas, läggas ut på webben eller sparas på någon annan bestående lagringsplats som appen kan komma åt . Genom innehållsleverantörer kan andra appar fråga eller till och med ändra uppgifterna. (t.ex. Android-system tillhandahåller en innehållsleverantör som hanterar användarens kontaktinformation så att alla appar som har tillåtelse kan fråga kontakter.) Innehållsleverantörer kan också användas för att spara informationen som är privat för appen för bättre dataintegritet.
- Sändningsmottagare: En sändningsmottagare svarar på systemomfattande sändningar av tillkännagivanden (t.ex. en sändning som tillkännager att skärmen har stängts av, batteriet är svagt etc.) eller från appar (t.ex. för att låta andra appar veta att vissa data har varit laddas ner till enheten och är tillgänglig för dem att använda). Broadcastmottagare har inte UI men de kan visa meddelanden i statusfältet för att varna användaren. Vanligtvis används sändningsmottagare som en gateway till andra komponenter i appen, som huvudsakligen består av aktiviteter och tjänster.
En unik aspekt av Android-systemet är att alla appar kan starta en annan apps komponent (t.ex. om du vill ringa, skicka SMS, öppna en webbsida eller visa en bild, det finns en app som redan gör det och din app kan utnyttja den istället för att utveckla en ny aktivitet för samma uppgift).
När systemet startar en komponent startar det processen för den appen (om den inte redan körs, dvs endast en förgrundsprocess per app kan köras vid en viss tidpunkt på ett Android-system) och instanseras de klasser som behövs för den komponenten. Således körs komponenten på den app som den tillhör. Därför, till skillnad från appar på andra system, Android-appar har inte en enda ingång (det finns ingen main()
metod).
Eftersom systemet kör varje app i en separat process kan en app inte direkt aktivera en annan apps komponenter, men Android-systemet kan det. Således för att starta en annan apps komponent måste en app skicka ett meddelande till systemet som anger en avsikt att starta den komponenten, då kommer systemet att starta den komponenten.
Sammanhang
Instanser av klassen android.content.Context
ger anslutningen till Android-systemet som kör applikationen. Instance of Context krävs för att få tillgång till projektets resurser och den globala informationen om appens miljö.
Låt oss ha ett enkelt smälta exempel: Tänk på att du är på ett hotell och vill äta något. Du ringer rumsservice och ber dem ta med dig saker eller städa upp saker åt dig. Tänk nu på detta hotell som en Android-app, dig själv som en aktivitet, och rumsservicepersonen är då ditt sammanhang, som ger dig tillgång till hotellresurserna som rumservice, matvaror etc.
Ännu ett annat exempel: Du är i en restaurang som sitter vid ett bord, varje bord har en skötare, när du någonsin vill beställa matvaror ber du skötaren att göra det. Skötaren lägger sedan din beställning och dina matvaror serveras på ditt bord. Återigen i det här exemplet är restaurangen en Android-app, borden eller kunderna är appkomponenter, matvarorna är dina appresurser och tillhörande är ditt sammanhang, vilket ger dig ett sätt att få tillgång till resurserna som matvaror.
Att aktivera någon av ovanstående komponenter kräver sammanhangets instans. Inte bara bara ovanstående, utan nästan alla systemresurser: skapande av UI med hjälp av vyer (diskuteras senare), skapa instanser av systemtjänster, starta nya aktiviteter eller tjänster - allt kräver sammanhang.
Mer detaljerad beskrivning skrivs här .
Ställa in en AVD (Android Virtual Device)
TL; DR Det låter oss i princip simulera verkliga enheter och testa våra appar utan en riktig enhet.
Enligt Android Developer Documentation ,
Med en definition av Android Virtual Device (AVD) kan du definiera egenskaperna för en Android-telefon, surfplatta, Android Wear eller Android TV-enhet som du vill simulera i Android-emulatorn. AVD Manager hjälper dig enkelt skapa och hantera AVD: er.
Så här ställer du in en AVD:
1. Klicka på den här knappen för att få fram AVD Manager:
2. Du bör se en dialogruta som denna:
3. Klicka nu på knappen + Create Virtual Device...
Detta kommer att visa dialogrutan för konfigurering av virtuella enheter:
4. Välj vilken enhet du vill och klicka sedan på Next
:
5. Här måste du välja en Android-version för din emulator. Du kanske också måste ladda ner den först genom att klicka på Download
. När du har valt en version klickar du på Next
.
6. Ange här ett namn för din emulator, initial orientering och om du vill visa en ram runt den. När du har valt alla dessa, klicka på Finish
.
7. Nu har du en ny AVD redo att starta dina appar på den.