SlideShare a Scribd company logo
C-LIS CO., LTD.
自己紹介
Android Studio本
3
2014年11月21日発売
技術評論社刊
Android Studio 0.8.6
http://amzn.to/1HYRp32
4
5
改訂版が出ます(2016年1月上旬)
改訂版の原稿を送ったのが11月16日
7
11月20日
8
Android Studio 1.5 Release
サンプルコードのプロジェクトを

Android 1.5用に調整したのが11月23日
11月24日
10
Android Studio 2.0 Preview
著者校正を終えたのが
12月7日
12
2016年 1月 48日発売
技術評論社刊
Android Studio 1.5
13
著者校正中の出来事
15
16
17
18
わかったこと
19
• Android Developersは、日本語版のサイトと英語版のサイトで配布
しているバイナリが違う
• 英語版のサイトでは 1.5 を、日本語版では1.4を配布している
• 英語のURLにアクセスしても、下部の「言語設定」で日本語を選択し
ていればサイト側が日本語サイトに自動的にリダイレクトする(コン
トロール不能)
続く!
Android Studio開発講座
2015/12/12
日本Androidの会 香川支部
今日のお題
22
Android Studioは、2013年に発表された
Androidアプリ向けの新しい開発環境
IntelliJ IDEAのCommunity Editionをベー
スに開発されている
Googleは、ADT(Android Developer
Tools)について、2015年末で開発サポート
を停止することをアナウンスしている
Android Studioの便利なところを紹介するよ!
エラーの訂正
23
エラーに飛ぶ(Jump to Next Error)
F2
Option + return
修正候補を選択する
(Show the list of available intention actions.)
Alt + return
Shift + F2
文字列リソースの作成
24
Option + return
Alt + return
レイアウトの作成
25
Option + return
Alt + return
Code Generation
Command + N
Alt + insert
26
public static class PlaceholderFragment extends Fragment {



private boolean mClickFlag;

Code Generationの憂鬱
27
public static class PlaceholderFragment extends Fragment {



private boolean mClickFlag;



public boolean ismClickFlag() {

return mClickFlag;

}

Code Generationの憂鬱
28
Naming Prefixの設定
29
[Preferences] → [Editor] → [Code Style]
→ [Java] → [Code Generation] → [Naming]
public static class PlaceholderFragment extends Fragment {



private boolean mClickFlag;



public boolean isClickFlag() {

return mClickFlag;

}

Field Prefixの設定
30
ライブラリの追加
31
apply plugin: 'com.android.application'



android {
…

}



dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.jakewharton:butterknife:7.0.1'


}

app/build.gradle
Android Studioのライブラリは、Maven CentralやjCenterなどから追加
する(libsディレクトリに追加することもできる)
リファクタリング
インラインの記述をローカル変数に移動
33
Command + Option + V
Control + Alt + V
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

new PlaceholderFragment(), "main")

.commit();

}

変数をフィールドに移動
34
Command + Option + F
Control + Alt + F
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



Fragment fragment = new PlaceholderFragment();

getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

fragment, "main")

.commit();

}

変数をフィールドに移動
35
private Fragment fragment;



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



fragment = new PlaceholderFragment();

getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

fragment, "main")

.commit();

}

処理をメソッドへ切り出す
36
Command + Option + M
Control + Alt + M
private void initializa() {

placeholderFragment = new PlaceholderFragment();

getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

placeholderFragment, "main")

.commit();

}

変数・メソッド・クラス名を変更
37
Shift + F6
Shift + F6
private void initialize() {

placeholderFragment = new PlaceholderFragment();

getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

placeholderFragment, "main")

.commit();

}

変数・メソッド・クラス名を変更
38
Shift + F6
Shift + F6
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



Fragment fragment = new PlaceholderFragment();

getSupportFragmentManager()

.beginTransaction()

.add(android.R.id.content,

fragment, "main")

.commit();

}

