カットの下に、Eclipseを使用してAndroidアプリケーションを作成するプロセスを説明する彼の記事の翻訳があります。 Eclipse 3.6、Java 1.6、およびAndroid 2.3(Gingerbread)を使用します。
パート2
1. Android開発
1.1。 Androidオペレーティングシステム
Androidは、Javaプログラミングインターフェイスを備えたLinuxベースのオペレーティングシステムです。 これにより、コンパイラー、デバッガー、デバイスエミュレーターなどのツールと、(Android)Java仮想マシン(Dalvik Virtual Machine-DVM)が提供されます。 Androidは、Googleが率いるOpen Handset Allianceによって作成されました。
Androidは、Dalvik Virtual Machineと呼ばれる特別な仮想マシンを使用します。 Dalvikは独自の特別なバイトコードを使用します。 したがって、Androidで標準のJavaバイトコードを実行することはできません。 Androidには「dx」ツールがあり、Javaクラスファイルを「dex」(Dalvik実行可能)ファイルに変換できます。 Androidアプリケーションは、aapt(Android Asset Packaging Tool)プログラムによって.apk(Androidパッケージ)ファイルにパッケージ化されています開発を簡素化するために、GoogleはEclipse用のAndroid開発ツール(ADT)を提供しています。 ADTはJavaクラスファイルからdexファイルに自動的に変換し、展開中にapkを作成します。
Androidは、OpenGLライブラリを使用して2Dおよび3Dグラフィックをサポートし、SQLiteデータベースにデータを保存します。
各Androidアプリケーションは、展開中にAndroidによって自動的に生成される独自のプロセスおよび独自のユーザーIDで実行されます。 そのため、アプリケーションは他の実行中のアプリケーションから分離され、誤動作しているアプリケーションが他のAndroidアプリケーションを妨げられることはありません。
1.2。 Androidの主要コンポーネント
Androidアプリケーションは、次の部分で構成されています。
- アクティビティ /アクティビティ(以降Activitiと呼びます)-Androidアプリケーションの表現スキームです。 たとえば、ユーザーに表示される画面。 Androidアプリケーションには複数のアクティベーションがあり、実行時に切り替えることができます。
- ビュー -「android.view.View」から継承されたクラスのウィジェットによって作成されたアクティビティユーザーインターフェイス。 ビュースキーマは、「android.view.ViewGroups」を介して管理されます。
- サービス -ユーザーインターフェイスを提供せずにバックグラウンドタスクを実行します。 Android通知システムを介してユーザーに通知できます。
- コンテンツプロバイダー -アプリケーションが他のアプリケーションとデータを交換できるコンテンツプロバイダーの助けを借りて、アプリケーションにデータを提供します。 Androidには、コンテンツプロバイダーであるSQLiteデータベースが含まれています。
- インテント (以下、インテントと呼びます)は、アプリケーションが他のサービスまたはアクティベーションから機能を要求できるようにする非同期メッセージです。 アプリケーションは、サービスまたはアクティビティに直接的な意図(明示的な意図)を行うことも、Androidに登録されたサービスおよびアプリケーションからの意図的な要求(暗黙的な意図)を行うこともできます。 たとえば、アプリケーションは意図的にデバイスの連絡先アプリケーション(電話/アドレス帳)から連絡先を要求できます。 アプリケーションは、IntentFilterを通じてインテントに自身を登録します。 インテントは、疎結合アプリケーションを作成できる強力な概念です。
- ブロードキャストレシーバー /ブロードキャストレシーバー(以下、単にレシーバーと呼びます)-システムメッセージと暗黙的なインテントを受信し、システムステータスの変化に対応するために使用できます。 アプリケーションは、特定のイベントの受信者として登録でき、そのようなイベントが発生した場合に起動できます。
Androidの他の部分は、ウィジェット、ライブフォルダー(ライブフォルダー)、またはライブ壁紙(ライブ壁紙)です。 ライブフォルダーは、対応するアプリケーションを起動せずに、「デスクトップ」上のデータのソースを表示します。
1.3。 セキュリティと許可
Androidは、特定のタスクに特定の権限を定義します。 たとえば、アプリケーションがインターネットにアクセスする場合、適切なアクセス許可を取得することを構成ファイルで決定する必要があります。 Androidアプリケーションのインストール中、ユーザーには、アプリケーションに必要な権限を与える必要がある画面が表示されます。
1.4。 AndroidManifest.xml
Androidアプリケーションは、AndroidManifest.xmlファイルによって記述されます。 アプリケーションのすべてのアクティビティ、サービス、受信者、およびコンテンツプロバイダーは、これらのファイルで宣言する必要があります。 また、アプリケーションに必要な権限も含まれている必要があります。 たとえば、アプリケーションがネットワークへのアクセスを必要とする場合、ここで定義する必要があります。 「AndroidManifest.xml」は、Androidアプリケーションをデプロイするための説明と見なすことができます。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.vogella.android.temperature" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Convert" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="9" /> </manifest>
package属性は、次のJava要素の基本パッケージです。 また、一意でなければなりません。 Androidマーケットプレイスは、各「パッケージ」のアプリケーションを一度だけ受け入れます。 したがって、リバースドメイン名を「パッケージ」として使用して、他の開発者との競合を避けることをお勧めします。
「Android:versionName」および「android:versionCode」は、アプリケーションのバージョンを決定します。 「VersionName」はユーザーに表示されるもので、任意の文字列を使用できます。 「versionCode」はそのままである必要があり、Androidマーケットはこれを使用して、アプリケーションがインストールされているデバイスで更新を実行するための新しいバージョンを提供したかどうかを判断します。 原則として。 1から始まり、アプリケーションの新しいバージョンをリリースすると1ずつ増加します。
「アクティビティ」はアクティビティを定義します。この例では、「de.vogella.android.temperature.Convert」クラスを指します。 このクラスにはインテントフィルターが登録されており、アプリケーションの起動時にこのアクティビティが開始されることを決定します(アクションandroid:name = "android.intent.action.MAIN")。 カテゴリ定義(category android:name =“ android.intent.category.LAUNCHER”)は、このアプリケーションがAndroidデバイスのアプリケーションディレクトリに追加されることを決定します。 @記号の付いた値は、現在の値を含むリソースファイルを指します。 これにより、さまざまなデバイスの文字列、色、アイコンなどのさまざまなリソースでの作業が簡単になり、アプリケーションの翻訳が簡単になります。
「AndroidManifest.xml」の「uses-sdk」部分は、アプリケーションを実行できるSDKの最小バージョンを定義します。 これにより、古いバージョンのSDKを使用したデバイスにアプリケーションをインストールできなくなります。
1.5。 R.java、リソースおよびアセット
Androidプロジェクトのgenディレクトリには、生成された値が含まれています。 「R.java」は、プロジェクトの「res」フォルダーからのリソースへのリンクを含む生成されたクラスです。 これらのリソースは「res」ディレクトリに含まれており、値、メニュー、図、アイコンまたは画像、またはアニメーションにすることができます。 たとえば、リソースは、特定の行を含む画像またはXMLファイルです。
新しいリソースを作成すると、対応するリンクが「R.java」に自動的に作成されます。 リンクは、int型の整数値(整数定数)です。Androidシステムは、対応するリソースにアクセスするためのメソッドを提供します。 たとえば、リンク識別子「R.string.yourString」の文字列にアクセスするには、getStringメソッド(R.string.yourString))を使用します。 「R.java」を手動で変更しないでください。
resディレクトリにはAndroidプラットフォームに既知の構造化された値が格納されますが、assetsディレクトリを使用して任意のデータを格納できます。 Javaでは、AssetsManagerおよびgetAssets()メソッドを介してこのデータにアクセスできます。
1.6。 アクティビティとレイアウト
アクティビティのユーザーインターフェイスは、レイアウトを使用して定義されます。 実行時、レイアウトは「android.view.ViewGroups」のインスタンスです。 レイアウトは、ユーザーインターフェイス要素、それらのプロパティ、および場所を定義します。 UI要素はandroid.view.Viewクラスに基づいています。 ViewGroup-ビューのサブクラス。 レイアウトには、UIコンポーネント(ビュー)または他のレイアウト(ViewGroups)が含まれる場合があります。 これはパフォーマンスに影響するため、ViewGroupsで子要素をあまりネストしないでください。
レイアウトは、JavaコードまたはXMLを使用して定義できます。 原則として、コンテンツを事前に知らない場合は、Javaコードを使用してレイアウトを生成します。 たとえば、レイアウトがインターネットから読んだコンテンツに依存する場合。
XMLベースのレイアウトは、「/ res / layout」フォルダー内のリソースファイルを使用して定義されます。 このファイルは、ビューのグループ(1.2節を参照)、ビュー、それらの関係、および個々のレイアウトの属性を定義します。 UI要素がJavaコードを使用してアクセスする必要がある場合、android:id属性を使用してUI要素に一意の識別子(id)を与えます。 UI要素に新しい識別子を割り当てるには、「@ + id / yourvalue」構成を使用します。 条件付きで、これは新しいid "yourvalue"を作成し、対応するUI要素に割り当てます。 後で、Javaコードで、findViewById(R.id.yourvalue)メソッドを使用してこれらのUI要素にアクセスできます。
XMLを介してレイアウトを定義すると、プログラムロジックがレイアウトの定義から分離され、デバイスごとに異なるレイアウトリソースを簡単に定義できるため、通常は推奨されます。 両方のアプローチを混在させることもできます。
1.7。 活動とライフサイクル
続行するには?
これは私の最初の大きな翻訳です。 私は建設的な批判を喜んでいます。