Top Banner
C-LIS CO., LTD.
58

Android Studio開発講座

Jan 06, 2017

Download

Software

Keiji Ariyama
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Studio開発講座

C-LIS CO., LTD.

Page 2: Android Studio開発講座

自己紹介

Page 3: Android Studio開発講座

Android Studio本

3

2014年11月21日発売

技術評論社刊

Android Studio 0.8.6http://amzn.to/1HYRp32

Page 4: Android Studio開発講座

4

Page 5: Android Studio開発講座

5

改訂版が出ます(2016年1月上旬)

Page 6: Android Studio開発講座

改訂版の原稿を送ったのが11月16日

Page 7: Android Studio開発講座

7

Page 8: Android Studio開発講座

11月20日

8

Android Studio 1.5 Release

Page 9: Android Studio開発講座

サンプルコードのプロジェクトを

Android 1.5用に調整したのが11月23日

Page 10: Android Studio開発講座

11月24日

10

Android Studio 2.0 Preview

Page 11: Android Studio開発講座

著者校正を終えたのが

12月7日

Page 12: Android Studio開発講座

12

Page 13: Android Studio開発講座

2016年 1月 48日発売

技術評論社刊

Android Studio 1.5

13

Page 14: Android Studio開発講座

著者校正中の出来事

Page 15: Android Studio開発講座

15

Page 16: Android Studio開発講座

16

Page 17: Android Studio開発講座

17

Page 18: Android Studio開発講座

18

Page 19: Android Studio開発講座

わかったこと

19

• Android Developersは、日本語版のサイトと英語版のサイトで配布しているバイナリが違う

• 英語版のサイトでは 1.5 を、日本語版では1.4を配布している • 英語のURLにアクセスしても、下部の「言語設定」で日本語を選択していればサイト側が日本語サイトに自動的にリダイレクトする(コン

トロール不能)

Page 20: Android Studio開発講座

続く!

Page 21: Android Studio開発講座

Android Studio開発講座

2015/12/12

日本Androidの会 香川支部

Page 22: Android Studio開発講座

今日のお題

22

Android Studioは、2013年に発表された

Androidアプリ向けの新しい開発環境

IntelliJ IDEAのCommunity Editionをベー

スに開発されている

Googleは、ADT(Android Developer

Tools)について、2015年末で開発サポート

を停止することをアナウンスしている

Android Studioの便利なところを紹介するよ!

Page 23: Android Studio開発講座

エラーの訂正

23

エラーに飛ぶ(Jump to Next Error)

F2

Option + return

修正候補を選択する

(Show the list of available intention actions.)

Alt + return

Shift + F2

Page 24: Android Studio開発講座

文字列リソースの作成

24

Option + returnAlt + return

Page 25: Android Studio開発講座

レイアウトの作成

25

Option + returnAlt + return

Page 26: Android Studio開発講座

Code Generation

Command + NAlt + insert

26

Page 27: Android Studio開発講座

public static class PlaceholderFragment extends Fragment { private boolean mClickFlag;

Code Generationの憂鬱

27

Page 28: Android Studio開発講座

public static class PlaceholderFragment extends Fragment { private boolean mClickFlag; public boolean ismClickFlag() { return mClickFlag; }

Code Generationの憂鬱

28

Page 29: Android Studio開発講座

Naming Prefixの設定

29

[Preferences] → [Editor] → [Code Style]

→ [Java] → [Code Generation] → [Naming]

Page 30: Android Studio開発講座

public static class PlaceholderFragment extends Fragment { private boolean mClickFlag; public boolean isClickFlag() { return mClickFlag; }

Field Prefixの設定

30

Page 31: Android Studio開発講座

ライブラリの追加

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ディレクトリに追加することもできる)

Page 32: Android Studio開発講座

リファクタリング

Page 33: Android Studio開発講座

インラインの記述をローカル変数に移動

33

Command + Option + VControl + Alt + V

@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, new PlaceholderFragment(), "main") .commit();}

Page 34: Android Studio開発講座

変数をフィールドに移動

34

Command + Option + FControl + Alt + F

@Overrideprotected 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();}

Page 35: Android Studio開発講座

変数をフィールドに移動

35

private Fragment fragment; @Overrideprotected 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();}

Page 36: Android Studio開発講座

処理をメソッドへ切り出す

36

Command + Option + MControl + Alt + M

private void initializa() { placeholderFragment = new PlaceholderFragment(); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, placeholderFragment, "main") .commit();}

Page 37: Android Studio開発講座

変数・メソッド・クラス名を変更

37

Shift + F6Shift + F6

private void initialize() { placeholderFragment = new PlaceholderFragment(); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, placeholderFragment, "main") .commit();}

Page 38: Android Studio開発講座

変数・メソッド・クラス名を変更

38

Shift + F6Shift + F6

@Overrideprotected 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();}

Page 39: Android Studio開発講座

ユニットテスト(JUnit4)

Page 40: Android Studio開発講座

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

Page 41: Android Studio開発講座

ユニットテストの置き場所

41

Page 42: Android Studio開発講座

Userクラス

public class User { private long id; private String name; private boolean isMegane;

// setter, getter省略

}

42

Page 43: Android Studio開発講座

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

Page 44: Android Studio開発講座

テストを実行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

Page 45: Android Studio開発講座

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

Page 46: Android Studio開発講座

ユニットテスト(JVM)の置き場所

46

Page 47: Android Studio開発講座

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

Page 48: Android Studio開発講座

テストを実行: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

Page 49: Android Studio開発講座

C-LIS CO., LTD.

各製品名・ブランド名、会社名などは、一般に各社の商標または登録商標です。

本資料中では、©、®、™を割愛しています。

本資料は、有限会社シーリスの著作物であり、

クリエイティブコモンズの表示-非営利-継承 3.0 Unported ライセンスの元で公開しています。

Page 50: Android Studio開発講座

寄せられた質問

Page 51: Android Studio開発講座

Android Studioで

フリーザより強いという人造人間は倒せま

すか?

51

倒せるか倒せないかというより、悟空(ADT)は

死んだので、これからはAndroid Studioが頑張る

しかありません。

Page 52: 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)

Page 53: Android Studio開発講座

AndroidからMySQLのDBサーバーにアク

セスしたいのですが、実際の方法セキュリ

ティなどで注意することなどあれば

53

AndroidからMySQLのDBサーバーにアクセスする

と何が起こるかわからないので、めんどうでもAPI

を設計・実装した方がいいです。

Page 54: Android Studio開発講座

Gradle で apk を暗号化するコマンドライ

ンから実行できる自前のビルドタスクを作っ

たのですが、それを Android Studio から

実行したり、 Android Studio のビルド時

に自動で実行できるようになりませんでしょ

うか?

54

Page 55: Android Studio開発講座

task samplePreprocess << { println("この処理を先にする");}assembleDebug.dependsOn(samplePreprocess)

build.gradle - dependOn

Page 56: Android Studio開発講座

既存のプロジェクトを

インポートする際のポイントについて

56

Page 57: Android Studio開発講座

http://techbooster.github.io/c89/

Copyright TechBooster

Page 58: Android Studio開発講座

58

ADT - Android Studio 完全移行マニュアル(仮題)

• ADT - Android Studioへの移行

• Gradle 101