ユニットテスト(JUnit4)
android {

…


defaultConfig {

applicationId "io.keiji.tryandroidstudio"

minSdkVersion 15

targetSdkVersion 23

versionCode 1

versionName "1.0"



testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
…

}



dependencies {

compile fileTree(include: ['*.jar'], dir: 'libs')

testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'com.jakewharton:butterknife:7.0.1'



androidTestCompile 'com.android.support:support-annotations:23.1.1'

androidTestCompile 'com.android.support.test:runner:0.3'

}

build.gradleの編集
40
ユニットテストの置き場所
41
Userクラス
public class User {



private long id;



private String name;



private boolean isMegane;

// setter, getter省略
}
42
UserTestクラス
import android.support.test.runner.AndroidJUnit4;



import org.junit.Assert;

import org.junit.Test;

import org.junit.runner.RunWith;



@RunWith(AndroidJUnit4.class)

public class UserTest {



@Test

public void 眼鏡をかけている() throws Exception {

User user = new User();

Assert.assertTrue(user.isMegane());

}

}

43
テストを実行
io.keiji.tryandroidstudio.UserTest > 眼鏡をかけている
[Nexus_5_API_18(AVD) - 4.3.1] [31mFAILED [0m
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
:app:connectedDebugAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task
':app:connectedDebugAndroidTest'.
> There were failing tests. See the report at:
file:///Users/keiji_ariyama/Desktop/
TryAndroidStudio/app/build/reports/androidTests/
connected/index.html
44
package io.keiji.tryandroidstudio;



import android.support.test.runner.AndroidJUnit4;



import org.junit.Assert;

import org.junit.Test;

import org.junit.runner.RunWith;



@RunWith(AndroidJUnit4.class)

public class UserTest {



@Test

public void 眼鏡をかけている() throws Exception {

User user = new User();

Assert.assertTrue(user.isMegane());

}

}

Androidに依存したテスト?
45
ユニットテスト(JVM)の置き場所
46
import android.support.test.runner.AndroidJUnit4;



import org.junit.Assert;

import org.junit.Test;

import org.junit.runner.RunWith;



@RunWith(AndroidJUnit4.class)

public class UserTest {



@Test

public void 眼鏡をかけている() throws Exception {

User user = new User();

Assert.assertTrue(user.isMegane());

}

}

UserTestクラス
47
テストを実行
:app:testDebugUnitTest
io.keiji.tryandroidstudio.UserTest > 眼鏡をかけている
FAILED
java.lang.AssertionError at UserTest.java:11
2 tests completed, 1 failed
:app:testDebugUnitTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:testDebugUnitTest'.
> There were failing tests. See the report at:
file:///Users/keiji_ariyama/Desktop/
TryAndroidStudio/app/build/reports/tests/debug/
index.html
* Try:
Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log
output.
BUILD FAILED
Total time: 2.389 secs
C-LIS CO., LTD.
各製品名・ブランド名、会社名などは、一般に各社の商標または登録商標です。
本資料中では、©、®、™を割愛しています。
本資料は、有限会社シーリスの著作物であり、
クリエイティブコモンズの表示-非営利-継承 3.0 Unported ライセンスの元で公開しています。
寄せられた質問
Android Studioで
フリーザより強いという人造人間は倒せま
すか?
51
倒せるか倒せないかというより、悟空(ADT)は

死んだので、これからはAndroid Studioが頑張る
しかありません。
今日一番の豆知識
52
"人造人間編では連載中に試行錯誤が見られた。当初は19号と20号のみを登
場させる予定だったが、すでに担当編集を外れていた鳥嶋和彦が鳥山の家に
電話をかけてきて「やっと敵が出てきたとおもったらジジイとデブじゃない
ですか」と文句を言われ、仕方なく17号と18号をデザイン。しかし、鳥嶋
が再び家に電話をかけてきて「なんだ今度はガキですか」と再び文句を言わ
れ、当初は登場する予定すらなかったセルが登場することになった。"
Wikipedia 人造人間(ドラゴンボール)
https://ja.wikipedia.org/wiki/%E4%BA%BA%E9%80%A0%E4%BA%BA
%E9%96%93_(%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%83%9C%E3%83%BC
%E3%83%AB)
AndroidからMySQLのDBサーバーにアク
セスしたいのですが、実際の方法セキュリ
ティなどで注意することなどあれば
53
AndroidからMySQLのDBサーバーにアクセスする
と何が起こるかわからないので、めんどうでもAPI
を設計・実装した方がいいです。
Gradle で apk を暗号化するコマンドライ
ンから実行できる自前のビルドタスクを作っ
たのですが、それを Android Studio から
実行したり、 Android Studio のビルド時
に自動で実行できるようになりませんでしょ
うか?
54
task samplePreprocess << {

println("この処理を先にする");

}



assembleDebug.dependsOn(samplePreprocess)
build.gradle - dependOn
既存のプロジェクトを
インポートする際のポイントについて
56
http://techbooster.github.io/c89/
Copyright TechBooster
58
ADT - Android Studio
完全移行マニュアル(仮題)
• ADT - Android Studioへの移行
• Gradle 101

More Related Content

PDF
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Keiji Ariyama
 
PDF
Realmの暗号化とAndroid System
Keiji Ariyama
 
PDF
Android Studioの魅力
Keiji Ariyama
 
PPTX
Androidプログラミング入門
OESF Education
 
PDF
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
 
PDF
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
 
PDF
What is tested by pre-launch (security) reports?
ak_shio_555
 
PDF
Android Dev Tools Knowledge
Shinobu Okano
 
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Keiji Ariyama
 
Realmの暗号化とAndroid System
Keiji Ariyama
 
Android Studioの魅力
Keiji Ariyama
 
Androidプログラミング入門
OESF Education
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
 
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
 
What is tested by pre-launch (security) reports?
ak_shio_555
 
Android Dev Tools Knowledge
Shinobu Okano
 

What's hot (20)

PDF
Android Studio First Step Guide
Masahiro Hidaka
 
PDF
DroidKaigi2016 windows環境での効率的なアプリ開発手法
tkawashita
 
PDF
Android lint-srp-practice
cch-robo
 
PDF
AndroidLint #DroidKaigi
Yukiya Nakagawa
 
PDF
Google I/O 2013 報告会 Android Studio と Gradle
Keishin Yokomaku
 
PDF
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
 
PDF
はてなにおける Android アプリのソフトウェアテスト
Yu Nobuoka
 
PDF
Android studio で行ってみよう!!
Kazuaki Ueda
 
PDF
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
PDF
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Kengo Suzuki
 
PDF
Android,Brillo,ChromeOS
l_b__
 
PDF
Androidのリカバリシステム (Androidのシステムアップデート)
l_b__
 
PDF
Java/Androidセキュアコーディング
Masaki Kubo
 
PDF
Android api-levels
Kazuaki Ueda
 
PPTX
Androidアプリケーション開発入門
OESF Education
 
PDF
パーミッションモデルの過渡期への対応
ak_shio_555
 
ODP
はじめてのAndroid in 高知
hiro nemu
 
PDF
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
 
PDF
もう怖くないモバイルアプリ開発!
Toshiki Iga
 
PDF
AndroidJUnitRunner で JUnit 4 形式のテストに移行
Yu Nobuoka
 
Android Studio First Step Guide
Masahiro Hidaka
 
DroidKaigi2016 windows環境での効率的なアプリ開発手法
tkawashita
 
Android lint-srp-practice
cch-robo
 
AndroidLint #DroidKaigi
Yukiya Nakagawa
 
Google I/O 2013 報告会 Android Studio と Gradle
Keishin Yokomaku
 
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
 
はてなにおける Android アプリのソフトウェアテスト
Yu Nobuoka
 
Android studio で行ってみよう!!
Kazuaki Ueda
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Kengo Suzuki
 
Android,Brillo,ChromeOS
l_b__
 
Androidのリカバリシステム (Androidのシステムアップデート)
l_b__
 
Java/Androidセキュアコーディング
Masaki Kubo
 
Android api-levels
Kazuaki Ueda
 
Androidアプリケーション開発入門
OESF Education
 
パーミッションモデルの過渡期への対応
ak_shio_555
 
はじめてのAndroid in 高知
hiro nemu
 
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
 
もう怖くないモバイルアプリ開発!
Toshiki Iga
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
Yu Nobuoka
 
Ad

Similar to Android Studio開発講座 (20)

PDF
[DevSummit2013S]Android_Multi-Version_Multi-Device
Kenichi Kambara
 
PPTX
Droidcon London2012 Speaker Experience
Kenichi Kambara
 
PDF
Introduce React Native
GMO-Z.com Vietnam Lab Center
 
PDF
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
Google Cloud Platform - Japan
 
PPTX
はじめてのAndroid Things
Akira Sasaki
 
PDF
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
Akira Inoue
 
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
PDF
Andriod開発環境の構築
Kimiyuki Yamauchi
 
PDF
Android multiscreen
Kazuaki Ueda
 
PDF
Android App Development with Gradle & Android Studio
Soichiro Kashima
 
PDF
つ部 Android Studio 勉強会 12/7
Hikaru Wada
 
PDF
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Kenichi Tatsuhama
 
PPTX
Androidアプリ販売への道
Yoshinori Kamaishi
 
PDF
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
Tetsuya Shiraishi
 
PDF
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
Akira Inoue
 
PDF
Androidアプリケーション開発中級研修 前編
株式会社 NTTテクノクロス
 
PDF
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
 
PDF
Android Wearアプリ プレビュー版→正式版への移植ガイド
Kenichi Kambara
 
PDF
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
PDF
Flash Professional CS6 の新機能のご紹介 AIR編
KinkumaDesign
 
[DevSummit2013S]Android_Multi-Version_Multi-Device
Kenichi Kambara
 
Droidcon London2012 Speaker Experience
Kenichi Kambara
 
Introduce React Native
GMO-Z.com Vietnam Lab Center
 
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
Google Cloud Platform - Japan
 
はじめてのAndroid Things
Akira Sasaki
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
Akira Inoue
 
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
Andriod開発環境の構築
Kimiyuki Yamauchi
 
Android multiscreen
Kazuaki Ueda
 
Android App Development with Gradle & Android Studio
Soichiro Kashima
 
つ部 Android Studio 勉強会 12/7
Hikaru Wada
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Kenichi Tatsuhama
 
Androidアプリ販売への道
Yoshinori Kamaishi
 
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
Tetsuya Shiraishi
 
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
Akira Inoue
 
Androidアプリケーション開発中級研修 前編
株式会社 NTTテクノクロス
 
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
 
Android Wearアプリ プレビュー版→正式版への移植ガイド
Kenichi Kambara
 
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
Flash Professional CS6 の新機能のご紹介 AIR編
KinkumaDesign
 
Ad

More from Keiji Ariyama (7)

PPTX
Vuzix Developer Conference
Keiji Ariyama
 
PDF
Vuzix developer conference - M100アプリ開発
Keiji Ariyama
 
PDF
Google Glassアプリ開発と自由度の変遷
Keiji Ariyama
 
PDF
Google Cloud Endpointsによる API構築
Keiji Ariyama
 
PDF
Google Mirror API勉強会 20130607
Keiji Ariyama
 
PDF
これからの"日付変更線"の話をしよう
Keiji Ariyama
 
PDF
20130119 adkハンズオン発表資料
Keiji Ariyama
 
Vuzix Developer Conference
Keiji Ariyama
 
Vuzix developer conference - M100アプリ開発
Keiji Ariyama
 
Google Glassアプリ開発と自由度の変遷
Keiji Ariyama
 
Google Cloud Endpointsによる API構築
Keiji Ariyama
 
Google Mirror API勉強会 20130607
Keiji Ariyama
 
これからの"日付変更線"の話をしよう
Keiji Ariyama
 
20130119 adkハンズオン発表資料
Keiji Ariyama
 

Android Studio開発講座