2018年11月3日土曜日

Expo v31になったのでReact Native 0.57やAndroid JSCのアップグレードやスタンドアローンビルドのサイズダウンなど変更点的なお話

  • このエントリーをはてなブックマークに追加

expoが Expo for Professionalsを公開して一週間程度で早速v31にアップデートしてきたっていう。

Expo SDK v31.0.0 is now available

早すぎるんだけどとりあえず今日は変更点的なお話をば。

Note that expo build:ios and turtle-cli are not yet available for SDK 31 apps. We’ll remove this notice as soon as they become available. Android apps and older SDK versions are not affected.

とりあえず先に注意点として、turtle-cliを使ってのビルドはAndroidはできるけどiosはまだできないとのこと。


■React Native0.57対応したのでBabel7対応したよ

With React Native 0.57 comes support for Babel 7. Babel 7 is faster, more configurable, and more modern than its predecessor and comes with lots of nice extras like TypeScript support, JS configs and more.

To accommodate this change, we’ve released babel-preset-expo@5 which will ship with SDK 31. If you’re upgrading from a previous SDK version and have no custom babel settings, you shouldn’t need to make any changes; otherwise, make sure to update to this new version in order to take advantage of Babel 7.

React Nativeをv0.57対応したからBabel7対応になったよ的な。
TypeScriptサポートとかなんか色々とBabel7は対応してるよ的な。
バベルのカスタム設定とか特にしていないんだったら影響ないかも的な。
もしうまくコンパイルできてなさそうだったらexpo initして出てくる初期テンプレートの中のbabel設定使っちゃいましょう的な。
ちなみにexpo initして出てくる初期テンプレートはtypescriptで書かれていないよ的な。


■AndroidのJSCアップデートされたよ的な

We’ve upgraded the version of JSC, the JS virtual machine used by Expo apps, to r224109 on Android. This version is close to iOS 11’s JSC and includes support for nearly all ES2015, ES2016, and ES2017 features such as Symbols, for-of loops, and generators. The previous version was from 2014 and meant that Babel compilation or runtime libraries were needed to use features like these. These features are now supported natively, paving the way for smaller JS bundles and faster transpilation.

AndroidのJSCがアップデートされたってことで、ES2015/ES2016/ES2017サポート的な。
だからfirebaseでのSymbolエラーに対応したからpolyfillをimportとかする必要なくなったよ的な。
ちなみにiOS11のJSCに近い感じ的な。


■turtle-cliを使って自分でスタンドアローンビルドできるようになったよ

For many Expo developers, Expo’s standalone app builders are a convenient way to build IPA and APK binaries for distribution. However, the builder service is shared and sometimes there are wait times or builders go down. We’re continuing to address these issues, but to give developers more agency over their builds, we’ve also recently released Turtle CLI, a version of our standalone app builder that you can run on your computer, server, or CI service. See this guide in our docs for how to set up and run Turtle CLI.

turtle-cliを使えば自分のサーバとかCIでビルドできるようになったよ的な。
けどブログの冒頭でexpo build:ios and turtle cli are not available SDK v31って言ってたから今はAndroidだけなんだろうけど。
まだ試してみてないからわからないんだけど。
ドキュメントはこちらを見て的な。


■スタンドアローンビルドのサイズが小さくなったよ

We’ve been working hard to slim down the size of these final IPA and APK files. Previously, Expo app binaries included the native code for the seven most recent SDK versions. With SDK 30, we launched single-SDK builds for iOS, and we’ve recently launched single-SDK builds for Android as well. These builds contain only the SDK version the app uses when built and are both faster and slimmer — the size of a basic Android APK dropped from 27 to 17 MB.

Additionally, we noticed that many people run expo build for the same app repeatedly. As a reminder, for many types of updates you can run expo publish to publish an over-the-air update to your existing app, which your users will download next time they open your app. If your changes are JS-only, you can avoid creating a new build, and instead send out updates using only expo publish. Read about limitations for OTA updates here.

Expo for Professionalsでも書いてたんだけど、バイナリのサイズが下がったらしい。
Androidだったら27MBから17MBになった的な。
余分にSDKバージョン入れてたのやめたよ的なやつ。

ちなみにみんなexpo buildコマンドばっかり使ってるけど、JSの変更だけの時にも使ってたりするから、もしJSの変更だけだったらexpo publishするようなスタイルに変更したよ的な。


■SDK24切り捨てとiOS9切り捨てとAndroid4.4切り捨て

We routinely drop SDK versions that have low usage in order to reduce the number of versions that we need to support. This release sees the end of life for SDK 24. As usual, your standalone apps built with SDK 24 will continue to work; however, SDK 24 projects will no longer work within the latest version of Expo Client. If you want to re-run expo build, then you’ll need to upgrade from SDK 24, preferably to SDK 31 so you won’t need to update again for a while (and also because each Expo version is better than the last!).

In order to keep up with the fast-moving world of mobile development, we periodically drop support for older operating systems nearing their end of life. iOS 12 is here, and most users are on iOS 10+ according to Apple. Dropping Android 4.4 was a prerequisite for the JSC upgrade; additionally, it paves the way for 64-bit support, which will be required for all apps in the Google Play Store by August 2019.

With single-SDK builds, older SDK versions will continue to support all operating systems they did before. This means that if maintaining support for iOS 9 or Android 4.4 for a bit longer is particularly important for you, you can stay on an older SDK version until you’re ready to drop these systems.

ExpoのSDK24切り捨てて、iOS9切り捨てとAndroid4.4切り捨てになったよ的な。


■スナックの改善

Autosaved drafts
Never lose your work again! Once you sign in, Snack will now automatically save your work.

Markdown support
View and edit markdown files in Snacks or imported GitHub projects.

自動保存できるのとマークダウンサポート的な。
githubのプロジェクトをインポートしたときに便利的な感じ的なやつかね。


■APIの改善とか

- ローカライズモジュールの改善

Our Localization module has been completely rewritten to work better with community libraries like i18n-js. We now expose most information synchronously so that your app can localize immediately instead of waiting for an asynchronous bridge call. Check out the updated docs.

ローカライズの改善できたよ的な。
となるとex-react-native-i18nいらなくなった的な感じっぽいよね。


- ファイルシステムでbase64エンコード対応

Our FileSystem API now supports reading and writing in Base64 encoding. This allows you to interact directly with more types of files on the device’s file system and means that ImageStore can now be supported on Android.

base64エンコードで読んだり書いたりできるようになったよ的な。
これでAndroidでreact-nativeのImageStoreをExpoでも使えるようになったよとのこと。


- 他のAPIとかライブラリアップデート

いっぱいあってめんどくさいから載せない。
Cameraでビデオ撮影するときに安定するようになったっていうのは個人的にすごく嬉しい感じ。


■破壊的変更など

多くて面倒だから原文載せないけど自分が気になったのはimport Expo from "expo"の禁止とか。


ってな感じ。
expo for professionalsでv31について言及してたしまぁそうだよねって感じ。
個人的にはturtle-cliがすごくよいんだけどiosがまだ対応していないだかなんだかだけど。
あとBabel7になったから標準でtypescriptに対応するからいいよね的な。
ちなみにまだexpo/universeリポジトリは公開になっていないよ的な。

とりあえずまさかの一週間程度で出してくるとは思わなかったっていう。
もしかしたらv32を年末に出してくるつもりもあるんじゃないかな的なみたいな。

Adsense