visible true

技術的なメモを書く

Android

ここがつらいよ realm-android 0.81.1

Realmわりといいんですが「簡単!便利!スナック!」というイメージだったのでスナックボリボリする感じで適当に書いてたらガンガンクラッシュ*1して「スナックじゃないな?ぬか漬けかな?」みたいな気持ちになりました。とりあえず一旦ぬか漬け*2部分をまと…

Data Binding Libraryが吐くコードがLintに怒られる時がある

問題 booleanを使ってandroid:backgroundの値を制御するようなレイアウトを書いたとします。 <data> <variable name="focused" type="boolean" /> </data> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@{focused? @drawable/shape_focused : null}" > この時Data Binding Libraryが以下のようなコード…</framelayout>

Gradleで相対パスでライブラリプロジェクトを参照する

パッと出てこなかったのでメモっとく こんな構成の時、appからlibraryを参照したいとする。 myProject - app targetLibrary - library myProject/settings.gradle include 'app', ':..:targetLibrary:library' myProject/app/build.gradle dependencies { co…

minSdkVersion 17未満でもleanbackを使う方法

leanbackってminSdkVersion 17なので10*1とか14*2とか16*3とかしてると怒られるんですよね。 AndroidManifest.xml <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/> OK。TV対応待ったなし。 *1:死 *2:おお *3:よしよし</uses-sdk>

Data BindingのテストはAndroid5.0以上の環境じゃないと動かない

※ 2015/06/28 20:31追記 ART環境だったら動きました。4.4系でもRuntimeをARTにしておけばテスト動きます 問題 Data Binding + Multidex倒したら「クックック奴と倒すとはな...さあやろうか」って感じで新たな問題が出てきました。テストコード側でBindingクラスに…

Data BindingとMultidexの兼ね合いの問題を大体倒したので実用段階待ったなし

Data Bindingを導入したかったけどmultidexの兼ね合いで躓いたので問題をまとめます。 - visible trueで死んでましたが、設定でなんとか頑張れる事がわかったのでメモします。 結論 これらを加えるだけ。 build.gradle android { defaultConfig { multiDexEn…

Data Bindingを導入したかったけどmultidexの兼ね合いで躓いたので問題をまとめます。

※解決しました http://sys1yagi.hatenablog.com/entry/2015/06/17/190547 個人アプリにフォイフォイ導入して上手く行ったので仕事の方でも、と思ってたら思わぬ罠で挫折したので記録しておきます。 環境 com.android.tools.build :gradle:1.3.0-beta3 com.an…

Android Data Binding LibraryのProguard設定

個人アプリに導入してリリースした。Proguardで怒られたので以下の設定を追加した。 -dontwarn android.databinding.** Release CIでコケるので心臓に悪いよね。

Android Data Binding Library 雑感

Google I/O 2015!! Data Bindingのサポート出ましたね。とりあえずアレコレ触ってみた雑感を書きます。Data Bindingの使い方や機能全般に関する説明はData Binding Guide | Android Developersを参照してください。 ※Android Data Binding LibraryはまだPrev…

Android StudioのUpdateで誤って"ignore This Update"を選択してしまった場合の対処法

I/O 2015! AS 1.3 Previewが出た!わいわい! でもまぁちょっと一旦待つか。破壊的変更入ってると怖いしね。とかいってダイアログを閉じたつもりが「ignore This Update」を押してしまった!! 無慈悲なignore This Update その後何度Update Checkしてもこれ…

avd-peco作りました

sys1yagi/genymotion-peco · GitHubに続いてavd-pecoというのも作りました。 sys1yagi/avd-pecogithub.com こちらはavd名を一覧して起動するやつです。最近のAndroid Emulatorはx86を使えば結構速いのと、バージョンの品揃えはサイコーなので使う機会が増えてい…

Retrolambda+Robolectricでテストを動かす為にtask.name ==~ /compileTest.*Java/をフックしているのにcom.sun.tools.javac.code.Symbol$CompletionFailure: java.lang.invoke.MethodTypeが見つからずエラーになる問題

タイトル長いな。 問題 Retrolambda+Robolectricでテストを動かす為に以下の様なコードをbuild.gradleに書く必要があります。正規表現で一致するタスクの時にビルドパスをretrolambdaに向けたり、コンパイラをJava8に変更するコードです。 参考 : Android - …

Gradle Plugin 1.1.0-rc1でJVMでテストを実行出来るようになったらしい

New Build System - Android Tools Project Siteの1.1.0-rc1のRelease Noteに以下の文が Unit testing support. Unit testing code is run on the local JVM, against a special version of android.jar that is compatible with popular mocking frameworks…

BintrayにAndroidのライブラリをアップする

Maven Centralは拝承しないといけなくて面倒だ、Bintrayは何か適当にアップ出来るらしいという事でBintrayに飛びついたのですがリポジトリにライブラリをアップする手順が難解で挫折し続けていました。途方に暮れていた所社内で以下のBintrayのページとリポ…

RxJavaをコレクション操作ライブラリとして捉えれば学習コストと導入リスクを低減できるのではないか

とりあえずRxJavaをプロダクトで使いたい、しかしチームに気軽に持ち込むには学習コストが高すぎたり習熟度が低い状態ではメンテナンスでリスクになったりするので導入できない。しかし導入したい。導入するにはどうしたらいいんだろうということで、RxJava…

RxJavaのObservable<T>でOptional<T>を代行する

RxAndroidとRetrolambdaで大体Java8をAndroidに持ち込むでOptionalは使えず、良さ気なライブラリは見当たらないと書いたのだけど、そもそもRxJavaのObservable<T>はOptional<T>と同等の機能を持ってるっぽくない?という事に気がついて試してみたらOptional<T>でした</t></t></t>…

Java 8: No more loopsをRxJavaでやる(Androidの環境で)

Java 8: No more loops Java 8: No more loops Java8のStream APIを使ってforループを無くすという記事。面白そうだったのでRxJava化しました。AndroidだとJava8 Stream API使えないですからね (´・ω・`)。Java8世界ではRxJavaってどういう位置づけなんでしょ…

RxAndroidを使ってEditTextで初期の高さを指定しつつ入力に従って動的に高さを調整する

※追記 これでいけました!minLinesというのがあったとは。RxAndroidなんかいらんかったんや! @sys1yagi これって、 android:inputType="textMultiLine" android:layout_height="wrap_content" android:minLines="5" でできるような気がします、が、違います…

RecyclerViewはListViewの代替ではないよねという話

※2016/07/16 追記: これもう大分古いのでこれからAndroidやるなら最初からRecyclerViewからやったらいいんじゃないでしょーか Lollipop周りについてあんまり興味が湧かないと思いつつも触らないわけにもいかないしな、という感じでボチボチRecyclerViewやCar…

RxAndroidとRetrolambdaで大体Java8をAndroidに持ち込む

※これもう大分古いので AndroidでJava8環境 2016 - visible true も御覧ください。 はじめに RxAndroid(というかRxJava)とRetrolambdaでそろそろ大体Java8な環境でAndroidアプリケーションが開発出来るのではないかと考えて試してみた。 2014年4月頃のRetrol…

MockWebServerRuleを使ってOkHttpClientのリクエストをmockする

Mockito1.9.5+OkHttp2.1.0でリクエストをmockするを書いた後、mockwebserverを使った場合についても考えた方がいいかもなーと思って試してみた。結果的にはmockwebserver使った方がいいなーという感想。OkHttpClientを直接mockしたかったのは、リクエストURL…

Mockito1.9.5+OkHttp2.1.0でリクエストをmockする

OkHttpのリクエスト周りのmockingが結構面倒くさかったのでメモ。 やりたい事 ベタ書きすると以下の様な事がしたい。単純にレスポンスをmockして返却したいデータをセットしたい。 OkHttpClient okHttpClient = mock(OkHttpClient.class); String body = "ho…

daggerで引数のあるコンストラクタを持つModuleをincludesして使う

概要 例えば以下の様なModuleがあったとして(injectsとかは省略している)、 @Module(library = true) public class AppModule { Context context; public AppModule(Context context) { this.context = context; } @Provides public Context provideContext(…

support packageに追加されたtesting-support-libを使ってAndroidのテストをJUnit4で書く

概要 Espresso 2.0 が Android support library の一部としてリリースされた - ひだまりソケットは壊れない Espresso 2.0 が Android support library の一部としてリリースされた - ひだまりソケットは壊れない espressoの他にtesting-support-libというの…

gradle-tab-completion.bashをMacに導入する際に必要な修正と、初回実行時の留意点

Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ われらが@tomorrowkeyが書いてくれた↑で紹介されている、Gradleのタスクをcompletionし…

ビルド時にjava.lang.OutOfMemoryError: GC overhead limit exceededで死ぬときはdexOptionsにjavaMaxHeapSizeをセットすると良い

タイトルそのまんま。gradleでビルドしていて以下のエラーに出会ったら、 java.lang.OutOfMemoryError: GC overhead limit exceeded build.gradleのdexOptionsにjavaMaxHeapSizeを指定すれば大体直る。 android { dexOptions { javaMaxHeapSize "2g" } } こ…

Android Studio 1.0でrobospock-pluginが軒並み動かないので直して使う(差分はPR済)。

Polidea/RoboSpock Polidea/RoboSpock · GitHub RoboSpockの導入方法について日本語があんまり見当たらないのでメモっとこうと思ったら以下の環境で動かなかったので色々やった結果結局Pull Request投げる事になった。 Android Studio 1.0.1 gradle 2.2.1-al…

MultiDexにしたアプリケーションでRobolectricがコケる

問題 以下の様にMultiDexに対応させたアプリケーションで、Robolectricのテストが動かない。 build.gradle defaultConfig { //... multiDexEnabled = true } AndroidManifest.xml <application android:name="android.support.multidex.MultiDexApplication"> </application> こんなエラーが出る。 java.lang.RuntimeException: java.lang.RuntimeExc…

Jack and Jillを試す

Jack and Jillとは Jack and JillはBuild Tools version 21.1.1以上から追加された新しいAndroid用のコンパイラ群だそうです。 Experimental New Android Tool Chain - Jack and Jill - Android Tools Project Site Experimental New Android Tool Chain - J…

AndroidObservable.bindActivityは自動でobserveOn(mainThread())してしまうのでその後にmap等をつなげるとUIスレッドで実行される

概要 RxAndroid 0.22.0ではAndroidObservableというActivityやFragmentの状態を考慮してコールバックしてくれるObservableを作れるUtilityがある(最新のRxAndroidではAppObservableという名前になってるぽい)。 subscribeOn(newThread())なObservable、つま…