Andoridアプリの開発と本番の取扱をGradleでどうにかする
参考にしたサイトは以下。
https://firespeed.org/diary.php?diary=kenz-1824
Andoroidアプリ界隈で開発と本番は
開発=debug、本番=release
っぽいので以下はそれに則って記載する。
○一つの端末にデバッグバージョンアプリとリリースバージョンアプリを共存させたい
Module内にあるbuild.gradleを以下のとおり修正する。
buildTypes { debug{ applicationIdSuffix ".debug" } release { ・ ・ ・
ビルド時にデバッグバージョンアプリの時は、アプリIDに.debugがつくので、アプリバージョンIDがリリースバージョンと被らない=共存できる
○開発と本番で設定ファイルを切り替えたい。
以下のとおり設定ファイルを切り替えられる。
- 本番用定数
/src/main/res/values/strings.xml
<resources> <string name="app_name">Sample application</string> <string name="url">http://gati.net</string> </resources>
- デバッグ用定数
/src/debug/res/values/strings.xml
<resources> <string name="url">http://uso.net</string> </resources>
Javaのソースコード内で参照する際は普通にR.string.urlでOK。
WEBアプリのようにENVで切り替えられないのは少し不便。
WebView内で通信エラーでエラー画面表示さす
WebView内で通信エラーになった場合(net::ERR_CONNECTION_TIMED_OUT)、エラーページを表示さすようにハンドリング
#WebViewClient生成時に定義してあげる
○準備(既にassetsディレクトリがある場合は不要)
HTMLを置くassetsディレクトリを作成する。
AndroidStudioのプロジェクトのappを右クリック→[新規]→[New]→[Folder]→[Assets Folder]を選択。
app/src/main/asestsディレクトリが作成される。
また、build.gradleに以下のとおり追記する。(自動挿入されることもあるので、既にあったら編集不要)
android { sourceSets{ main{ assets.srcDirs=["src/main/assets"] } } ・ ・ ・
app/src/main/asestsにエラー画面のHTML(network_error.html)を配置して準備終了
○WebViewクラスにコーディング
次のとおりWebView生成時にオーバーラードして実装する。
WebView webView = (WebView) findViewById(R.id.webView); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView webview, int errorCode, String description, String failingUrl) { if(errorCode < 0){ // 自作のエラーページを表示 webView.loadUrl(“file:///android_asset/network_error.html”); } }
参考URL
http://www.hangout.co.jp/blog/archives/148
http://stackoverflow.com/questions/4997677/android-webview-onreceivederror
http://growsic.com/blog/androidlocalhtml/