「Expo」からAndroidエミュレータを使う
前回、「React Native」でスマホ側ネイティブのWebVewを使うことについて書いた。
この時、Androidのエミュレータを使って確認したので、その部分について書く。
「Expo」プロジェクトで下記のコマンドを実行するとローカル環境で「Metro Bundler」が19001番ポートで上がる。
yarn start
内部では、「expo start」コマンドがオプション無しで実行される。
(Expoプロジェクトの「package.json」より)
{ "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", "eject": "expo eject" }, ...
ただ立ち上げただけの状態で「Run on Android device/emulator」を実行すると、「Android Device」が無い旨のエラーになる。
Couldn't start project on Android: Error running adb: No Android device found. Please connect a device and follow the instructions here to enable USB debugging:
https://developer.android.com/studio/run/device.html#developer-device-options. If you are using Genymotion go to Settings -> ADB, select "Use custom Android SDK tools", and point it at your Android SDK directory.
今回はエミュレータを使うことにする。
「Android Studio」をダウンロード。
https://developer.android.com/studio/
「3.5.3 for Linux 64-bit」を選択 (ダウンロードサイズは738 MB)
エミュレータはデフォルトで1つ入っている。
% $ANDROID_HOME/emulator/emulator -list-avds Nexus_5X_API_29_x86
エミュレータを立ち上げる。
% $ANDROID_HOME/emulator/emulator -avd Nexus_5X_API_29_x86
これで、ExpoプロジェクトからAndroidエミュレータ経由でアプリケーションの動作確認ができる。
同様に、iOSで確認するには、実機か開発環境が必要。
iOS実機は無いので、エミュレータということになるが、Linuxマシンなので断念。
前回も書いたが、ブラウザで済むなら、あえてネイティブ化する必要もない気がする。
ネイティブでないと実現できないこと・・・センサーや細かい制御部分(性能含む)だろうか。
将来的に、モバイルでもセンサーコントロールがブラウザ経由で出来るようになって、性能も出るようになったら(CPUやメモリの進化)、一層ネイティブの優位性は失われ、「ブラウザでいいじゃん」ということになる。
[Web API(センサー)]
https://developer.mozilla.org/ja/docs/Web/API/Detecting_device_orientation#Browser_compatibility
「React Native」も学習コストはかかるし、Airbnbが「React Native」をやめてネイティブに戻った話もある。
ネイティブをやろうとしても、言語や環境に対する学習コストもかかるし、どれに踏み込むか・・・迷う。
OS | 開発環境 | 開発言語 |
---|---|---|
iOS | XCode | Swift、Objective-C |
Xamarin | C# | |
Android | Android Studio | Kotlin、Java、C、Ruby |