バスくる開発環境あれこれ其の3

ソース管理を Git にした。
コードホスティングcodebreak;というサービスを利用することにした。
他のサービスと違って完全無料らしいので。

Java8はインストールしたが、まだビルド環境は未修正。
ビルド環境を修正する前に、まずはプログラムを修正する。

「バスくる」の初回リリースは2011年08月なのですが、当時はライブラリ等も少なくて、当然O/Rマッパーとかもなかった。
なので、「バスくる for 東急」のみO/Rマッパーは使っていない。
東急以外は OrmLite を使用しているので、東急も使用するようにする。

それが終わったらビルド環境を修正して、そのあとは、、、バスくるフレームワークかなあ。

「バスくる」は新規バス会社に対応する際、プロジェクトを丸っとコピペして、バスサイト解析回りを修正してリリースしてる。
このダサイ実装方法から脱却したい!

「バスくる」のベースシステムをフレームワーク化して、拡張性を高めたい。
そしたら、実装もしやすいし、リリースもよりスムーズになると思う。

Android Studioとgradle移行は、来年でイイかなあ〜

バスくる開発環境あれこれ

先日、「DELL XPS13 QHD+」を購入しました。

ということで、バスくる開発環境をノートPCに移行しようと思っています。
現在は1台のPCでしか開発しないので、「Visual SVN」でソース管理してますが、
ノートPCでも開発するなら無料コードホスティングサービスを利用しようかと思案中です。
となると、SVN→Git へ移行しないとなあ〜

とりあえず、ノートPCにJavaでもインストールしようかと思ったら、いつの間にJava7のサポートが終了してた。。。
ということは、Java8へ移行か、、、すんなり動くかな。。。

以前、Java6→Java7へ移行した時、ビルド通らなくて苦労したので、次も苦労しそうだな。
とりあえず、Java7で環境構築して、いずれJava8へ移行して、、、って、面倒クサあ〜
多分、一度Java7で環境作ったら、ずっとJava7で行くだろうし、時代に取り残されそうだな。。。

よし!サポート終了したなら、潔くJava8にしてみるか!!

その内、近い内、やってやるぞ!

本日のクラッシュレポート

バスくる for 国際興業のクラッシュレポートが飛んで来ました。

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:278)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: org.buskuru.kokusai.exceptions.ServerConnectionException: java.net.UnknownHostException: Unable to resolve host "play.google.com": No address associated with hostname
at org.buskuru.kokusai.util.HttpUtil.getHtml(HttpUtil.java:226)
at org.buskuru.kokusai.activity.BaseActivity$HtmlTask.doInBackground(BaseActivity.java:238)
at org.buskuru.kokusai.activity.BaseActivity$HtmlTask.doInBackground(BaseActivity.java:229)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 5 more
Caused by: java.net.UnknownHostException: Unable to resolve host "play.google.com": No address associated with hostname
at java.net.InetAddress.lookupHostByName(InetAddress.java:426)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
at java.net.InetAddress.getAllByName(InetAddress.java:220)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:674)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:511)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:489)
at org.buskuru.kokusai.util.HttpUtil.getHtml(HttpUtil.java:216)
... 9 more
Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Posix.getaddrinfo(Native Method)
at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
at java.net.InetAddress.lookupHostByName(InetAddress.java:411)
... 19 more

java.net.UnknownHostException とか書いてあるけど、、、何だろ?タイムアウトかなあ。。。

とりあえず放置で!

Flagmentへ移行中。。。

いつまでも非推奨クラスを使い続けるわけにも行かないので、Flagmentへ移行中です。

、、、が、Flagment難しいなあ〜

あと、何が便利か全く分からん。。。


■何となく理解したこと

・画面遷移はActivityで行う。
・イベントの実装とかはFlagmentに書けば良いのかな。
・ActivityとFlagmentを紐付ける。
・Flagment側の紐付けは、必ず onAttachメソッドで行う。
・FlagmentからActivityの参照はリスナ経由で行う。
 ※getActivity()ではダメらしい。
・PreferenceFragmentはインナークラスに書く。

、、、ぐらいですかね。


完成まで遠いなあ〜

今後の予定

・ロングタップ廃止
 ⇒最近のスマホは反応が良く、リストをロングタップするとクリックイベントも反応してしまう。
  直観的に操作して貰う為、分かりづらいロングタップではなく、リストにボタンを配置する。

・お気に入り名の変更を廃止
 ⇒ロングタップによるダイアログ起動である事と、そもそも不要だと思われる為。

・ボタンのアイコン化
 ⇒ビジュアル的に、多少はカッコ良くしたいので。

・お知らせ表示
 ⇒各バス会社の新着お知らせを表示したい。

・Flagmentへ移行
 ⇒バスくるは、ActivityGroupで構成されているが非推奨クラスなので、Flagmentへ移行したい。
  合わせて、ActionBarとTabを導入したい。

・次回リリース
 ⇒上記対応による各アプリのアップデート
  新たなバス会社を検討中(神奈中バス川崎市バス西東京バス、京成バス、東武バス

  ☆バスくる対応基準
  ・路線バス会社であること
  ・バス会社サイトで接近情報および時刻表の検索が可能であること
  ・接近情報および時刻表のいずれかで、50音検索できること
  ・接近情報および時刻表で停留所名もしくは50音検索できること
  ・接近情報および時刻表HTMLが解析可能であること