2013年12月24日火曜日

Android開発環境をAdt Bundle からIntelliJ CE に変更しました。

エンジニアの知人からイケてるエンジニアはIntelliJを使うと聞き
試しがてらIntelliJ CE(無料版)を使ってみたところなかなか良い感触だったので
本格的に乗り換えをしました。

ちなみにAndroidStudioはまだプレビュー版ということなので手はつけていません。
IntelliJ最新版の13はAndroidStudioからAndroid周りの機能を逆輸入したものらしく
Android関連は無料版でも十分とのことです(真意不明)。

1周間ほど使った感触は

・eclipse互換はありがたい
 →eclipseで作成してたプロジェクトをすんなり読み込んでくれる

・ライブラリ参照で理解に手こずる
 →コード上では参照できてるのにビルドで見つかれないとなる。
 →IntelliJのモジュールの仕組みを理解する必要あり。

・レイアウトはxmlエディターのとなりにプレビューあるのは有難い。
 →eclipseでの切り替えは地味にローディングしてしまうので。

・プログラムはコード補完はeclipseより優れてます。
 →こっちが求めてる候補が最上位に出てくる気がしてます。
 →あと地味に余分な()を入れないのでBSする手間が省けます。

・ターミナルは付属してますがFinderでファイルをコピーしてもフルパスでクリップボードに登録されないので不便。
 →adb install {フルパス} ができない。
 →adbコマンドは簡単なもののみintelliJで叩いてinstallは本家ターミナルで叩いてます。

・DDMSは別途Tool起動
 →1つのTool内で簡潔したい人は不便でしょう。
 →intelliJで出来るのはlogcatくらいです。
  ただしアプリでのフィルターは自分で検索窓に打ち込む必要があります。

・デバッグは慣れが必要な気がします。
 →僕はF6, F8でずっとやってきたのでどうしても未だにF6してしまう。
 →あと、インスペクタはどれですか?

・apk書き出しは簡単
 →一度keystoreとパスワード×2を登録してしまえば次からはクリックのみで署名付きapkにしてくれます。たまにマスターPass訊かれるけどそれでも簡単になります。

・Draw9patchはintelliJ内で起動。
 →地味に便利だけどDDMSもやってほしかった。。。

・ソース管理
 →Git、SVNはデフォルトで使える。

・DB管理
 →有料版にはViewerがあるとか。

とりあえずこれくらい。他にもあった気しますが。。。


総じてメリットデメリットありますが、個人的にはメリットが上回ってます。
なのでとりあえずこれからも使っていきます。

2013年9月27日金曜日

Jenkins導入①

Androidのテストをある程度自動化したいためJenkinsを導入することにしました。

将来的にはサーバーを立ててメンバーで共用する予定ですが とりあえず練習がてら自端末に導入してみます。

オフィシャルサイトからパッケージがDLして楽々インストールしようと思ったのですが、Mac版がDLできなかったので先人たちの知恵を借りてターミナルからインストールすることに。

Homebrew導入
http://qiita.com/skinoshita/items/fd146ac223bab433b348

Jenkins導入
http://tech.hazi.jp/2012-08/13/

おおー動いてるー!!



これから設定に入ります。

2013年3月8日金曜日

HTC J(butterfly)のメニューバー(…)を消す

HTC Jの端末で2.X系のアプリを使ったときに画面下部に出る・・・の黒いバー。 自分でも邪魔だと思ってたんですが、カメラ系を開発したときにあいつのせいで プレビューサイズと誤差が現れます。 2.X系のアプリでも消す方法を探していたのですが マニフェストのターゲットSDKバージョンを14に変える。 プロパティのbuild targetは9のまま。 で解決しました。 僕も勘違いしてたのですが、↑のふたつの要素はまったく別ものだったんですね。 ターゲットSDKは14〜の端末で14のスタイルとか振る舞いをするってだけ。 なんて簡単!!

2013年2月8日金曜日

Androidで国番号の取得

仕事でSimの電話番号と国コード(よく見る+81とか)を取得する必要があって そこそこ悩んだのでメモ。

  TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
  String number = telephonyManager.getLine1Number();
  String iccid = telephonyManager.getSimSerialNumber();
  Log.d(getClass().getSimpleName(), "TelephoneNumber " + number);
  Log.d(getClass().getSimpleName(), "ICCID " + iccid);
  
  //R.string.tel_formatの中身は+%1$s %2$s-%3$s-%4$s
  String internationalTelephoneNumber = 
    getString(R.string.tel_format, 
      iccid.substring(2, 4), 
      number.substring(1, 3),
      number.substring(3, 7),
      number.substring(7, 11));
  Log.d(getClass().getSimpleName(), "InternationalTelephoneNumber " + internationalTelephoneNumber);
良い感じに取得できた。