android studio開発講座
TRANSCRIPT
わかったこと
19
• Android Developersは、日本語版のサイトと英語版のサイトで配布しているバイナリが違う
• 英語版のサイトでは 1.5 を、日本語版では1.4を配布している • 英語のURLにアクセスしても、下部の「言語設定」で日本語を選択していればサイト側が日本語サイトに自動的にリダイレクトする(コン
トロール不能)
今日のお題
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
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
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 + 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();}
変数をフィールドに移動
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();}
変数をフィールドに移動
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();}
処理をメソッドへ切り出す
36
Command + Option + MControl + Alt + M
private void initializa() { placeholderFragment = new PlaceholderFragment(); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, placeholderFragment, "main") .commit();}
変数・メソッド・クラス名を変更
37
Shift + F6Shift + F6
private void initialize() { placeholderFragment = new PlaceholderFragment(); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, placeholderFragment, "main") .commit();}
変数・メソッド・クラス名を変更
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();}
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
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
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