52
Inside Android N Retty Tech Cafe#6

Inside Android N

Embed Size (px)

Citation preview

Page 1: Inside Android N

Inside Android N

Retty Tech Cafe#6

Page 2: Inside Android N

About Me

Shinobu Okano

@operandoOS

Mercari, Inc.

Souzoh, Inc.

Page 3: Inside Android N

ちなみに あれ、リリースしましたね

Page 4: Inside Android N

Andaroid版 昨日リリースしました🚀

Page 5: Inside Android N

https://play.google.com/store/apps/details?id=com.souzoh.android.atte

ダウンロード😊

Page 6: Inside Android N

ダウンロード😊

Page 7: Inside Android N

Android N

Page 8: Inside Android N

Android N Developer Preview 5

Developer Preview 5 includes near-final system images

Page 9: Inside Android N

API Diff

Page 10: Inside Android N

API Diff

• API Differences between 23 and 24

• https://developer.android.com/sdk/api_diff/24/changes.html

• https://developer.android.com/sdk/apistatistics.html

Page 11: Inside Android N

Good-bye android.test package

Page 12: Inside Android N

Good-bye android.test package• Deprecated in API level 24

Page 13: Inside Android N

😡

Page 14: Inside Android N

Good-bye android.test package

• https://developer.android.com/sdk/api/android.test.html

• https://developer.android.com/sdk/api/android.test.mock.html

• https://developer.android.com/sdk/api/android.test.suitebuilder.annotation.html

Page 15: Inside Android N

Good-bye android.test package🔥🔥🔥

• 生き残りは少しだけいる😊

• Android Testing Support Libraryにしろって話

• https://developer.android.com/topic/libraries/testing-support-library/index.html

• ちなみ僕は最近MockCursor使ってテストコード書きました😢

• MockCursorはDeprecatedでーす🔥🔥🔥🔥🔥🔥🔥🔥🔥

Page 16: Inside Android N

android.provider

Page 17: Inside Android N

android.provider.Settings.Global.BOOT_COUNT

• Settings.Global.BOOT_COUNT

• 起動した回数を取得できる

• うん、で?? なAPI

• https://developer.android.com/reference/android/provider/Settings.Global.html#BOOT_COUNT

Page 18: Inside Android N

android.provider.Settings.ACTIONWEBVIEWSETTINGS

• Settings.ACTION_WEBVIEW_SETTINGS

• Allows user to select current webview implementation.

• 例えばChrome Stable,Beta,Devが入ってた場合、実装を選べるってことみたい

• https://developer.android.com/reference/android/provider/Settings.html#ACTION_WEBVIEW_SETTINGS

Page 19: Inside Android N

android.text.Html

• Html.toHtml method deprecated

• Html.fromHtml method deprecated

• https://developer.android.com/sdk/api_diff/24/changes/android.text.Html.html

• optionを引数で追加したメソッド使えってことらしい

Page 20: Inside Android N

Key Developer Features

Page 21: Inside Android N

Data Saver

• システムがバックグラウンドで行われる通信をブロックする

• フォアグラウンドでのデータ使用をなるべく抑える

• 特定のアプリだけホワイトリストに入れて通信のブロックをさせないこともできる

• https://developer.android.com/preview/features/data-saver.html

Page 22: Inside Android N

Data Saver• Data Saverの設定取得・変更監視できる

• ホワイトリストへの追加を要求できる

• 実装簡単だった

• フォアグラウンドでのデータ使用量はなんかドキュメント読んだ感じ開発者に任せます的な勢いだった

• 要はData SaverがONかどうか確認して、ONならデータ使用量を抑える 努力 をしてね💪

• おい、開発者の善意に委ねられるってことか...

Page 23: Inside Android N

Data Saver Sample

https://github.com/operando/Data-Saver-Sample

Page 24: Inside Android N

さて、つついてみるか• Data Saver設定画面にIntentで飛べるか??

• 今のところの情報じゃ無理っぽい

• SettingsのActionはもちろん提供されてない

• 画面がFragmentだし無理そう

• com.android.settings.datausage.DataSaverSummary

• Data Saverのホワイトリストがどこで管理されているのか

• netpolicy.xmlかなー多分

• エミュレーターでもshellで入っても全然Fileが見れないので厳しい...

Page 25: Inside Android N

SQLite

Page 26: Inside Android N

SQLite

• Android Nに入ってるSQLiteのversionを調べてみた

