Android チュートリアル
Androidを使い始める
サーチ…
備考
Android Gradle Pluginの設定について詳しく知りたい場合は、 android-gradle
ドキュメントをご覧ください。
あなたが代替エミュレータに興味があるなら、あなたはGenymotionを見ることができます。無料のプランを提供し、必要なRAMの量は少なくて済みます。
バージョン
バージョン | APIレベル | バージョンコード | 発売日 |
---|---|---|---|
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年7月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 (マシュマロ) | 2015-10-05 |
7.0 | 24 | N (Nougat) | 2016-08-22 |
7.1 | 25 | N_MR1 ( N_MR1 MR1) | 2016年10月4日 |
8.0 | 26 | O (開発者向けプレビュー4) | 2017-07-24 |
Android Studioを設定する
Android Studioは、Googleが公式にサポートし、推奨するAndroid開発用IDEです。 Android Studioには、 Android SDK Managerが付属しています 。これは、アプリの開発を開始するために必要なAndroid SDK
コンポーネントをダウンロードするツールです。
Android StudioとAndroid SDK
ツールのインストール:
- Android Studioをダウンロードしてインストールします 。
- Android Studioを開き、 Android SDKツールのアップデート手順に従って、最新のSDKツールとSDKプラットフォームツールをダウンロードしてください。最新の安定したパッケージをインストールする必要があります。
古いSDKバージョンを使用してビルドされた古いプロジェクトで作業する必要がある場合は、これらのバージョンもダウンロードする必要があります
Android Studio 2.2以降、最新のOpenJDKのコピーがインストールにバンドルされており、すべてのAndroid Studioプロジェクトで推奨されるJDK (Java Development Kit)です。これにより、OracleのJDKパッケージをインストールする必要がなくなります。バンドルされたSDKを使用するには、次の手順を実行します。
- Android Studioでプロジェクトを開き、メニューバーの[ ファイル]> [プロジェクトの構造 ]を選択します。
- [ SDKの場所]ページと[ JDKの場所]で 、[ 埋め込みJDKを使用する]チェックボックスをオンにします。
- [ OK]をクリックします。
Android Studioを設定する
Android Studioでは、[ ヘルプ ]メニューから2つの設定ファイルにアクセスできます。
- studio.vmoptions :ヒープサイズやキャッシュサイズなど、StudioのJava Virtual Machine(JVM)のオプションをカスタマイズします。 Linuxマシンでは、Android Studioのバージョンに応じて、このファイルの名前はstudio64.vmoptionsになることに注意してください。
- idea.properties:Android Studioのプロパティ(プラグインのフォルダパスやサポートされている最大ファイルサイズなど)をカスタマイズします。
テーマの変更/追加
あなたの好みとして変更することができます。 File->Settings->Editor->Colors & Fonts->
とあなたから新しいテーマをダウンロードすることができtheme.Alsoを選択http://color-themes.com/あなたがダウンロードしたら.jar.zip
ファイルを、に行くFile -> Import Settings...
を選択し、ダウンロードしたファイルを選択します。
アプリのコンパイル
新しいプロジェクトを作成するか、Android Studioで既存のプロジェクトを開き、緑色の再生ボタンを押しますツールバーの上部にあるツールバーを使用して実行します。グレーの場合、Android Studioがいくつかのファイルのインデックスを正しく作成できるようにするには、1秒待つ必要があります。その進行状況は下部のステータスバーに表示されます。
シェルからプロジェクトを作成する場合は、Android Studioによって自動的に作成されるlocal.properties
ファイルがあることを確認してください。 Android Studioを使用せずにプロジェクトを作成する必要がある場合は、 sdk.dir=
始まり、SDKのインストール先のパスが必要です。
シェルを開き、プロジェクトのディレクトリに移動します。 ./gradlew aR
と入力してEnterキーを押します。 aR
はassembleRelease
ショートカットで、あなたのためのすべての依存関係をダウンロードし、アプリケーションをビルドします。最終的なAPKファイルはProjectName/ModuleName/build/outputs/apk
あり、 ModuleName-release.apk
と呼ばれます。
新しいプロジェクトを作成する
Android Studioを設定する
Android Studioを設定してから開きます。今、あなたは最初のAndroidアプリを作る準備が整いました!
注:このガイドはAndroid Studio 2.2に基づいていますが、他のバージョンのプロセスは主に同じです。
プロジェクトを構成する
基本設定
新しいプロジェクトを開始するには、次の2つの方法があります。
- ようこそ画面から[
Start a New Android Studio Project
クリックします。 - 既にプロジェクトが開いている場合は、
File
→New Project
ナビゲートしFile
。
次に、いくつかのフィールドを入力してアプリケーションを記述する必要があります。
アプリケーション名 - この名前はユーザーに表示されます。
例:
Hello World
。後でAndroidManifest.xml
ファイルでいつでも変更できます。会社ドメイン - これはプロジェクトのパッケージ名の修飾子です。
例:
stackoverflow.com
。パッケージ名 (別名
applicationId
) - これは完全修飾プロジェクトパッケージ名です。これは逆ドメインネーム記法 (別名リバースDNS ): トップレベルドメインに従うべきです。 企業ドメイン 。 [ 当社セグメント 。 ] アプリケーション名 。
例:
com.stackoverflow.android.helloworld
またはcom.stackoverflow.helloworld
。あなたのアプリケーション IDは、いつでもあなたのgradleファイルで上書きすることで変更できます 。
アプリケーションをGoogle Playストアに送信しない場合を除き、デフォルトの接頭辞「com.example」は使用しないでください。パッケージ名はGoogle Playの固有のアプリIDになります。
- プロジェクトの場所 - プロジェクトが保存されるディレクトリです。
フォームファクタとAPIレベルを選択
次のウィンドウでは、アプリでサポートされている電話、タブレット、テレビ、ウェア、Google Glassなどのフォームファクタを選択できます。選択したフォームファクタは、プロジェクト内のアプリモジュールになります。フォームファクタごとに、そのアプリのAPIレベルを選択することもできます。詳細情報を表示するには、[ ヘルプを選択 ]をクリックします。
選択したヘルプをクリックすると表示される現在のAndroidバージョンの分布図
Android Platform Distributionウィンドウには、図2に示すように、Androidの各バージョンを実行するモバイルデバイスの分布が表示されます。対応するAndroidバージョンで導入された機能のリストを参照するには、APIレベルをクリックしてください。これにより、アプリに必要なすべての機能を備えた最小限のAPIレベルを選択できるので、できるだけ多くの端末にアクセスできます。次に[ OK ]をクリックします。
次に、アプリケーションがサポートするAndroid SDKのプラットフォームとバージョンを選択します。
今のところ、 電話とタブレットのみを選択してください。
最小SDKは、アプリの下限です。これは、 Google Play Store
がアプリをインストールできるデバイスを判断するために使用する信号の1つです。たとえば、 Stack ExchangeのアプリはAndroid 4.1以上をサポートしています。
Android Studioは、指定された最小SDKがあれば、サポートされるデバイスの割合を(おおよそ)教えてくれます。
APIレベルが低いほど、より多くのデバイスをターゲットにできますが、利用できる機能は少なくなります。
最小SDKを決定する際には、 Dashboardsの統計情報を考慮する必要があります。この統計情報は 、先週Google Playストアを世界中に訪問したデバイスに関するバージョン情報を提供します。
投稿者:Androidデベロッパーのウェブサイトのダッシュボード
アクティビティを追加する
次に、アプリケーションのデフォルトのアクティビティを選択します。 Androidでは、 Activity
はユーザーに提示される単一の画面です。アプリケーションは複数のアクティビティを格納し、それらの間をナビゲートできます。この例では、「 Empty Activity
を選択し、「次へ」をクリックします。
ここでは、必要に応じて、アクティビティとレイアウトの名前を変更できます。良い習慣は維持することですActivity
アクティビティ名の接尾辞として、及びactivity_
レイアウト名の接頭辞として。これらをデフォルトのままにすると、Android StudioはMainActivity
というactivity_main
とactivity_main
というレイアウトファイルを生成します。 Finish
クリックします。
Android Studioはプロジェクトを作成して設定しますが、システムによっては時間がかかることがあります。
プロジェクトの検査
Androidの仕組みを理解するために、私たちのために作成されたファイルのいくつかを見てみましょう。
Android Studioの左ペインには、Androidアプリケーションの構造が表示されます 。
まず、 AndroidManifest.xml
をダブルクリックして開きましょう。 Androidマニフェストファイルには、Androidアプリケーションに関する基本情報の一部が記載されています。これには、活動の宣言だけでなく、いくつかの高度なコンポーネントが含まれています。
アプリケーションが権限で保護されている機能にアクセスする必要がある場合は、マニフェストの<uses-permission>
要素でその権限が必要であることを宣言する必要があります。次に、アプリケーションがデバイスにインストールされると、インストーラーは、アプリケーションの証明書に署名した機関をチェックし、場合によってはユーザーに問い合わせることによって、要求された許可を与えるかどうかを決定します。また、アプリケーションは、独自のコンポーネント(アクティビティ、サービス、ブロードキャストレシーバ、およびコンテンツプロバイダ)をアクセス許可で保護することもできます。 Androidで定義された権限(android.Manifest.permissionにリストされている権限)を使用することも、他のアプリケーションによって宣言された権限を使用することもできます。それは独自のものを定義することもできます。
<?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>
次に、 app/src/main/res/layout/
あるactivity_main.xml
を開きapp/src/main/res/layout/
。このファイルには、MainActivityのビジュアルコンポーネントの宣言が含まれています。ビジュアルデザイナーが表示されます。これにより、要素をドラッグして選択したレイアウトにドロップできます。
Android Studioの下部にある[テキスト]をクリックすると、XMLレイアウトデザイナーに切り替えることもできます。
<?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>
このレイアウト内にTextView
というウィジェットが表示され、 android:text
プロパティが「Hello World!」に設定されていandroid:text
。これは、ユーザーがアプリケーションを実行するときにユーザーに表示されるテキストブロックです。
次に、 MainActivity
見てみましょう。これはMainActivity
用に生成されたJavaコードです。
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);
}
}
Androidマニフェストで定義されているように、 MainActivity
は、ユーザーがHelloWorld
アプリケーションを起動するとデフォルトで起動します。
最後に、 app/
あるbuild.gradle
という名前のファイルを開きます。
Android Studioは、ビルドシステムGradleを使用して、Androidアプリケーションとライブラリをコンパイルしてビルドします。
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'
}
このファイルには、ビルドとアプリケーションのバージョンに関する情報が含まれています。また、このファイルを使用して外部ライブラリに依存関係を追加することもできます。今のところ、何も変更しないでください。
常に依存関係に使用できる最新のバージョンを選択することをお勧めします。
- buildToolsVersion :26.0.0
- com.android.support:appcompat-v7:26.0.0(2017年 7月)
- 火災基地 :11.0.4(2017年8月)
compileSdkVersion
compileSdkVersion
は、あなたのアプリをコンパイルするためのAndroid SDKのバージョンをGradleに伝える方法です。新しいAndroid SDKを使用するには、そのレベルで追加された新しいAPIを使用する必要があります。
compileSdkVersion
を変更しても実行時の動作は変更されないことに注意してください。 compileSdkVersion
変更すると、新しいコンパイラ警告/エラーが表示されることがありますが、 compileSdkVersion
はAPKには含まれていません。コンパイル時に純粋に使用されます。
したがって、常に最新のSDKでコンパイルすることを強くお勧めします。既存のコードに対する新しいコンパイルチェックの利点をすべて得て、新たに廃止予定のAPIを避け、新しいAPIを使用できるようにします。
minSdkVersion
compileSdkVersion
が利用できる最新のAPIを設定している場合、 minSdkVersion
はアプリの下限です。 minSdkVersion
は、Google Playストアがユーザーの端末のうちどれにアプリをインストールできるかを判断するために使用する信号の1つです。
また、開発中に重要な役割を果たします。デフォルトでは、lintはプロジェクトに対して実行され、 minSdkVersion
上のAPIを使用すると警告し、存在しないAPIを呼び出そうとする際の実行時の問題を回避します。新しいバージョンのプラットフォームでのみAPIを使用する場合は、実行時にシステムのバージョンを確認するのが一般的な方法です。
targetSdkVersion
targetSdkVersion
は、 targetSdkVersion
が更新されない限り、動作の変更を適用しないことによってAndroidが前方互換性を提供する主な方法です。これにより、動作の変更を処理する前に新しいAPIを使用することができます。最新のSDKをターゲットにするための更新は、すべてのアプリにとって最優先事項です。導入されたすべての新機能を使用する必要はなく、テストせずにtargetSdkVersion
を盲目的に更新する必要はありません。
targetSDKVersionは利用可能なツールの上限であるAndroidのバージョンです。 targetSDKVersionが23未満の場合、アプリがAPI 23以上で実行されている場合でも、アプリはインスタンスの実行時にアクセス権をリクエストする必要はありません。 TargetSDKVersionは、選択したAndroidバージョンを超えるAndroidバージョンがアプリを実行することを妨げません 。
Gradleプラグインの詳細は次のとおりです。
アプリケーションの実行
では、HelloWorldアプリケーションを実行しましょう。 Android仮想デバイス(以下の例で説明するAndroidスタジオのAVDマネージャを使用して設定できます)を実行するか、USBケーブルを使用してAndroidデバイスを接続します。
Android搭載端末の設定
AndroidデバイスのAndroidスタジオからアプリケーションを実行するには、デバイスの設定でDeveloper Options
でUSB Debugging
を有効にする必要があります。
Settings > Developer options > USB debugging
Developer Options
が設定に表示されていない場合は、 About Phone
)に移動し、 Build Number
7回タップします。これにより、 Developer Options
に表示されます。
Settings > About phone > Build number
また、デバイスにあるバージョンをビルドするためにbuild.gradle
設定を変更する必要があるかもしれません。
Android Studioから実行する
Android Studioの上部にあるツールバーの緑色の「 Run
ボタンをクリックします。表示されるウィンドウで、アプリケーションを実行するデバイスを選択します(必要に応じてAndroid仮想デバイスを起動するか、 設定する必要がある場合はAVD(Android仮想デバイス)を設定するを参照)。[ OK
]をクリックします。
Android 4.4(KitKat)以上のデバイスでは、USBデバッグを許可するポップアップが表示されます。 OK
をクリックして受け入れます。
アプリケーションがAndroidデバイスまたはエミュレータにインストールされ、実行されます。
APKファイルの場所
リリース用にアプリケーションを準備するときは、アプリケーションのリリースバージョンを構成、構築、およびテストします。設定作業は簡単で、基本的なコードクリーンアップとアプリケーションの最適化に役立つコード変更作業が含まれています。ビルドプロセスは、デバッグビルドプロセスと似ており、JDKおよびAndroid SDKツールを使用して実行できます。テストタスクは最終的なチェックとして機能し、アプリケーションが実際の状況下で期待どおりに機能することを保証します。リリースのためのアプリケーションの準備が完了すると、署名済みのAPKファイルが作成されます。このファイルは、ユーザーに直接配布したり、Google Playなどのアプリケーションマーケットプレイスで配布することができます。
Androidスタジオ
上記の例では、Gradleが使用されているため、生成されたAPKファイルの<Your Project Location>/app/build/outputs/apk/app-debug.apk
は次のとおりです。 <Your Project Location>/app/build/outputs/apk/app-debug.apk
IntelliJ
Studioに切り替える前にIntelliJを使用していて、IntelliJプロジェクトを直接インポートしている場合は、何も変更されません。アウトプットの場所は以下の通りです:
out/production/...
注:これは時々1.0のまわりで非難される
Eclipse
Android Eclipseプロジェクトを直接インポートする場合は、これを行わないでください!プロジェクト(jarsまたはLibrary Projects)に依存するとすぐに、これは機能せず、プロジェクトは適切にセットアップされません。依存関係がない場合、apkはEclipseで見つけられるのと同じ場所にあります:
bin/...
IDEを使用しないAndroidプログラミング
これは、最も基本的なAndroidツールのみを使用する、最小限のHello Worldの例です。
要件と前提条件
- Oracle JDK 1.7以降
- Android SDKツール( コマンドラインツールのみ )
この例では、Linuxを想定しています。独自のプラットフォームの構文を調整する必要があるかもしれません。
Android SDKの設定
SDKリリースの開梱後:
SDKマネージャを使用して追加パッケージをインストールします。バンドルされたReadme.txtの指示に従って、
android update sdk --no-ui
を使用しないでください。不要なファイルを約30 GBダウンロードします。代わりに、インタラクティブなSDKマネージャーandroid sdk
を使用して、パッケージの推奨最小値を取得してください。次のJDKおよびSDKディレクトリを実行PATHに追加します。これはオプションですが、以下の手順で想定しています。
- JDK / bin
- SDK /プラットフォームツール
- SDK /ツール
- SDK / build-tools / LATEST (手順1でインストールしたもの)
Android仮想デバイスを作成します。インタラクティブなAVDマネージャ(
android avd
)を使用してください。ちょっと手間をかけてアドバイスを探す必要があるかもしれません。 オンサイトの指示は必ずしも有用ではありません。(自分のデバイスを使用することもできます)
デバイスを実行します。
emulator -avd DEVICE
デバイスの画面がロックされているように見える場合は、スワイプしてロックを解除します。
アプリをコーディングしている間は実行しておいてください。
アプリをコーディングする
空の作業ディレクトリに変更します。
ソースファイルを作成する:
mkdir --parents src/dom/domain touch src/dom/domain/SayingHello.java
コンテンツ:
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 ); } }
マニフェストを追加する:
touch AndroidManifest.xml
コンテンツ:
<?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>
宣言されたリソースのサブディレクトリを作成します。
mkdir res
今は空にしておいてください。
コードの作成
リソース宣言のソースを生成します。ここでは、 SDKへの正しいパスと、ビルドするためにインストールされたAPI (「android-23」など)を置き換えます。
aapt package -f \ -I SDK/platforms/android-API/android.jar \ -J src -m \ -M AndroidManifest.xml -S res -v
リソース宣言(以下でさらに説明する)は、実際はオプションです。 res /がまだ空の場合、上記の呼び出しは何もしません。
ソースコードをJavaバイトコード(.java→.class)にコンパイルする:
javac \ -bootclasspath SDK/platforms/android-API/android.jar \ -classpath src -source 1.7 -target 1.7 \ src/dom/domain/*.java
バイトコードをJavaからAndroidに変換する(.class→.dex):
まずJill(.class→.jayce)を使って:
java -jar SDK/build-tools/LATEST/jill.jar \ --output classes.jayce src
その後、ジャック(.jayce→.dex):
java -jar SDK/build-tools/LATEST/jack.jar \ --import classes.jayce --output-dex .
Androidバイトコードは「Dalvik実行可能コード」と呼ばれていたので、「dex」です。
あなたが好きなら、ステップ11と12をジャックへの1回の呼び出しで置き換えることができます。 Javaソース(.java→.dex)から直接コンパイルできます。しかし、
javac
コンパイルすることには利点があります。よりよく知られており、よりよく文書化され、より広く適用可能なツールです。マニフェストを含むリソースファイルをパッケージ化します。
aapt package -f \ -F app.apkPart \ -I SDK/platforms/android-API/android.jar \ -M AndroidManifest.xml -S res -v
その結果、部分的なAPKファイル(Androidアプリケーションパッケージ)が生成されます。
ApkBuilder
ツールを使用して完全なAPKをApkBuilder
ます。java -classpath SDK/tools/lib/sdklib.jar \ com.android.sdklib.build.ApkBuilderMain \ app.apkUnalign \ -d -f classes.dex -v -z app.apkPart
これは警告されています。 "このツールは推奨されていません。詳細は--helpを参照してください。"
--help
がArrayIndexOutOfBoundsException
で失敗したArrayIndexOutOfBoundsException
、代わりに引数を渡しません:java -classpath SDK/tools/lib/sdklib.jar \ com.android.sdklib.build.ApkBuilderMain
これは、CLI(
ApkBuilderMain
)がJava API(ApkBuilder
)を直接呼び出すために非難されることを説明しています。 (コマンドラインからそれを行う方法がわかっている場合は、この例を更新してください)。APKのデータアライメントを最適化する( 推奨される方法 ):
zipalign -f -v 4 app.apkUnalign app.apk
インストールと実行
Android搭載端末にアプリをインストールする:
adb install -r app.apk
アプリを起動する:
adb shell am start -n dom.domain/.SayingHello
それは実行し、こんにちは言う必要があります。
それで全部です。それは基本的なAndroidツールを使ってこんにちはと言うのです。
リソースの宣言
このセクションはオプションです。単純な "hello world"アプリケーションでは、リソース宣言は必要ありません。あなたのアプリケーションにも必要でない場合は、ステップ10を省略し、ステップ13からのres /ディレクトリへの参照を削除することで、いくらかのビルドを合理化することができます。
それ以外の場合は、リソースを宣言する方法とその参照方法の簡単な例を示します。
リソースファイルを追加する:
mkdir res/values touch res/values/values.xml
コンテンツ:
<?xml version='1.0'?> <resources> <string name='appLabel'>Saying hello</string> </resources>
XMLマニフェストからリソースを参照します。これは宣言的な参照スタイルです。
<!-- <application a:label='Saying hello'> --> <application a:label='@string/appLabel'>
Javaソースから同じリソースを参照してください。これは必須の参照です:
// v.setText( "Hello world" ); v.setText( "This app is called " + getResources().getString( R.string.appLabel ));
アプリを再構築、再インストール、再実行して、上記の変更をテストします(手順10〜17)。
それは再起動し、 "このアプリは、こんにちはと言われています"と言う必要があります。
アプリのアンインストール
adb uninstall dom.domain
も参照してください
アプリケーションの基礎
AndroidアプリはJavaで書かれています。 Android SDKツールは、コード、データ、およびリソースファイルをAPK(Androidパッケージ)にコンパイルします。一般に、1つのAPKファイルにはアプリのすべてのコンテンツが含まれています。
それぞれのアプリは独自の仮想マシン(VM)上で動作し、アプリを他のアプリから隔離して実行できます。 Androidシステムは最小特権の原則で動作します。各アプリケーションは、作業を行うために必要なコンポーネントだけにアクセスできます。しかし、アプリ間でLinuxユーザーIDを共有するなど、アプリが他のアプリとデータを共有する方法や、アプリがSDカード、連絡先などのデバイスデータにアクセスする許可をリクエストすることができます。
アプリコンポーネント
アプリコンポーネントは、Androidアプリのビルディングブロックです。それぞれのコンポーネントは、明確な目的を果たし、明確なライフサイクル(コンポーネントが作成され、破壊された方法とタイミング)を持つAndroidアプリで特定の役割を果たします。 4種類のアプリコンポーネントがあります:
- アクティビティ:アクティビティは、ユーザーインターフェイス(UI)を持つ単一の画面を表します。 Androidアプリに複数のアクティビティがある可能性があります。 (例えば、電子メールアプリは、すべての電子メールをリストする1つのアクティビティ、各電子メールの内容を表示するアクティビティ、新しい電子メールを作成するアクティビティを1つずつ持つことができます)。
- サービス:サービスはバックグラウンドで実行され、長時間実行される操作を実行したり、リモートプロセスの作業を実行したりします。サービスはUIを提供せず、バックグラウンドでのみユーザーの入力で実行されます。 (例えば、ユーザーが別のAppにいる間にサービスがバックグラウンドで再生されたり、Androidデバイスとのユーザーのやりとりを妨げることなくインターネットからデータをダウンロードするなど)。
- コンテンツプロバイダ:コンテンツプロバイダは共有アプリケーションデータを管理します。アプリケーションにデータを保存するには4つの方法があります:ファイルに書き込んでファイルシステムに保存したり、SQLiteデータベースに挿入または更新したり、ウェブに投稿したり、アプリケーションがアクセスできる他の永続的な保存場所に保存することができます。コンテンツプロバイダーを通じて、他のAppsはデータの照会や変更を行うことができます。 (例えば、Androidシステムは、ユーザの連絡先情報を管理するコンテンツプロバイダを提供し、権限を持つ任意のアプリケーションが連絡先に問い合わせることができます。)コンテンツプロバイダは、データの整合性を高めるために、アプリケーション専用のデータを保存するためにも使用できます。
- 放送受信機:放送受信機は、システム全体の放送に応答する(例えば、画面が消えたこと、電池が残っていることなどを知らせる放送)、またはAppsから応答する(例えば、他のアプリケーションに、デバイスにダウンロードされ、使用できるようになります)。ブロードキャスト受信者にはUIはありませんが、ステータスバーに通知を表示してユーザーに警告することができます。通常、放送受信機は、アプリの他のコンポーネントへのゲートウェイとして使用され、主にアクティビティやサービスから構成されます。
Androidシステムのユニークな側面の1つは、どのアプリも別のアプリのコンポーネントを起動できることです(たとえば、電話をかけたり、SMSを送信したり、ウェブページを開いたり、写真を表示したい場合は、同じタスクのための新しいアクティビティを開発する代わりに、それを利用する)。
システムがコンポーネントを起動すると、そのアプリケーションのプロセスが開始されます(まだ実行されていない場合、つまり、Androidシステム上ではいつでもアプリケーションごとに1つのフォアグラウンドプロセスしか実行できません)。したがって、コンポーネントはそれが属するAppのプロセス上で実行されます。したがって、他のシステムのアプリとは異なり、Androidアプリには1つのエントリポイントがありませんmain()
メソッドはありません)。
システムは各アプリケーションを別々のプロセスで実行するため、1つのアプリで別のアプリのコンポーネントを直接アクティブ化することはできませんが、Androidシステムでは可能です。したがって、別のアプリケーションのコンポーネントを起動するには、1つのアプリケーションが、そのコンポーネントを起動する意図を指定するメッセージをシステムに送信しなければなりません。システムは、そのコンポーネントを起動します。
コンテキスト
クラスandroid.content.Context
インスタンスは、アプリケーションを実行するAndroidシステムへの接続を提供します。コンテキストのインスタンスは、プロジェクトのリソースとアプリケーションの環境に関するグローバルな情報にアクセスするために必要です。
簡単な例を挙げましょう:あなたはホテルにいると考えて、何か食べたいと思っています。あなたはルームサービスに電話をして、物事を持って来るか、物事をきれいにするよう依頼します。今ではこのホテルをAndroidアプリとして考えています。自分自身をアクティビティと呼んでいます。ルームサービスの人は、ルームサービス、食料品などのホテルリソースへのアクセスを提供するコンテキストです。
さらに別の例として、あなたはテーブルに座っているレストランにいて、各テーブルにはアテンダントがいます。アテンダントがあなたの注文を出し、あなたの食べ物があなたのテーブルに仕込まれます。この例でも、レストランはAndroid App、テーブルまたは顧客はAppコンポーネント、食品アイテムはAppリソース、アテンダントはコンテキストなので、食品アイテムなどのリソースにアクセスする方法を提供します。
上記のコンポーネントのいずれかを有効にするには、コンテキストのインスタンスが必要です。上記だけでなく、ほぼすべてのシステムリソース:ビュー(後述)を使用したUIの作成、システムサービスのインスタンスの作成、新しいアクティビティやサービスの開始 - はすべてコンテキストを必要とします。
AVD(Android仮想デバイス)の設定
TL; DR実際には、実際のデバイスをシミュレートし、実際のデバイスなしでアプリをテストすることができます。
Android仮想デバイス(AVD)定義では、AndroidエミュレータでシミュレートするAndroid Phone、Tablet、Android Wear、またはAndroid TVデバイスの特性を定義できます。 AVDマネージャを使用すると、AVDを簡単に作成および管理できます。
AVDを設定するには、次の手順を実行します。
1.このボタンをクリックすると、AVD Managerが起動します。
2.次のようなダイアログが表示されます。
3. [ + Create Virtual Device...
]ボタンをクリックします。これにより、Virtual Device Configuration Dialogが表示されます。
4.必要なデバイスを選択し、[ Next
]をクリックします。
5.エミュレータのAndroidバージョンを選択する必要があります。また、クリックして最初にそれをダウンロードする必要があるかもしれませんDownload
。バージョンを選択したら、[ Next
]をクリックします。
6.ここでは、エミュレータの名前、初期の方向、およびフレームの周りにフレームを表示するかどうかを入力します。これらをすべて選択したら、[ Finish
]をクリックします。
7.これであなたのアプリを起動するための新しいAVDが用意されました。