つ部 Android Studio 勉強会 12/7
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

つ部 Android Studio 勉強会 12/7

  • 97 views
Uploaded on

12/7に行われたつ部Android Studio勉強会の資料です。口語で説明しているスライドはあまり説明がありません。

12/7に行われたつ部Android Studio勉強会の資料です。口語で説明しているスライドはあまり説明がありません。

More in: Software
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
97
On Slideshare
95
From Embeds
2
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 2

https://twitter.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Android Studio 勉強会 @sugoi_wada 12/7
  • 2. 自己紹介
  • 3. @sugoi_wada • 和田 太陽(わだ ひかる) • つ部副部長です • 任期は今日まで!! • 写真・年賀状販売してます • Werckerサポートしてます
  • 4. コミケ本
  • 5. Android Studio • About Android Studio • Tips and Tricks • Notice • Build Variantsを覚えて懇親会に行こう
  • 6. About Android Studio
  • 7. • IntelliJ IDEAベースの新しいIDE • Android公式 • Eclipse ADTより新しい機能がついて、改善されている • Gradleベースのビルドシステム • 様々なテンプレートのサポート • リッチなレイアウトエディタ • Lintツールで使いやすさ、バージョン対応などの問題を解決 • proguard適用、署名可能 • 複数のビルドタイプ・apk出力可能 • 複数のモジュール(プロジェクト)対応 • Google Cloud Servicesとの連携
  • 8. Gradleベースの ビルドシステム
  • 9. Gradle • Groovyというスクリプト言語で記述 • 複数のapk出力・複数のアプリケーション(モジュール)管 理ができる • 依存関係を管理できる • Android Studio 標準装備 • 新規プロジェクト生成時に一式ダウンロードしてくる • ビルド操作などは、裏でGradleが走っている
  • 10. 様々なテンプレートの サポート
  • 11. Revisions
  • 12. • Android Studio v1.0 RC1 (November 2014) • Android Studio v0.8.14 (October 2014) • Android Studio v0.8.6 (August 2014) • Android Studio v0.8.0 (June 2014) • Android Studio v0.5.2 (May 2014) • Android Studio v0.4.6 (March 2014) • Android Studio v0.4.2 (Jan 2014) • Android Studio v0.3.2 (Oct 2013) • Android Studio v0.2.x (July 2013) • Android Studio v0.1.x (May 2013)
  • 13. • Android Studio v1.0 RC1 (November 2014) • Android Studio v0.8.14 (October 2014) • Android Studio v0.8.6 (August 2014) • Android Studio v0.8.0 (June 2014) • Android Studio v0.5.2 (May 2014) • Android Studio v0.4.6 (March 2014) • Android Studio v0.4.2 (Jan 2014) • Android Studio v0.3.2 (Oct 2013) • Android Studio v0.2.x (July 2013) • Android Studio v0.1.x (May 2013) Beta Preview
  • 14. Android Studio vs. Eclipse ADT
  • 15. Migrating from Eclipse
  • 16. https:// developer.android.com/ sdk/installing/migrate.html
  • 17. 画面の説明
  • 18. Android SDK
  • 19. AVD Manager
  • 20. Sync Project with Gradle Files
  • 21. Run & Debug
  • 22. プロジェクト構成
  • 23. appモジュール (アプリ本体)
  • 24. SDK Managerでインストール済みのものを 指定すること
  • 25. これらは全て Project Stractureから 設定できる ※慣れた人は直接編集してOK
  • 26. プロジェクトを右クリック →Open Module Settings
  • 27. Notice
  • 28. プラグインを使って 便利機能を追加する
  • 29. Android Studio 1.0よ りアイコンが変わった
  • 30. APKファイルの場所
  • 31. APKの生成方法 Build > Generate Signed APK…から署名付きAPK を作成するか、生成したいモジュールをRunする
  • 32. HelloWorld/app/ build/outputs/apk/ ※ Android Studioからはこのディレクトリは見えない
  • 33. Automatically Build できない
  • 34. できません
  • 35. Build > Rebuild Project
  • 36. Gradleファイルを編集した らSyncしなければならない
  • 37. Sync Project with Gradle Files
  • 38. Gradleファイルをいじると出てくるこいつのここを押す
  • 39. 今まで正常に動いていたプロジェク トが、Android Studioをアップデー トしたらエラーを吐くようになった
  • 40. よくあることです
  • 41. 最近は減りましたが Canary Channel だとあるかも
  • 42. Channelを確認する • 設定画面へ • Android Studio > Preferences • File > Settings… • Updatesを確認
  • 43. 自分に適したものを選ぶ Stable Channel Beta Channel Dev Channel Canary Channel
  • 44. Build Variants
  • 45. Build Variant = Build Type + Product Flavor
  • 46. Build Variant = Build Type + Product Flavor
  • 47. Build Type • デバッグ用・デモ用・リリース用など • 用途に合わせたBuild Typeを設定できる • ビルド時の設定を分けるのに使うと良い • DebugとReleaseの2つがデフォルトで存在 • 手元でビルドするDebugとStoreに出すRelease • 自由に増やすことができる • Releaseビルドは署名をすることを強制するようになってた
  • 48. Build Type • こんな時に使う(知らない間に使っている) • デバッグ用はProguardかけたくないけど、リリース用 にはかけたい • デバッグ用には署名いらないけど、リリース用には署名 しなきゃリリースできないな • デバッグ用にはPackage名の語尾に.debugをつけたい • デバッグ用はGoogleAnalyticsに情報を送信したくない
  • 49. Build Type Build Type Proguard Sign App suffix GA Debug FALSE DEBUG .debug FALSE Release TRUE OWN TRUE
  • 50. Build Variant = Build Type + Product Flavor
  • 51. Product Flavor • 用途に合わせて様々な味付けができる • 無料/有料アプリ • ステージング/プロダクション環境 • API LEVELの異なる2種類のアプリ • を1つのプロジェクトで管理できる
  • 52. Build Variant = Build Type + Product Flavor
  • 53. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE
  • 54. Flavor Free Charge Build Type Debug Release Debug Release Uses Dev Store Dev Store App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ テスト用のアプリと、Storeアプリが両方入れられる Ad TRUE TRUE FALSE FALSE
  • 55. Flavor Free Charge Build Type Debug Release Debug Release Uses Dev Store Dev Store App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ テスト用のアプリと、Storeアプリが両方入れられる FreeDebugビルド com.example.helloworld.debug.free FreeReleaseビルド com.example.helloworld.free ChargeReleaseAd ビTRUE ルド com.TRUE example.FALSE helloworld.FALSE debug ChargeReleaseビルド com.example.helloworld
  • 56. Flavor Free Charge Build Type Debug Release Debug Release Uses Dev Store Dev Store App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ テスト用のアプリと、Storeアプリが両方入れられる 未署名のアプリを入れたまま、Storeアプリを入れようとして エラー吐かれることがなくなる Ad TRUE TRUE FALSE FALSE
  • 57. やってみよう
  • 58. まずはDebugビルド 特有の設定をする
  • 59. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE
  • 60. Flavor Free Charge Build DebugDebug ビRelease ルドのとDebug きは Type Release Uses 手元で アプリケーションIDの語尾に.debugをつける デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE
  • 61. アプリケーションのgradle のビルドファイルを開く
  • 62. app/build.gradle apply plugin: 'com.android.application' ... android { ... buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules. pro' } } }
  • 63. app/build.gradle apply plugin: 'com.android.application' ... android { ... buildTypes { debug { applicationIdSuffix ".debug" } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules. pro' } } }
  • 64. Flavor Free Charge Build DebugDebug ビRelease ルドのとDebug きは Type Release アプリ名の語尾にDebugをつける Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE
  • 65. app/srcの上で右クリック→New→Directory debug という名前のディレクトリを作成する
  • 66. app/src/debugの上で右クリック →New→Directory res という名前のディレクトリを作成する app/src/debug/resの上で右クリック →New→Directory values という名前のディレクトリを作成する
  • 67. app/src/main/res/values/strings.xml を app/src/debug/res/values/ にコピー
  • 68. app/src/debug/res/ values/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> 挿入 <string name="app_name">HelloWorldDebug</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> </resources> 削除
  • 69. DebugビルドとReleaseビ ルドの違いを確認してみる まずはDebugビルドを確認
  • 70. ②debugにする(なってる) ①Build Variants
  • 71. ③実行
  • 72. アプリ名がHelloWorldDebugになってる! (applicationIdはAndroid Studioからチェックできます)
  • 73. ②releaseにする ①Build Variants ③実行する
  • 74. 署名が無いので実行できない… (コマンドだとできるけど今回は省略) 急遽、Releaseビルドには署名をしよう
  • 75. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 76. 署名の準備 • キーストアとキーが必要 • Storeにアップデートする際には署名が必須 • 本題から逸れるのでサクッと作ってしまいます
  • 77. キーストアとキー作成 • Buildメニュー→Generate Signed APK…
  • 78. の内容を覚えておく OK押したら 先へは進まず ウィンドウを 閉じる Passwordは全て123456と打ってます 本当は各項目きちんと入力してください
  • 79. プロジェクトを右クリック →Open Module Settings
  • 80. さっきの署名情報入力
  • 81. 署名完了! これでReleaseビルドが できる
  • 82. アプリ名がHelloWorldになってる! (applicationIdはAndroid Studioからチェックできます)
  • 83. applicationIdが異なるため、DebugとReleaseが共存している
  • 84. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 85. Flavor Free Charge Build Type FreeとDebug ChargeRelease のFlavorDebug を作成すRelease る Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 86. プロジェクトを右クリック →Open Module Settings
  • 87. Build Variantsを確認 4種類に増えた!
  • 88. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 89. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE FreeReleaseビルドのときは ApplicationIdの末尾に.freeをつける アプリ名の末尾にLightをつける
  • 90. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE FreeReleaseビルドのときは Sign ApplicationIdFALSE のTRUE 末尾に.freeをFALSE つける TRUE
  • 91. アプリケーションのgradle のビルドファイルを開く
  • 92. app/build.gradle apply plugin: 'com.android.application' ... android { ... productFlavors { free { } charge { } } }
  • 93. app/build.gradle apply plugin: 'com.android.application' ... android { ... productFlavors { defaultConfigのapplicationIdを参照 free { applicationId "com.example.helloworld.free" } charge { } } } ※ProductFlavorはapplicationIdSuffixで  末尾だけ設定できない
  • 94. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE FreeReleaseビルドのときは Sign アFALSE プリ名の末尾にTRUE LightをつけFALSE る TRUE
  • 95. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Debugのときってどうやったっけ…? Sign FALSE TRUE FALSE TRUE
  • 96. app/src/debugの上で右クリック →New→Directory res という名前のディレクトリを作成する app/src/debug/resの上で右クリック →New→Directory values という名前のディレクトリを作成する
  • 97. これや!
  • 98. アプリ名の末尾を DebugからLightに変更 Debugディレクトリごとコピーして、貼り付け 名前をどうするか聞かれるので、freeとする
  • 99. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE 確認TRUE してみる FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 100. ②freeReleaseにする ①Build Variants ③実行
  • 101. アプリ名がHelloWorldFreeになってる! (applicationIdはAndroid Studioからチェックできます)
  • 102. ここでひとつの疑問
  • 103. FreeDebugビルドの場合はどうなるか? (やってみよう)
  • 104. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 105. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.Freedebug のビルド時は.free 広告をつけ.る debug Chargeのビルド時は広告なしにする App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE
  • 106. 今日は本物の広告は 使えないので…
  • 107. Flavorごとにソースコードを 書き分ける方法を伝授します (2パターン)
  • 108. パターン1 BuildConfigで書き分ける
  • 109. BuildConfigとは?
  • 110. app/build/generated/source/ buildConfig/…/buildConfig.java public final class BuildConfig { public static final boolean DEBUG = false; public static final String APPLICATION_ID = "com.example.helloworld.free"; public static final String BUILD_TYPE = "release"; public static final String FLAVOR = "free"; public static final int VERSION_CODE = 1; public static final String VERSION_NAME = "1.0"; /** * @deprecated Use {@link #APPLICATION_ID} */ @Deprecated public static final String PACKAGE_NAME = "com.example.helloworld.free"; }
  • 111. app/build/generated/source/ buildConfig/…/buildConfig.java public final class BuildConfig { public static final boolean DEBUG = false; public static final String APPLICATION_ID = "com.example.helloworld.free"; public static final String BUILD_TYPE = "release"; public static final String FLAVOR = "free"; public static final int VERSION_CODE = 1; public static final String VERSION_NAME = "1.0"; これで書き分ける /** * @deprecated Use {@link #APPLICATION_ID} */ @Deprecated public static final String PACKAGE_NAME = "com.example.helloworld.free"; }
  • 112. 試しにテキストビューの 文字を置き換えてみる
  • 113. app/src/main/res/layout/ activity_main.xml idを付与
  • 114. app/src/main/java/ com.xxx/MainActivity
  • 115. chargeDebug freeDebug
  • 116. パターン2 クラスをごっそり書き分ける
  • 117. app/srcの上で右クリック→New→Directory charge という名前のディレクトリを作成する
  • 118. mainのjavaディレクトリを chargeとfreeディレクトリにコピペ
  • 119. mainの中のMainActivityは削除
  • 120. こうすると、Chargeビルド時はcharge内のファイル のみコンパイルしてクラス化する ↑↓表示のされ方も違ってくる
  • 121. Chargeの方のMainActivity
  • 122. freeの方のMainActivity
  • 123. chargeDebug freeDebug
  • 124. Flavor Free Charge Build Type Debug Release Debug Release Uses 手元で デバッグ Store (無料) デバッグ・ 営業 Store (有料) App Id suffix .free.debug .free .debug App name ◯◯Debug ◯◯Light ◯◯Debug ◯◯ Ad TRUE TRUE FALSE FALSE Sign FALSE TRUE FALSE TRUE