いまさら再導入 peco for mac (1)
windowsの話は以前まとめていたけど、macでも使いたいので情報整理しておく
なんでpeco使うの
macでも とくにAS2.2最新版、16Gメモリ環境なのに平気で固まる固まる><
以下のどれか一つでも立ち上げるとダメだったりとか。。。
AS単体でも、AS上からスクショを撮るだけでもIDE応答なしで強制終了必要とか
うーん。メモリキツイなら原色で保存とかやめて欲しいんですけどね。。
で、ASの起動ただでさえめちゃ重いので、IDEの強制終了ってナンセンスなのです。
で軽量なターミナル辺りで処理したいなーという感じだったりします
メモリが豊富だからMacなら楽勝だと思ったんですけどね。Googleの人は32G以上の端末で開発してるのかな〜(遠い目
それ以前の基本的なこと(linuxコマンドライン)
直下のコマンドを実行する時
./gradlew tasks
と打っていましたが、
# use android sdk export JAVA_HOME=`/usr/libexec/java_home -v 1.8` export ANDROID_HOME=$HOME/android-sdks export ANDROID_BUILD_VERSION=23.0.2 export ANDROID_NDK_HOME=$HOME/android-ndk-r12b export NDK_TOOLCHAIN_VERSION=4.8 export NDK_CCACHE=`which ccache` PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/build-tools/$ANDROID_BUILD_VERSION:$ANDROID_NDK_HOME:$PATH # use cocos2d-x export ANDROID_SDK_ROOT=$ANDROID_HOME export NDK_ROOT=$ANDROID_NDK_HOME export COCOS2DX_ROOT=$HOME/cocos2d/cocos2d-x-3.1.1 export COCOS_CONSOLE_ROOT=$COCOS2DX_ROOT/tools/cocos2d-console/bin export ANT_ROOT=$HOME/homebrew/bin PATH=$COCOS_CONSOLE_ROOT:$PATH #===追加===== PATH=$PATH:.
の追加の部分を $HOME/.bash_profile
に記述しておくと
gradlew tasks
と打てるので気分が全然違います。./ だとコマンド入力補完も動かないですし・・
勿論事前にJAVA_HOME や ANDROID_HOME 等のPATHを通しておく必要があります
peco導入編
brew(nuget)からいれる =>バージョンが最新でない
githubのサイトからバイナリを落として、パス通す導入がベスト
だって未だに最新版が上がっていないんだもの。。
–select-1
とかすごく便利なのに。。
peco_darwin_amd64.zip のバイナリを落としてきます
Qitaの記事だとzshとの抱合せの話ばかりで
あんまり使えないんだよなーというのが正直な感想だったりします
Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ
の話は、導入しようとしても,rubyとか他の要因で導入ができなかった。。。
=>結局shで書く導入方法がベターでよね
という話
記述的な話
#!/bin/sh DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi
みたいな感じで対応するイメージになると。
場合によっては
awk ‘{print $1}’ の分離も必要と。
とりあえず、今まで作ったbatをshベースに書き換えてみると。
genymotion playerを動かす(pplay.sh)
ただ下記まで階層深くしないと認識しなかったなー(汗
linuxベースだとwinで断念した正規表現が使えるので、イメージ作成時に空白なしにする必要はないので気分は楽
mac版だとplayer起動時にライセンスチェックのダイアログはどうも出ていないみたい*1
#!/bin/sh PLAYER=/Applications/Genymotion.app/Contents/MacOS/player.app/Contents/MacOS/player VM_NAME=`VBoxManage list vms | peco` if [[ $VM_NAME =~ ^\"(.+)\".* ]] ; then NAME=${BASH_REMATCH[1]} echo "boot $NAME" $PLAYER --vm-name "$NAME" & fi
genymotion player強制終了用(pstop.sh)
#!/bin/sh VM_NAME=`VBoxManage list vms | peco` if [[ $VM_NAME =~ ^\"(.+)\".* ]] ; then NAME=${BASH_REMATCH[1]} echo "stop $NAME" VBoxManage controlvm "$NAME" poweroff fi
apkのinstall & run-apk(pinstall.sh)
- pinstall.bat
dir /s /b *.apk
=>
- pinstall.sh
find . -iname “*.apk” -type f
に置き換えるイメージになる
あとは未だに改善されないんだけど、
adb devices -l
で OSのversionを表示してくれないのですごく面倒。
どの端末に入れたか分かるようにする確認のために echoで表示している
#!/bin/sh TARGET_APK=`find . -iname "*.apk" -type f | peco --select-1` if [$TARGET_APK = '']; then exit fi DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi OS_VER=`adb -$DEVICE shell getprop ro.build.version.release` echo "APK :"$TARGET_APK echo "DEVICE:"$DEVICE echo "OS_VER:"$OS_VER PACKAGE=$(aapt dump badging $TARGET_APK|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}') ACTIVITY=$(aapt dump badging $TARGET_APK|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}') adb -s $DEVICE shell am force-stop %PACKAGE% #install-apk adb -s $DEVICE shell rm -fr /data/local/tmp/* adb -s $DEVICE install -r $TARGET_APK adb -s $DEVICE shell rm -fr /data/local/tmp/* # run-apk adb -s $DEVICE shell am start -n $PACKAGE/$ACTIVITY --activity-clear-top
まあunix系だとawkが使えるので、run-apkまで可能なんだよな(遠い目
下記はwinでは実行できなかったメモリンク exception-think.hatenablog.com
apkのuninstall(pdel.sh)
#!/bin/sh TARGET_APK=`find . -iname "*.apk" -type f | peco --select-1` if [$TARGET_APK = '']; then exit fi DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi PACKAGE=$(aapt dump badging $TARGET_APK|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}') OS_VER=`adb -$DEVICE shell getprop ro.build.version.release` echo "PACKAGE:"$PACKAGE echo "DEVICE :"$DEVICE echo "OS_VER :"$OS_VER adb -s $DEVICE shell am force-stop $PACKAGE adb -s $DEVICE uninstall $PACKAGE
スクリーンショット(pshot.sh)
導入を凄く考えたキッカケがこれ。ASのスクショだと
android6だとセキュリティの関係で
/data/local/tmp/ にしか取れなくなってる。。*2
mac/linux版だと screenshot2 というやつも有るんですけど、多分これがAS内部で使われているやつでこれ凄くメモリを食う
AS + screenshot2 だと 16GなMac環境だとたまに固まる。。
某外国人ブログの64GMac環境で 32G設定で動かすとか遣らんと快適でないんだろうか・・
- screenshot2のイメージ
#!/bin/sh DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi mkdir captures DATE=`date +"%Y-%m-%d-%H-%M-%S"` FILENAME="${DEVICE}-${DATE}.png" screenshot2 -s $DEVICE captures/${FILENAME}
- 従来どおりのイメージ
#!/bin/sh DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi mkdir captures DATE=`date +"%Y-%m-%d-%H-%M-%S"` FILENAME="${DEVICE}-${DATE}.png" FILEPATH="/data/local/tmp/${FILENAME}" adb -s $DEVICE shell screencap -p $FILEPATH adb -s $DEVICE pull $FILEPATH ./ adb -s $DEVICE shell rm $FILEPATH mv ${FILENAME} captures
でもこのままだと勿論画像サイズがデカいので
mogrify -resize 50% "captures/${FILENAME}"
とか末尾に追加して、 imagemagickで縮小しておくと尚ベターかと
相変わらず、下記の状況が変わらない限り永久に不滅です><
- 日本でのスクショエビデンスでテストを完了する文化は変わらないな〜
- テストコードのOK/NGではあかんの?
以前作ってた画面録画(pcap.bat –use screenrecord)
標準だとサイズデカいし、サイズ抑えるためにscreenrecord のoptionで rate抑えるとカクカクしてだめだし
結局使わないな~とか思いつつ。*3
で書いてるようにオプション無しで原寸でとって ffmpeg で縮小
が一番いい手なんだろうなと。
androidの画面録画(備忘メモ)
ディレクトリ移動系のやつ(pcd.sh)
windows版用に公開さてていたやつと使い勝手が違うんだけど、
自分で書くのも面倒なので覚書としてメモ*4
ちなみに
$HOME/.peco/.peco-cd
のファイルが事前にないとエラーになります。