Androidアプリ制作のためのリンク集（初心者用）

最近Androidアプリの開発を初めて参考サイトが多くなったので自分用に作成したリンク集です

# Android
- [Android Developers（公式） - TOP](https://developer.android.com/index.html?hl=ja)・・・かなり詳しく記載されている
- [Android Developers（公式） - 開発 > APIガイド](https://developer.android.com/guide/index.html?hl=ja)・・・機能を最初に把握するにはここが良い、日本語資料が多い
- [Android Developers（公式） - 開発 > リファレンス](https://developer.android.com/reference/packages.html?hl=ja) APIの一覧、全て英語
- [書籍 - はじめてのAndroidアプリ開発 第2版 Android Studio 2対応](https://www.amazon.co.jp/dp/B075WPQX5L/ref=as_li_ss_tl?_encoding=UTF8&btkr=1&linkCode=ll1&tag=sukeshunkato-22&linkId=e42cdc2d90585aced5656459c763bcd7)・・・個人的に使っている本

# Android Studio
- [Android Studio（公式） - TOP](https://developer.android.com/studio/index.html?hl=ja)
- [Qiita - Android Studioで覚えておくと便利なこと](https://qiita.com/sugoi_wada/items/db449d5cbb5c83cb586c)
- [Qiita - Androidアプリの.gitignore](https://qiita.com/jumperson/items/fa66995fb68de2847ffd)

# Java
- [Java7 公式リファレンス](https://docs.oracle.com/javase/jp/7/api/)・・・現在のAndroidはJava7.0が使用されている（一部使用できないものあり）
- [JavaDrive - Java入門](https://www.javadrive.jp/start/)・・・分かりやすい入門サイト
- [書籍 - スッキリわかるJava入門 第2版](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/4844330861/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=sukeshunkato-22&linkId=fa4756774f2ab2fb7aa6cb41fdf4d0f1)
- [書籍 - スッキリわかる Java入門 実践編 第2版](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8B-Java%E5%85%A5%E9%96%80-%E5%AE%9F%E8%B7%B5%E7%B7%A8-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4844336770/ref=as_li_ss_tl?_encoding=UTF8&psc=1&refRID=AQGEKDHM4865QAP89H80&linkCode=ll1&tag=sukeshunkato-22&linkId=9f8428155b8b9c0eaa30eca514150864)

# JUnit（ユニットテスト）
- [JUnit4（公式） - TOP](http://junit.org/junit4/)・・・英語
- [JUnit4（公式） - リファレンス（JavaDocs）](http://junit.org/junit4/javadoc/latest/index.html)・・・AndroidはまだJUnit4.0（5.0ではない）、英語

# Gradle（ビルドツール）
- [Gradle公式（英語）- TOP](https://gradle.org/)
- [Gradleドキュメント（日本語） - TOP](http://gradle.monochromeroad.com/docs/)
- [Qiita - Gradle入門](https://qiita.com/vvakame/items/83366fbfa47562fafbf4)
- [Qiita - Groovyを知らない人のためのbuild.gradle読み書き入門](https://qiita.com/opengl-8080/items/a0bb31fb20cb6505188b)
- [Qiita - Android Studioでの外部ライブラリの読み込み方と注意点](https://qiita.com/icchi_h/items/8ce738ce8511ef69c799)

# Twitter API
- [github - scribejava/scribejava](https://github.com/scribejava/scribejava)・・・JavaのOAuth1.0&2.0のライブラリ。**現在使用中**。とてもシンプルで使いやすい。各有名APIごとに[コードサンプル](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)がありFacebookなどでも利用できる。
- [Twitter4J - TOP](http://twitter4j.org/ja/index.html)・・・Javaで一番有名なTwitterAPIライブラリ。APIのURLを直接指定することは出来ないっぽい（たぶん）ため柔軟性には欠ける。
- [Qiita - Android再入門 - Twitterクライアントを作ってみよう - 目次](https://qiita.com/gabu/items/70689560618f8e67e726)・・・Twitter公式での登録、Twitter4Jによる実装の解説。入門。
- [Application Management（公式）](https://apps.twitter.com/)・・・Twitter API
 公式（英語）。アプリケーションの登録や設定などを行う管理ページ。
- [Androidアプリでの連携認証でTwitter OAuth callback URLのホワイリスト化に対応する] (https://qiita.com/moko256/items/f670e5f234639e8815e8)・・・CallbackUrlはここに記載されている「yourapp://」だけでなく「(好きな文字列)://」でも可能。「//」のあとに文字列が入るとNG。

- [Twitter Developer（公式） - Tweet data dictionaries > entities-object](https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/entities-object)・・・戻り値のJSONのentitiesオブジェクトの解説

# Preference（設定）関連
- [Qiita - SharedPreferencesの使い方(基礎編)](https://qiita.com/YAmi/items/3e5640f365277d70f255) ・・・凄く分かりやすい記事
- [Android Developers（公式） - 開発 > API ガイド > ユーザー インターフェース > 設定](https://developer.android.com/guide/topics/ui/settings.html?hl=ja)・・・基本的な設定まわりの説明から独自のカスタムプリファレンスの解説まで。ここのサンプルコードの実装をほぼそのまま使うのがよい。

# データベース（SQLite）
- [Android Developers（公式） - コンテンツ プロバイダ](https://developer.android.com/guide/topics/providers/content-providers.html?hl=ja)
- [Qiita - Android端末のデータベース（SQLite）の中身を簡単に見る方法](https://qiita.com/suke/items/c8084ad24cff39aa5d0c)
- [DBOnline - SQLite入門](https://www.dbonline.jp/sqlite/)
- [DBOnline - DB Browser for SQLiteの使い方](https://www.dbonline.jp/sqlite-db-browser/)・・・GUIツール

# 非同期処理

- [Qiita - Androidの非同期処理の話](https://qiita.com/glayash/items/60546794f83fd7a0f271)・・・整理されていて凄い分かりやすい（Thread、AsyncTask、AsyncTaskLoader、IntentService、Fragmentの使い分けなど）
- [nyan のアプリ開発 - \[Android\] 非同期処理 AsyncTaskの使い方](https://akira-watson.com/android/asynctask.html)・・・AsyncTaskで「This field leaks a context object」などのエラーが出たときの対処方
- [Qiita - 幸せな非同期処理ライフを満喫するための基礎から応用まで](https://qiita.com/KeithYokoma/items/4e6e9bd4e44aab63424d)・・・非同期処理の基本からPromiseのライブラリ紹介まで

※自分が元々、言語特性自体が非同期であるJavaScriptに慣れていたため、Javaの非同期処理自体勘違いしていました。Java自体は同期処理の言語。While文をループしている（ルーパー）、別スレッドによる処理によって非同期処理を実装していた。よって無理にJavaScriptみたいに書かなくて良くて、単純はな処理だと下記のライブラリは不要である。コードが複雑になったときに使えば良い。

- [Git Hub - jdeferred/jdeferred](https://github.com/jdeferred/jdeferred)・・・非同期処理のJavaライブラリ。JavaScriptのjQueryのdeferredみたいな感じで使える（現在使用中）
- [Qiita - Androidの非同期処理を綺麗に書けるjdeferredが便利！](https://qiita.com/chuross/items/6a572c34189c24f5ea5e)・・・↑のライブラリの使い方が書いてある
- [Git Hub -ReactiveX/RxJava](https://github.com/ReactiveX/RxJava)・・・非同期処理のJavaライブラリ。一番使われているが学習コストが高め（自分は2～3時間見ても使い方が分からなかった）

#通知
- [Qiita - 複数のActivityをスタックさせて通知する、Notifiationの通知から削除まで](https://qiita.com/sutchan/items/16edc51fbdb3dbc3a027)

# ツールバー（アクションバー、ナビゲーション、ドロワー）
- [Qiita - MaterialDesignことはじめ ActionBar編](https://qiita.com/androhi/items/f12b566730d9f951b8ec)・・・アクティビティの上部にあるバーの説明。昔はActionBar、今はToolBarだった（正確には違うが）などの説明など。
- [Qiita - [Android]ActionBar のタイトルの文字色を変更する](https://qiita.com/wada811/items/4e6710b514c0a4e7aceb)・・・アクションバーの色変えるのにハマったけど、これ見て解決した
- [Qiita - ActionBarにThemeを反映できないときに気をつけるところ](https://qiita.com/tanukiti1987/items/eeed47208a3f0180d6fc)


# デザイン・レイアウト
- [Android Developers（公式） - GUIDES > Core topics > User interface & navigation > Layouts](https://developer.android.com/guide/topics/ui/declaring-layout)・・・公式のレイアウトのドキュメント
- [Qiita - 【Android】いまさら聞けないdp入門](https://qiita.com/nein37/items/0a92556a80c6c14503b2)・・・スマホやタブレット画面のdpサイズなどが載っている
- [Android Developers（公式） - 開発 > API ガイド > ユーザー インターフェース > スタイルとテーマ](https://developer.android.com/guide/topics/ui/themes.html?hl=ja)
- [Qiita - 【デザイナー向け】これからAndroidのデザインをする人へ](https://qiita.com/AAkira/items/02814f337f4eb2d30f2e)
- [Qiita - アプリ開発する時に捗るマテリアルデザインアイコンまとめ](https://qiita.com/konifar/items/1233624d6628af8dc1b5)
- [Qiita - AndroidでSVGを画像としてImageViewに表示する(Support Library 26編)](https://qiita.com/wakwak/items/787306c92ef6c0a10a20#_reference-1071ef8c1b7576a0b36f)
- [3分で分かる？Android OのAdaptive Iconに対応しよう](https://qiita.com/takahirom/items/696fb5ecaa230fa8f755)
- [Android Asset Studio](https://romannurik.github.io/AndroidAssetStudio/index.html)・・・pngから各解像度向けのアイコンを自動で作成してくれたりなど

# アプリの公開（リリース）
- [Google Play Console（公式） - Top](https://play.google.com/apps/publish/)・・・アプリ公開や設定などをする場所

グーグルプレイでの公開URLの場所は下記からたどれる
全てのアプリ（TOP）画面からアプリを選択
　↓
左端メニューから「リリースの管理→アプリのリリース」
　↓
「製品版を管理」or「ベータ版を管理」or「アルファ版を管理」
　↓
「テスターの管理」の右端の「▼」ボタン
　↓
「オプトインURL」

- [Qiita - Androidで署名付きapkを作成する](https://qiita.com/mfks17/items/c38d3713cb5b2c5536ff)
- [Qiita - Android Studio 2.3ではAPK作成時にSignature Versionsを選ぶ必要がある](https://qiita.com/ntsk/items/ce655a804654dac33d73)

# 広告
- [AdMob](https://www.google.co.jp/admob/)・・・googleの広告
- [Google AdMob > Mobile Ads SDK](https://developers.google.com/admob/)・・・上記AdMobのDeveloperサイト、開発用の実装例などが掲載されている
- [Google AdMob > Mobile Ads SDK > Android](https://developers.google.com/admob/android/quick-start)・・・上記AdMob DevelooperのAndroid用のページ
- [アプリマーケティング研究所 - ](https://appmarketinglabo.net/nagisa-videoads/)・・・動画アドネットワーク「FIVE」
- [Qiita - 【Android】「ネイティブ エクスプレス広告フォーマットのサポート終了のお知らせ」に、バナー広告ユニットでなんとか対応する案](https://qiita.com/CUTBOSS/items/dc720645f3f2127487d7)


# その他
- [github - nostra13/Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader)・・・画像ローダーのライブラリ、http://やfile://など色々読み込めて凄く便利
- [Qiita - Androidの画像読み込みライブラリUniversal Image Loader for Androidがすごい便利](https://qiita.com/chuross/items/e3ca79065d9b67716ace)
- [Ascend Mate7(Huawei端末)でlogcatを表示できるようにする](https://qiita.com/gari_jp/items/73f2a3b1ff7da6bd344d)・・・多くのHuawei端末がこれでできる
- [Android Developers（公式） - アプリケーション ID の設定](https://developer.android.com/studio/build/application-id.html?hl=ja)・・・アプリケーションIDとパッケージ名の解説、変更の仕方など
- [Qiita - 【AndroidStudio】パッケージ名を変更してみた](https://qiita.com/kuma_hati_laboratory/items/03c2ed9819214f1b1ad9)
- [Androidアプリ開発で取り返しがつかないことまとめ](https://qiita.com/ryo_mm2d/items/6da55b7801863562e7b3)