- 投稿日:2020-11-24T23:23:17+09:00
【Android】ObjectMetadata.setContentEncoding で文字化け【AWS】
AWS(s3) の Android サンプルコードを試していたのですが、
アップロードしたファイルの文字化けで手間取ったのでメモ。文字化けしたコードObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("text/plain"); metadata.setContentEncoding("UTF-8"); // "utf-8"も"UTF8"も試したけどダメうまくいったコードObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("text/plain;charset=utf-8");setContentEncodingなんて、期待しちゃうにきまってるじゃないですか。
- 投稿日:2020-11-24T20:16:52+09:00
【Mac】Android studioのAVD Managerからエミュレーターを起動すると「unable locate to abd」となる
環境
macOS Catalina 10.15.7
Android studio 4.1.1発生している事
AVD Managerからエミュレーターから
Pixel 2 API 28
を起動すると下記のような警告が出る。
エミュレーター自体はその後起動するのだが、Debugしてもアプリが動かない。
試した事
/Users/ユーザ名/Library/Android/sdk/platform-tools
配下にあるadbへのパスを通した後、以下コマンドを叩いてみたところデバイスは表示されるようになる。
※ない場合はDownloadして設置
SDK Platform-Tools リリースノート$ adb devicesAndroid Studioを再起動して再チャレンジしたが、解消されず。
よく見るとDebugした時のConsoleに以下のエラーが出ている。
当初のエラーとは因果関係はないかもしれないが、デバッグできない理由はこっちかもしれないのでこちらも合わせて要調査FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. > Failed to install the following Android SDK packages as some licences have not been accepted. build-tools;28.0.3 Android SDK Build-Tools 28.0.3 platforms;android-29 Android SDK Platform 29 To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager. Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html Using Android SDK: /Users/onsiter/Library/Android/sdk * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 5s Exception: Gradle task assembleDebug failed with exit code 1
- Flutterのエラーで良くつまずく所で、以下を実行して確認するとよいらしい。
flutter doctor
以下のように表示があった。
略 [!] Android toolchain - develop for Android devices (Android SDK version 30.0.2) ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses 略表示されてる通り、以下を実行。
flutter doctor --android-licenses
所々YesとNoを求められるので、全部「Y」で次へ進める。
「unable locate to abd」のエラーは解決しませんでしたが、デバッグはできるようになりました。
結果
まだ未解決
解決次第アップします。参考URL
AndroidStudid での “Unable to locate adb” の対処法
ターミナルにadbのパスを通す(Mac)
- 投稿日:2020-11-24T07:34:46+09:00
【モバイル】【Chrome】画面スクロール時に Resize イベントも同時に発火されるので注意する
結論
タイトルそのまま。
モバイル版の Chrome(Android, iPhone 問わず)では、画面をスクロールした際に resize イベントも同時に発火されるので、注意したい。
※Safari は不明。挙動
挙動自体は Chrome の仕様。
スクロールした際、 Chrome の画面上部のアドレスバーの表示・非表示が切り替わる。
それにより Chrome の画面サイズが変更するため、Resize イベントが発行されるとのこと。
詳細は以下を参照。参考
- https://developers.google.com/web/updates/2016/12/url-bar-resizing
- https://stackoverflow.com/questions/17328742/mobile-chrome-fires-resize-event-on-scroll
- Viewport height is taller than the visible part of the document in some mobile browsers
対策
画面描画時に画面サイズを格納しておき、
let width = window.innerWidth, height = window.innerHeight;Resize イベント発火時に現在の画面サイズと発火前のそれを比較することで、画面サイズが変わった場合にのみイベントを発火させることができる。
if (window.innerWidth !== width || window.innerHeight !== height) { //Do something }最後に
今回開発中の Web アプリにおいて、「モバイルを傾けた際に実行したい処理」を resize イベントに仕込んだところ、画面がスクロールされた際にも発火されてしまった。
以後気をつけたい。