海月玲二
2016-06-16(木)

無題

Android Studioでは(というかGradleでは)Build Flavorとかいうのがあって,同じアプリをちょっと違う内容でビルドできるとかいう話だ.

というわけで,Android SKKでキリル文字付きバージョンを統合できるかと思っていろいろ試したけど,どうも無理っぽい.すべては,そもそもJavaに#ifdefっぽい条件コンパイルがないせいである.

たとえば,ClassAがfoo flavorにだけ存在する状態で,
if (BuildConfig.FLAVOR.equals("foo")) {
a = ClassA.someMethod();
}
みたいなことをやると,それ以外のflavorではビルドエラーになる.#ifdefとかと違って,この中が「完全に無視される」というわけじゃないからだろう.くそう面倒くせえ.今までどおりdiffを手でパッチしたほうがマシか.

あと,最近のAndroid Studioではエミュレータが速くなったからgenymotion使わなくてもいいかな,と思ってたけど,そうでもなかった.

まず,なんか最近のやつだとスリープから復帰できないときが多い.さらに,それより問題なのは,イメージのアップデート時に/tmpに巨大な容量を必要とすることだ.おれの/tmpはRAMディスクなので,そんな5GBとか6GBとか気軽に要求されても困る.Android Studioを立ち上げて,メニューのhelp→Edit Custom VM Optionsとかで一時的に-Djava.io.tmpdir=/home/foo/tmpみたいなのを入れれば回避できるけど,いちいちそんなことするのも面倒くさい.やっぱりgenymotionは使いやすいと思う.

AndroidのIMEは,たいてい,状況に応じてEnterキーが「送信」とか「完了」みたいな動作をするようになっているようだ.とりあえずAndroidSKKでもそんな感じで動作するように修正してみた.別にボタンの見た目は変わんないけど.

要は,単純にキーイベントを発生する代わりに,EditorInfoを覚えておいて適切にInputConnection#performEditorAction()するようにしただけだ.

どうも,世の中には「送信」などのボタンを自前で用意していないアプリがあるらしく,この機能がないIMEでは使えないらしい.俺はそういうのを使っていないので,いちおうテストしたつもりだけど,本当にこの修正でいいのかよくわからない.なんか違うようだったらコメントください.

あとキリル文字モードパッチについては,もうブランチを分けておいてバージョンアップごとにgit rebaseしたほうが楽なような気がしてきた.Flavorって基本リソースを変えるぐらいしか想定してない気がする.

【このトピックへのコメント】
  • まはる早速ありがとうございます。今のところ快適に使えてます!カーブフリックを覚えるともう他のIMEには戻れないので、いろいろ要望してすみません。これからもよろしくお願いします。(2016-06-21 10:16:05)