バスくる開発環境あれこれ其の3
ソース管理を Git にした。
コードホスティングはcodebreak;というサービスを利用することにした。
他のサービスと違って完全無料らしいので。
Java8はインストールしたが、まだビルド環境は未修正。
ビルド環境を修正する前に、まずはプログラムを修正する。
「バスくる」の初回リリースは2011年08月なのですが、当時はライブラリ等も少なくて、当然O/Rマッパーとかもなかった。
なので、「バスくる for 東急」のみO/Rマッパーは使っていない。
東急以外は OrmLite を使用しているので、東急も使用するようにする。
それが終わったらビルド環境を修正して、そのあとは、、、バスくるフレームワークかなあ。
「バスくる」は新規バス会社に対応する際、プロジェクトを丸っとコピペして、バスサイト解析回りを修正してリリースしてる。
このダサイ実装方法から脱却したい!
「バスくる」のベースシステムをフレームワーク化して、拡張性を高めたい。
そしたら、実装もしやすいし、リリースもよりスムーズになると思う。
Android Studioとgradle移行は、来年でイイかなあ〜
バスくる開発環境あれこれ其の2
Eclipse用ADTが終了するらしい。。。
バスくるの開発環境は、
・Java7
・Eclipse + ADT
・Maven3
・SVN
なので、これを、
・Java8
・Android Studio
・gradle ※Maven3が無理だったら
・Git
に移行しなきゃ。。。
メ・ン・ド・ク・サ・イ・・・・・
バスくる開発環境あれこれ
先日、「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が解析可能であること