【初心者向け】Android公式ドキュメント　ガイド　アプリの基本１


プログラマーは公式ドキュメントを読まないといけない！とよく言われますが、
硬い文章に加えて、英語という壁もあり、なかなか捗らないものです。

なので、自分のためにもAndroid開発者が最初に読むであろうガイドドキュメントのあらまし、重要だと思うポイント、個人的な感想をまとめていきます。
（何段階かに分けます）

（公式ガイド）https://developer.android.com/guide/

---
#### 項目一覧
１．[概要](https://developer.android.com/guide/)
２．[初めてのアプリを作成する](https://developer.android.com/training/basics/firstapp/)
　　・[概要](https://developer.android.com/training/basics/firstapp/)
　　・[Android プロジェクトの作成](https://developer.android.com/training/basics/firstapp/creating-project)
　　・[アプリを実行する](https://developer.android.com/training/basics/firstapp/running-app)
　　・[簡単なユーザー インターフェースの作成](https://developer.android.com/training/basics/firstapp/building-ui)
　　・[別の Activity を開始する ](https://developer.android.com/training/basics/firstapp/starting-activity)
３．[アプリケーションの基礎](https://developer.android.com/guide/components/fundamentals/)

---
## １．概要
Androidとは
・モバイル端末でアプリやゲームをJavaでビルドできる環境（アプリケーション フレームワーク）を提供する
・Android APIも使って色んな機能が実装できる
・１つの画面（アクティビティ）は色んな画面から自由に結びつく
・カメラとかハードウェア特有の機能も使える
・端末の種類がいっぱいあるから画面サイズとか気を付ける
という基本的な説明。

## ２．初めてのアプリの作成
###〇概要
Android Studioで作成する。(https://developer.android.com/studio/)
だけど、インストール方法やjava、SDKの設定等は書いていないので、GoogleやQiitaとかで[AndroidStudio インストール]などで検索してAndroid Studioが使えるようにする必要あり。

###〇Android プロジェクトの作成
とりあえず、プロジェクトの作成方法とAndroid特有のファイルの説明がある。

`・app > java > com.example.myfirstapp > MainActivity.java`
アプリをビルドして実行すると、システムによりこの Activity のインスタンスが起動され、そのレイアウトが読み込まれる

`・app > res > layout > activity_main.xml`
activity の UI のレイアウト

`・app > manifests > AndroidManifest.xml`
アプリの基本的な特徴一覧

`・Gradle Scripts > build.gradle`
build（ソースを実行形式にする）用のgradle（設定ファイル）
Cで言うMakefileみたいなもの
2 つあり、1 つはプロジェクト用でもう 1 つは「アプリ」モジュール用
モジュールの build.gradle ファイルにコンパイル、ビルド方法が書いてある。

###〇Android アプリを実行する
実際の端末で実行とエミュレーターで実行する方法がある。

####・実際の端末で実行
メリット
 - 実際に自分の端末でどう見えて、どう動くのか確認できる
 - 操作しやすい

[デメリット]
 - USBのケーブルが必要
 - 転送に少し時間がかかる
 - 開発者モードにして、USBデバックを許可する必要あり
 - 携帯の設定のシステムのビルド番号を７回タップして、開発者オプションに入り、USBデバックを許可する

####・エミュレータで実行
[メリット]
 - 高スペックマシンだと反映がサクサク

[デメリット]
 - システムイメージをダウンロードする必要あり
 - IntelのCPU出ないと高速エミュレーターが動かないので、AMDとかだとかなり厳しい


###〇簡単なユーザー インターフェースの作成
はっきり言って、すごい分かりずらい説明。
作りたいレイアウトをネットに落ちているサンプルを見て、記録して、覚える
を繰り返していくと、アドリブでどんどん画面が作れるようになると思う。


それとstrings.xmlという文字列を保存するファイルもあるという内容。

###〇別の Activity を開始する
activity（1 画面のこと）から、他のactivity（他の画面）に移動する方法が書いてある。

- マニフェストに新しいactivity情報を追加する
- 新しいactivityを作成する
- 元のacitivityにIntentを作成する
- 情報を送りたければputExtra()を追加する

###〇Up ナビゲーションを追加する
アプリバーの Up ボタンをタップして親アクティビティに戻れるようにできる。
詳細は他の記事を見たほうが良い。

## ３．アプリケーションの基礎
AndroidアプリはJavaをコンパイルしてできる .apkという接尾語のファイル。
Linux上で動いて、権限等厳しくセキュリティが高い。

アプリには4つのコンポーネント（構成要素）がある。

- アクティビティ
  - 1つの画面のこと
- サービス
  - 長期間の操作や、バックグラウンドで動作する
- コンテンツ プロバイダ
  - 共有されているアプリデータを管理する　データベースとか
- ブロードキャスト レシーバー
  - 画面がオフになった、バッテリ残量が低い、写真が撮影されたなどを察知してアプリを動かす

一つ一つ掘り下げて書くと大変なので割愛。

####・コンポーネントをアクティベート（利用許可を出す）する
Androidは他のアプリのコンポーネントを直接アクティベートすることができるという話

アクティビティ、サービス、ブロードキャスト レシーバーはインテント（非同期メッセージ）によってアクティベートされる。
    アプリが画面に表示されていなくても、裏で起動していることもある。


####・マニフェスト ファイル
アプリの根本の設定を書き込むファイル

- パーミッションの設定
- APIレベルの設定
- カメラなどの機器を利用する宣言
- ライブラリの利用宣言（Googleマップライブラリ）
- コンポーネントの宣言方法
 - \<activity> アクティビティ用の要素
 - \<service> サービス用の要素
 - \<receiver> ブロードキャスト レシーバー用の要素
 - \<provider> コンテンツ プロバイダ用の要素


####・アプリのリソース
画像とかを別フォルダにおいて、R.drawabl.logといったように参照できる。
端末の向きやサイズによってリソースを使い分ける詳細は
https://developer.android.com/guide/components/fundamentals