• 実は部分的にAOSPのコミットが公開されている

Page 27: Inside Android N

AOSP changelog

• http://www.androidpolice.com/android_aosp_changelogs/android-m-preview-2-to-android-n-preview-1-AOSP-changelog.html

• http://www.androidpolice.com/android_aosp_changelogs/android-n-preview-1-to-android-n-preview-2-AOSP-changelog.html

• http://www.androidpolice.com/android_aosp_changelogs/android-n-preview-2-to-android-n-preview-3-AOSP-changelog.html

• http://www.androidpolice.com/android_aosp_changelogs/android-n-preview-3-to-android-n-preview-4-AOSP-changelog.html

Page 28: Inside Android N

SQLite

• 調べてみた感じ SQLite 3.9.3 みたい

• コミット

• https://android.googlesource.com/platform/external/sqlite/+/253ed64ded244ef3d8a7226efb812e7989bc8026

Page 29: Inside Android N

SQLite 3.9.x Features

• json1 extension

• Full Text Search version 5 (FTS5)

• etc.

Page 30: Inside Android N

残念です…

Page 31: Inside Android N

今紹介した機能は

AndroidのSQLiteでは

使えません

Page 32: Inside Android N

\(^o^)/

Page 33: Inside Android N

Why?

• それぞれの機能を使うためにflagをenableにしないといけない

• なるほど...されてない...

• https://android.googlesource.com/platform/external/sqlite/+/master/dist/Android.mk#9

Page 34: Inside Android N

ワンチャン俺の見間違えだろ...

• Android NのSQLiteでJSON1 Extension試してみた

• https://github.com/operando/Try-Android-N-The-JSON1-Extension

Page 35: Inside Android N

結果

\(^o^)/

Page 36: Inside Android N

JSON1 Extensionを有効にしたSQLiteをbuildする

• JSON1 Extensionを有効にしたSQLiteをbuildする

• Not Android!!

• http://qiita.com/operandoOS/items/4dc7754a23ad5ab58615

Page 37: Inside Android N

Android N EasterEgg

Page 38: Inside Android N

EasterEgg

ねこあつめ homage EasterEgg🐱

Page 39: Inside Android N

🐱🐱🐱🐱🐱🐱🐱🐱

Page 40: Inside Android N

Android N EasterEgg Neko Atsume Launcher

• Setting Tile長押しだるい🐱

• はやくねこ見たい🐱🐱

Page 41: Inside Android N

Android N EasterEgg Neko Atsume Launcher

https://github.com/operando/Neko-Atsume-Launcher

Page 42: Inside Android N

Demo

Page 43: Inside Android N

Android N EasterEgg Neko Atsume

• 餌を設置するとJobSchedulerが登録される

• じゃJobSchedulerゴニョゴニョすれば…

• 🐱の画像はAPK分解した感じVectorっぽい

• いくつかのVectorのパターンを作って色だけ変えてる???

Page 44: Inside Android N

おまけ

Page 45: Inside Android N

Reddit AMA

• We’re on the Android engineering team and built Android Nougat. Ask us Anything!

• https://www.reddit.com/r/androiddev/comments/4tm8i6/weretheengineeringand_built/

• 終わってるけど...

Page 46: Inside Android N

気になったPost

https://www.reddit.com/r/androiddev/comments/4tm8i6/weretheengineeringand_built/d5ieg6r

“API 24 brought partial introduction of Java 8 types and methods. There are highly noticeable omissions from this addition such as java.time.* (JSR 310), java.lang.invoke. As Android's standard library deviates further from properly mirroring the JDK, what are the views of the platform team with regard to these omissions? Are you concerned about the growing difficulty of the use and development of non-Android-specific libraries moving forward (whether they're pure-Java or want to target both the JVM and Android)?”

Page 47: Inside Android N

回答

“Anwar: We plan to support more of the Java 8 programming language spec in future releases. We have to prioritize what we spend our time on as we often have to optimize these implementations quite a bit for mobile, so these sometime roll out over multiple releases. In general, we’re shortening the lag between platform support for new language spec.”

Page 48: Inside Android N

Android N Memo

https://github.com/operando/Android-N-Memo

Page 49: Inside Android N

まとめ

Multi Window?

Page 50: Inside Android N

まとめ

知らん😚

Page 51: Inside Android N

まとめ

Nは楽しいぞ😰

Page 52: Inside Android N

Thanks!