Unyablog.

のにれんのブログ

Android の CI テストがたまに落ちるので戦った

前々回と前回の記事です。

結局 travis でも CircleCI でも確率的に落ちるじゃん的な話でした。

travis だと 1/2、 CircleCI だと 1/4 ぐらいで落ちてしまいます。さすがにこれだけ落ちると鬱陶しいのでなんとか直したいところ。

ということで直すために頑張った話です。

状況

続きを読む

circleCI で Android アプリのテストをする (travis から移行)

前回の記事です。

circleCI に移行する

前回の記事でまあうまく行ったのですが結構な確率で落ちる。masterが進んでるわけではないのに pr と pull で違う結果になったり、 merge すると落ちたりしていました。

いろいろやってみたのですが結局不安定なまま変わらなかったし、travisfirefox で見るとめちゃくちゃ重い*1といった理由で travis で消耗するのをやめようということになりました。

そして CircleCI を使ってみました!

CircleCI は travis CI と同じように CI サービスの一種です。travis は open source では無制限ですが、 CircleCI では4コンテナに制限されるみたいです。*2

まあ4コンテナもあれば十分でしょう。

build.gradle とかは前回の記事を参考にしてください。

.travis.tml から circle.yml へ

*1:Chrome だとそんなこと無いんですが...

*2:closed だと1コンテナのみ

続きを読む

travis で Android (Kotlin 付き) のテストをするときにしたことのメモ

自分の作ってるアプリにテスト書いてtravisでやってくれるようにした話です。

テスト

長らくテスト全く書かずにしてきたのですがいい加減そろそろテスト書かないとなあと思ったのでテストをシュババっと書きました。*1

とりあえず gradle にシュッとそれっぽい依存を書いて

そして kotlin でパパっとテストを書きました。*2

kotlin でテストできるか不安でしたが java でちょっとだけ書いてそれを convert したものを参考に書いたら普通に動いてくれたので安心。

ということでとりあえずテストは完成。実機でも無事通りました。

travis の前準備(キーの暗号化)

*1:軽いテストでActivity関係の闇なテストは行っていません

*2:expected と actual の順番がミスって逆になっています http://qiita.com/deflis/items/645451d7fd85932d1134

続きを読む

macのスクリーンショットのファイル名変更したくてショートカットを設定した話

mac でスクショを取って Dropbox に移動し、更に IFTTT 使って Google Drive に移送したかったのですが残念ながら mac のデフォルトのファイル名だとスペース入ってるからか IFTTT が認識してくれなかったのでファイル名を変更しようとしました。

検索したら

/System 内部をいじる方法がありましたが Rootless 使っているので残念ながら却下。

結局 Karabiner で

を参考にして Fn キーで ScreenShot コマンドを走らせるようにしました。

screencapture -i ~/Dropbox/Screenshots/Screenshot_`date '+%F_%H.%M.%S'`.png

を走らせればいい(内部で date コマンドを走らせて日付と時刻をファイル名に挿入しています)ので、

<vkopenurldef>
  <name>KeyCode::VK_OPEN_URL_SHELL_SCREENSHOT</name>
  <url type="shell">
    <![CDATA[   screencapture -i ~/Dropbox/Screenshots/Screenshot_`date '+%F_%H.%M.%S'`.png   ]]>
  </url>
</vkopenurldef>

のようにして設定しました。*1

*1:Dropboxスクリーンショット連携機能を使うと Desktop から Dropbox に移動されるときにリネームされてスペース入ってしまうので直接突っ込んでます

kotlin 1.0 beta candidate に上げて戻した話 (betaで解決)

先日 kotlin の 1.0 beta がリリースされました。

AndroidStudio を立ち上げるとアップデートできるよ!と言われたので早速アップデートして 1.0 beta を入れてみました。

リストに [index] でアクセスできたり static 関係の java との融和性が上がったりしてよさ気だったのですが、

Android 4.3 以下で INSTALL_FAILED_DEXOPT エラーが出るようになってしまいました。

初めは2.3以下で発生するメソッド数のやつかな~って思ったのですがどうも違う。じゃあ kotlin か~~ってなって build.gradle のバージョンをもとに戻したけどそれでもうまくいかない。ましてや謎の Syntax Error が出て来る...

ということでプラグインごとひとつ前に戻すことにしました。

幸いプラグインの過去バージョンは https://plugins.jetbrains.com/plugin/6954?pr=&showAllUpdates=true に全て公開されているので、直前に使っていたバージョンをダウンロードし、プラグインマネージャから 'Install from Disk' を選択しインストール、再起動することで Syntax Error もなくなり古い機種でもできるようになりました。

まさか 4.4 / 4.3 の変化でエラーが出るとは...androidは奥深いですね(汗)

追記: 2015/11/06

kotlin 1.0 beta 正式版にアップデートするとインストールできるようになりました。めでたい!

pom.xml なプロジェクトをAndroid Library にして IDE に読ませる

picasso で resize できるの便利なのですが、resize したときに callback がしたいと思ったので fork した ものを AndroidStudio で頑張って読み込ませた話です。

picasso には build.gradle がなく pom.xml 的なアレ。なのでこのままだと AndroidStudio で読み込んでくれません。

手段としては

などあるのですが、複数のマシンでいい感じに開発したかったので git submodule を使いたい。ということで gradle ファイルを自分で作りました。

といっても pom なプロジェクトのトップで

gradle init --type pom

とすればある程度いい感じに build.graedle が生成されるので、そこを弄ります。

続きを読む

mac OS X El Capitan に上げた感想

  • brew 使えるので安心
    • brew cask もだいたい使えるので安心
    • brew cask コケてもリカバリ入って Rootless オフにすればアンスコ成功するので安心
  • TeX 軽くなら使えるので安心
    • フォント埋め込みとかはしないので安心
  • split view 思ったより使わないので安心
  • 電池持ちは相変わらず良いので安心
  • リアルタイム変換は使ってないので安心
  • ちょっと軽くなった気がするので安心
  • アプリはたいてい使えるので安心
  • Android Studio 二、三時間に一回強制終了するので安心*1
    • まれにしか画面ちらつかないので安心
    • 前後2分ほどの作業内容しか失われないので安心*2
  • 管理者パスワード打つときにフリーズしても電源キー長押しすれば終了できるので安心
  • Slack の太い文字が異常に太くて見やすいので安心
  • まあ普通に使えるので安心

安心。

*1:Yosemiteにはない安心

*2:最悪