- 投稿日:2019-07-10T23:56:19+09:00
開発者向けオプションが有効なユーザに対してダイレクトリクルーティングする
タイトルは若干釣りです。元ネタはこちら
設定の取得方法を調べたのでメモしておきます
開発者にだけ採用ページへのリンクを表示するようにすれば、サービス愛を持ったエンジニアに応募してもらえてみんなハッピーになるはず・・・・・・!?val status: Int = Settings.Secure.getInt(this.contentResolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0)有効にしている端末では1が返却されました。
無効な端末では0が返却されてました(手元になかったのでシミュレータで確認)
- 投稿日:2019-07-10T18:57:10+09:00
RxJava+Kotlinでログを吐かせる便利拡張関数
fun <T> Observable<T>.logging(tag: String = Throwable().stackTrace[1].methodName): Observable<T> = this .doOnSubscribe { Log.d(tag, "doOnSubscribe") } .doOnNext { Log.d(tag, "doOnNext = $it") } .doOnError { Log.d(tag, "doOnError = $it") } .doOnComplete { Log.d(tag, "doOnComplete") } .doOnDispose { Log.d(tag, "doOnDispose") }使うとき
rxObject .map { /* something to do */ } .logging("rxObject") .subscribeBy { /* something to do */ }みたいにすれば、ログが吐かれる
- 投稿日:2019-07-10T17:35:48+09:00
プロファイラーを使ってOculus Quest実機での性能を計測する
はじめに
Oculus Questの実機でボトルネックになってる原因を確認したいなと思ったので、手順を残しておきます。
計測されたデータの分析については書きません。
参考:最適化をする前に覚えておきたい技術前提
自分で作成したapkをOculus Questで実行できていること
環境
・Unity 2018.3.8f1
・USBでQuestに接続手順
1. Autoconnect Profilerにチェックを入れてビルド
計測したい対象のアプリケーションをビルドする際にDevelopment BuildとAutoconnect Profilerにチェックを入れてビルドします。
2. apkファイルをQuestにインストール
作成したapkファイルをQuestに
adb install
でインストールします3. プロファイラの情報に接続するためのコマンドを実行
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}
のコマンドを実行
※1 bundle identifierはPlayer Settings → Other SettingsのPackage Nameを設定(下の図の場合com.Sample.Test)となり、adb forward tcp:34999 localabstract:Unity-com.Sample.Test
のコマンドになる
※2 Build And Runでインストール、アプリ起動する場合は内部的にこのコマンドを実行してくれますが、私は普通にインストールしてこのコマンドを実行する方が好きです。4. プロファイラウィンドウを開く
Window → Analysis → Profilerを選択し、プロファイラウィンドウを開きます
5. アプリを実行、計測する
USBを接続したままでアプリを実行します。そしてプロファイラウィンドウのEditor → AndroidPlayerを選択します。あとは計測したいタイミングでRecordのボタンを押せば計測された情報が流れてきます。
あとはプロファイラを操作してボトルネックの箇所を特定しましょう!
- 投稿日:2019-07-10T15:52:53+09:00
OculusGo/Questのアプリを外部から無線で立ち上げる方法
イベントのデモなんかで体験者にアプリ起動方法を説明するのがメンドイので、なんとかできんかなぁと思ってたら普通にできたので、残しておきます。
準備
Oculus Go / QuestとPCをUSBで有線接続し、adbを実行できる状態にしておきます。
adbを実行するための環境はこれを読んでる方なら大体終わってると思うので割愛します(ネット上にいくらでも書いてあるし)adbコマンドを打ち込んでいく
1. デバイスのIPアドレスを取得
cmd.batadb shell ifconfig wlan0出力に"inet addr:192.168.x.x"みたいなのが出るのでそれがデバイスのIPアドレスです。
↓で使うのでコピーしておく。2. TCP/IP接続
cmd.batadb tcpip 5555 adb connect 192.168.x.x:5555上記connectが成功するとwifi経由でデバイスに対してコマンドを送れるようになったので、PCとデバイスのUSB接続を切断しておkです
3. 実行するアプリケーションのパッケージ名を取得する
cmd.batadb shell pm list packageこれはビルド時に自分で命名しているので、わかっている場合は飛ばしておk。
売り物のアプリでパッケージ名が分かりませんってな時にでも使ってください。
上記を実行するとデバイス内にインストールされたパッケージ名の一覧がドバーっとでるので
その中からお目当ての物を自力で探してください。4. 実行するアプリケーションのクラス名を取得する
cmd.batadb shell pm dump パッケージ名上記を実行すると、これまたドバーっと色々情報が表示されて嫌になりますが、見るのは上記を実行した行の上から5行目辺りだけ。
cmd.batadb shell pm dump パッケージ名 DUMP OF SERVICE package: Activity Resolver Table: Non-Data Actions: android.intent.action.MAIN: xxxxxxx パッケージ名/クラス名 filter xxxxxxx // ←ここ Action: "android.intent.action.MAIN" Category: "android.intent.category.INFO" AutoVerify=false上記の「パッケージ名/クラス名」の部分に書かれている文字列をコピペしておいてください↓で使います。filter xxxとかは要りません。
ちなみに、クラス名はUnityでOculusGo/Quest向けにビルドしている場合はcom.unity3d.player.UnityPlayerActivity
になります。
なので、毎回この手順が必要というわけではないです。5. アプリを実行する
cmd.batadb shell am start -n パッケージ名/クラス名はい。これでOculusGo /Quest でアプリを外部から無線で立ち上げられたはずです。ヤッター
6. アプリを終了する
adb shell am force-stop パッケージ名上記でアプリを強制終了できる