Google Developers Summit : Android 参加メモ

【イベント名】 Google Developers Summit : Android 
【日程】 2016 年 4 月 25 日（月） 13:30 - 17:30 （開場: 13:00） 
【場所】コクヨホール、東京都港区港南 1 丁目 8 番 35 号 

参加メモです。
後日資料が公開されたらあらためて加筆修正します。

# 資料
http://yaraki.github.io/slides/gds-2016q2/index.html#1

# AndroidStudio 2.0がリリースされました
- 2.1は現在Preview版です。（追記：2016.05.09更新チェックしたらStableに）
- 毎月１回のペースで評価版を出します。早めのフィードバックを更新に活かしたいです。
- 慎重な方はUpdateが頻繁なのでバージョンごとにファイル名を分けて共存もできます。
- targetSDKとBuildToolsのバージョンは切り離して考えておｋ。BuildToolsは基本最新


# 2.0どうですか？
- what's new android studio 2.0 に短くまとまってる　https://www.youtube.com/watch?v=xxx3Fn7EowU
- Dalvik Executable（DEX）改善でビルド高速に。（Dalvik VM上で動作するバイナリ・プログラム）
- これまではProGuardでShrinkしてたけど独立させました。

> ProGuardの置き換えではないのでProGuardはそのまま使ってね。
> ProGuardは一旦、単一のjarを作るので遅かった。

- ADB（Android Debug Bridge）高速化

> push,pullが５倍速
> 接続中デバイスが使うリソースだけ自動で選んで転送（xxdphとか）従来はぜんぶ

- Instant Run（更新と実行のペア？）

> Windows環境や、プロジェクト構成によってはまだ動かない
> 仕組みそのものについて深く知りたい場合はDroidKaigiのセッションを見てね。

```
４段階あります
		HotSwap
			実行を維持したまま実行
		WarmSwap
			Activityは再起動されるけどProcessはそのまま
		ColdSwap
			Process再起動
		NewBuild & Deploy
			アプリ再インストール（従来はこの方法のみだった）
```

- GPU Profiler：各フレームの状態をグラフィカルに確認できます
- Intellij 15ベースに
- IntentFilterの定義
- ディープリンクテストが簡単に


# 2.1は？
- N Previewをサポートします。
- Java8ランタイムサポート（一部です）
- N自体は新コンパイラJackでコンパイルされている


# Android N
- Android N Preview４？５？まではβで、APIかわるかも。

## マルチウィンドウ
- Picture in Picture（TV限定）
- 二分割（左右または上下で）
- 自由形式（MacやWindowsPCと同じような。現在は試せません）
- フォーカスの問題がでてきます。（Active、非Active）

```
	onResume、onPauseが呼ばれます。
	Activityが重なっている状態だと思ってください。

	onPauseで動画を停止するとここで問題がでます。
	onStopまで更新を続けてください。動画に限らずですが。
```

- ライフサイクルの問題は回転時と同じです。実装もそのように。
- マニフェストへの記載でON／OFF切り替えます（デフォルトON！）
- ActivityのminimalWidth、minimalHeight属性を使うと最低サイズを指定できます。
- Activity,Fragmentに新しいメソッドが増えます。isInMultiWindowMode()とか
- アプリ側からはマルチウィンドウを制御できません。必ずナビゲーションバー右下、四角ボタンからのみです。

## 通知
- 通知領域上から直接返信（入力）できるように
- marshmallowでもやってたものと似てます。
- また、同じ種類の通知をグループ化します。バンバン出せそう？
- Notification.Builder#setContentは古くなりました。

## ラムダ
これを

```java
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        say("Hi!");
    }
});
```
こう書けるけど

```java
button.setOnClickListener(v -> say("Hi!"));
```
見た目に惑わされない。実際もやっぱりnewされるからGCとか要注意

## クイック設定
OSで可能に。よく使うものを並べましょう
APIは用意されていません。現状使うだけです。

## 特定ディレクトリへの権限要求
marshmallowのRuntimePermissionみたいなものです。

## Direct Boot
端末が再起動してもちゃんとアラームなる、とか（悲劇回避）

## DOZE？
端末を休眠状態にしてネットワークもOFFに。。。
これの軽い状態版
これまではポケット内だと動いているのでDOZEにはならなかった
今回のは軽いDOZEなので動いてもDOZE状態になります。
DOZEが２段階になりました！バッテリー長持ち
開発者は特に意識しませんが
ジョブスケジューラーを使ってコントロールしてください。

## Project Svelt
電池長持ちプロジェクト

>	ACTION_NEW_PICTURE, ACTION_NEW_VIDEO
	これらは廃止します。
	IntentFilterに書いてあるアプリ沢山いると
	起動して糸冬了して。。。を繰り返して非効率なので
	但し、動的なFilterで捕捉できます。
	マニフェストだけ無視されます。

JobSchedulerでコントロールできます。（詳細不明）

## 設定ー＞ユーザー補助ー＞表示サイズ
dpとpxの比率が変わります。意識しましょう。
やることはマルチウィンドウ対応と基本同じです。
比率で実装しましょう。

## 言語設定
これまでは１つだけの選択でしたが、複数いけます。
Chromeで英語ページみてると日本語翻訳する？とかこれまできかれてました。
開発者の対応はほとんど不要です。
翻訳機能を有する場合は、もしかしたら意識するかも。
言語リストが取得できるので。


# ゲーム
- メモリ１GB以上搭載機種がほとんどの日本ですが、テクスチャ圧縮など工夫すると諸外国でいいことありそう。
- libpng，libcryptなどの/system/lib以下の機能を勝手に使えなくなりました
- NDKr11c（あーるいれぶんしー）からSDKマネージャーからダウンロード可能に（これまでは個別zip）
- NDKr12BetaからVulkanサポート
- GameID
 
>	以前はGoogle+前提だったけど、縛りなくしました。
	数MBならクラウド上にデータ置けます。
	ゲーム以外でも使えるので見るといいかも。

- ビデオ録画、Share（Twitchと似たようなの）


## Vulkan
- OpenGLネクスト！ハード・ソフトベンダーが協力して新しいエンジンを開発
- アイコンが微妙なのはいろんな人達の思いが（ｒｙ
- 負荷が少ないのが特徴
- OpenGLはCPUでコマンド生成して実行してた。ここがネック
- Vulkanはモバイルハードウェアにある程度特化してる
- CPU負荷をとにかく下げました
- 現時点で５〜６％くらいのハードが動作環境として市場にあるので当分はOpenGLかな


# 所感
- 名刺を忘れたサザエさん。手書きでゴメンナサイ
- 自分でも驚いたけど最初から最後まで集中力が途切れなかった。プレゼンお上手
- 挙手からの質問だと億劫だけど、sli.doでの質問は７０件オーバー！すべてにお応えいただきました。
- KotlinはじめたばかりでSwiftの話が出たときはどうしようかと思ったけどガセだったｗ
- 今後も継続して参加します！