30
Android再入門 Eclipseのことは忘れろ~ 40長岡IT開発者勉強会 2015.2.21 @Nkzn

Android再入門 〜Eclipseのことは忘れろ〜

Embed Size (px)

Citation preview

Page 1: Android再入門 〜Eclipseのことは忘れろ〜

Android再入門

~Eclipseのことは忘れろ~第40回 長岡IT開発者勉強会 2015.2.21

@Nkzn

Page 2: Android再入門 〜Eclipseのことは忘れろ〜

自己紹介

中川 幸哉 / @Nkzn

Android歴5年目になりました ウォーターセル株式会社 農業者向けアプリ「アグリノート」作ってます

Page 3: Android再入門 〜Eclipseのことは忘れろ〜

最近の活動

Android技術者サークル「TechBooster」の冬コミ本に寄稿しました

↓かわいい著者絵を書いてもらえました

Page 4: Android再入門 〜Eclipseのことは忘れろ〜

はじめに

Page 5: Android再入門 〜Eclipseのことは忘れろ〜

昔のAndroidアプリ開発キーワード

Eclipse + ADT 公式Emulator (or Intel HAXM)

UI以外のテストをJUnit3で動かす

Ant? 知らない子ですね

Maven? うっ、頭が・・・

Page 6: Android再入門 〜Eclipseのことは忘れろ〜

今のAndroidアプリ開発キーワード

Android Studio Gradle JUnit4 Espresso 2.0 Robolectric Genymotion WaterCell/android-app-template

Page 7: Android再入門 〜Eclipseのことは忘れろ〜

各キーワードについてあれこれ

Page 8: Android再入門 〜Eclipseのことは忘れろ〜

Eclipse + ADT -> Android Studio2014.12.9 Android Studio 1.0 Released

Page 9: Android再入門 〜Eclipseのことは忘れろ〜

–http://developer.android.com/tools/help/adt.html

“If you have been using Eclipse with ADT, be aware that Android Studio is

now the official IDE for Android, so you should migrate to Android Studio to receive all the latest IDE updates. For

help moving projects, see Migrating to Android Studio.”

Page 10: Android再入門 〜Eclipseのことは忘れろ〜

ビルドツールはGradle一択

$ ./gradlew clean check assembleDebug

// clean => 前回ビルド時のキャッシュを削除// check => 静的解析, ユニットテストの実行// assembleDebug => APKをデバッグビルドする

そもそもAntやMavenはXMLで手続きを書かせようとすることがF*ckだった

Page 11: Android再入門 〜Eclipseのことは忘れろ〜

Gradleの懸念点①

2/19にAS1.1が出たばかり

Android plugin for Gradleもver 1.1.0

1.0未満時代の情報はたまに危ない

0.6で破壊的な名称変更があったりした

できるだけ2014年12月以降の情報を参考にしましょう

Page 12: Android再入門 〜Eclipseのことは忘れろ〜

Gradleの懸念点②

ライブラリの自動ダウンロードが起こる キャッシュはあるものの、初回は細かいダウンロードが多めに発生する(パッケージマネージャの宿命)

ネットワークが貧弱な環境でのセミナーしんどい 融通が効かないプロキシが挟んである会社しんどい

Page 13: Android再入門 〜Eclipseのことは忘れろ〜

Emulator

Emulator 速度 CPU Play Services

公式ARMv7 すごく遅い ARMv7 Android4.2以降なら搭載版あり

公式Intel 実機くらい早い x86 搭載版なし

Genymotion 実機より早い x86後載せ可(無保

証)

Page 14: Android再入門 〜Eclipseのことは忘れろ〜

テストツール

• 公式テストツール(androidTest)

• 非公式ユニットテストツール(Robolectric)

Page 15: Android再入門 〜Eclipseのことは忘れろ〜

テスト事例

WaterCell/android-app-template https://github.com/WaterCell/android-app-template

社内でデファクトになったライブラリの寄せ集め 公式UIテストとRobolectricを併存

Page 16: Android再入門 〜Eclipseのことは忘れろ〜

テスト手法が気になる方は

JUnit実践入門

渡辺修司 / @shuji_w6e クラスメソッドの人

Page 17: Android再入門 〜Eclipseのことは忘れろ〜

Android Javaについて 留意しておいたほうがいいこと

Android Java != Oracle Java/OpenJDK

Page 18: Android再入門 〜Eclipseのことは忘れろ〜

Java7使いたい!

android{ compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 }}

Page 19: Android再入門 〜Eclipseのことは忘れろ〜

Android 4.2で

try (SQLiteDatabase db = dbHelper.getWritableDatabase()) { // hogehoge}

OracleのJava SE 7にはあるのに・・・・!!!!

Page 20: Android再入門 〜Eclipseのことは忘れろ〜

Android 4.2で

Long.compare(1, 2) // => Compile Error!

OracleのJava SE 7にはあるのに・・・・!!!!

Page 21: Android再入門 〜Eclipseのことは忘れろ〜

Android 2.3で

ArrayList<String> strings = new ArrayList<>();

これは動く

Page 22: Android再入門 〜Eclipseのことは忘れろ〜

Java7指定でできること

API, try-with-resources => Android 4.4 KitKatから その他の文法 => Android 2.3までは動くこと(検証済み)

Page 23: Android再入門 〜Eclipseのことは忘れろ〜

おまけ:OSビルド用Javaバージョン

Androidバージョン OSビルドに必要な Javaのバージョン

Android 1.5~2.2 Java5

Android 2.3~4.4 Java6

Android 5.0~ Java7

http://source.android.com/source/initializing.html#installing-the-jdk

Page 24: Android再入門 〜Eclipseのことは忘れろ〜

Android SDKについての 古い記事全般

APIについての記事

=> 下位互換性が高いので信じてOK

推奨のやり方が変わっていることはある

ProGuard, Lintについての記事

=> 設定ファイルの書き方は変わっていないので信じてOK

Page 25: Android再入門 〜Eclipseのことは忘れろ〜

ライブラリを探すとき

Deprecated(非推奨)に注意

Page 26: Android再入門 〜Eclipseのことは忘れろ〜

超有名ライブラリも

Page 27: Android再入門 〜Eclipseのことは忘れろ〜

まとめ

Page 28: Android再入門 〜Eclipseのことは忘れろ〜

宣伝1:Recruiting

ウォーターセル株式会社では、農業分野でのITツールの開発・改善に一緒に取り組んでくれるAndroidエンジニアを募集しています。

@Nkznまで空リプください。

Page 29: Android再入門 〜Eclipseのことは忘れろ〜

宣伝2:DroidKaigi

2015年4月25日(土) 渋谷・サイバーエージェント Androidに掠るテーマについて喋れる人どうぞ

http://droidkaigi.github.io

Page 30: Android再入門 〜Eclipseのことは忘れろ〜

おわりに

先にKobitoでQiita向けの記事の体でセッション内容を下書きして、そこからスライドを作る試みをしてみました。 http://qiita.com/Nkzn/items/b31829890ba83a7fd618