ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Android アプリ

Android アプリ開発で使える XML の Tools 属性

Android アプリのための XML ファイルには、開発時にのみ使用される追加的な情報を書くために使用される名前空間が用意されています。http://schemas.android.com/tools というのがその名前空間で、普通は名前空間接頭辞 (プレフィクス) tools: に結び付けら…

Android Gradle プラグイン 0.7.2 でビルド済みの JNI 共有ライブラリを扱えるようになった

「New Build System - Android Tools Project Site」 に書かれているように、Android Gradle プラグイン 0.7.2 から、ビルド済みの JNI 共有ライブラリ (.so ファイル) を配置する jniLibs フォルダがソースセットに追加されました。 Add jniLibs folder to …

Android アプリに Apache License, Version 2.0 のライブラリを組み込むときにしなければならないこと

Android アプリを開発していると Apache License, Version 2.0 のライブラリを使うことが多いと思います。 Licenses | Android Developers 上のページを見るとわかるように、Android Open Source Project は基本的に Apache License, Version 2.0 ですし、An…

Android Studio 0.4.0 への移行

Android Studio 0.4.0 がリリースされていますね! わー、ぱちぱち。 Android Studio 0.4.0 - Android Tools Project Site Android Studio 0.4.0 への移行は、単にバージョンを上げるだけという感じではなかったので、苦労した箇所などを簡単にメモしておきま…

Android Studio で Volley を使う

以前、Android Studio で Volley を使う方法として 『一度 Eclipse にインポートして、build.gradle を生成しつつエクスポートするのが良さそう』 と書きました。 Android アプリ用ライブラリ Volley を準備する - ひだまりソケットは壊れない しかし、今で…

スワイプでページ送りできるタブ付きの Android Activity を作る

スワイプでページ送りができて、Activity 上部にタブでページ名が並んでいる (もちろんタップしたらそのページに移動する) というような Activity を作る方法です。 サンプルのスクリーンショット 次のような感じです。タブ部分をスワイプしたら、タブに並ん…

Volley のテスト (com.android.volley.toolbox.HttpHeaderParserTest) に失敗する問題と対策

Android アプリ用のネットワークライブラリ Volley のテストを実行すると、一部環境でテストに失敗することがある問題についてです。 対象とする Volley のバージョン 現時点の master ブランチの最新コミット (コミット faa2a13dce6) を対象としています。 …

Android の ListView のアイテムの子要素の android:height="match_parent" が効かない

Android アプリ開発で、ListView の項目として FrameLayout や RelativeLayout を使っていたのですが、その子で android:height="match_parent" の指定がなされている view が全く表示されなくて困っていました。原因を探ってみたところ、どうやら ListView …

Android アプリ開発における SQLite のロックとマルチスレッドの話

Android アプリ開発で SQLite を使っていると、しばしば次のような例外が投げられることがあります。*1 android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5) 軽く調べてみたところ このエラーをぐぐってみると、「複数スレ…

『Android アプリ開発のための Java 入門』 を公開しました

『Android アプリ開発のための Java 入門』 というものを Gist で公開しました。 Android アプリ開発の勉強会を行うときに書いたものです。Java をちゃんと使いこなすために知っておくべき必要最低限のこと をまとめたつもりですので、Android アプリを開発…

Android の Bitmap と BitmapDrawable はそれぞれ密度 (density) を保持している

Android アプリ開発時の画面密度とビットマップ画像に関する話です。 前提知識 画面密度 (Screen density) 画面上の実際のサイズ中におけるピクセル量; 通常は dpi (dot-per-inch) と呼ばれる。 例えば “low” 密度の画面は、“normal” や “high” 密度の画面と…

Android アプリで Google Drive API を使う

Android アプリから Google Drive のファイルを扱う方法です。 Google Drive SDK のドキュメント: Drive | Google Developers 前提 ここでは、次のような開発環境を前提としています。 Android Studio を使用 (Android Studio 2.7 *1 ) ビルドには Gradle を…

Android アプリ開発のためのサポートライブラリについて

Android の新しい API level で追加された機能を古い API level でも使用できるようにしたり、その他便利機能を提供するサポートライブラリが、Android SDK により提供されています。 それなりに古い端末もサポートしながらアプリ開発をする場合はサポートラ…

Jenkins 上で Android アプリのテストを実行する方法 (Gradle 使用)

最近 Jenkins 上で Android アプリのテストを実行できるようにしたので軽くメモしておきます。Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介出版社/メーカー: …

Android アプリビルド時に packageNameSuffix を使った時にはまったこと

以前紹介したように、Gradle の Android プラグインを使って Android アプリをビルドする際、packageNameSuffix により、ビルドタイプごとにパッケージ名に接尾辞を付けることができます。 これにより、開発中のパッケージと、正式リリース版のパッケージを…

Android アプリ開発独習メモ #5 — パフォーマンスに関するチップス

< Android アプリ開発独習メモ #4 | Android アプリ開発独習メモ #6 >Google による Android アプリ開発のガイドを読み進めていくシリーズ。 今回は “Best Practices for Performance” の中の “Performance Tips” を読んだ。 ざっくりとまとめておく。パフォ…

Build Variants によって別バージョンの Android アプリを同じプロジェクトからビルドする (Gradle 使用)

前回の記事 に引き続き、Gradle を使った Android アプリのビルドの話。今回は build variants (build types と product flavors) について調べたので軽くまとめておく。 複数の build variant を定義しておくと、 アプリの本体部分のソースコードはほとんど…

Gradle による Android アプリのビルド

週末は Gradle と Android アプリのビルドツールと戯れていたので、得られた知見などを書き残しておく。 更新記録 2014-01-07: Android Gradle プラグイン 0.7.1 (Android Studio 0.4 対応版) に合わせて内容を更新しました。 Gradle について Gradle 公式サ…

Volley 基礎 (Android アプリ用ネットワークライブラリ)

本記事では、Volley の基礎部分 (RequestQueue と Request) について述べる。 Volley について こないだの Google IO で発表された Google 製の Android アプリ用のネットワークライブラリ。 Activity に表示する情報を取得するための HTTP リクエスト *1 を…

Android アプリ用ライブラリ Volley を準備する

Volley? こないだの Google IO で発表された Google 製の Android アプリ開発用のネットワーク周りのライブラリ。 便利っぽい。 Volley: Easy, Fast Networking for Android — Google I/O 2013 ソースコードを読んだところ、ライセンスは Apache License, ve…

Android アプリ開発で jar ファイル中のクラスが見つけられず “Caused by: java.lang.NoClassDefFoundError” というエラーが発生する

Android アプリ開発における jar ファイルの扱い Java では、ライブラリは jar ファイルとして固められていることが多い。 当然ながら Android アプリ開発でも jar ファイルを扱う。Android アプリ開発のための Eclipse ADT plug-in の Android SDK Tools 17…

Android アプリ開発独習メモ #4 — Activity のライフタイムの管理

< Android アプリ開発独習メモ #3 | Android アプリ開発独習メモ #5 >今回は #2 の内容の続きで、“Getting Started” の中の “Managing the Activity Lifecycle” の話。ユーザーがアプリを起動したり、別のアプリに行ったり、またアプリに戻ってきたり、とい…

Android アプリ開発独習メモ #3 — ネットワーク操作

< Android アプリ開発独習メモ #2 | Android アプリ開発独習メモ #4 >今回は少し飛んで “Building Apps with Connectivity & the Cloud” の “Performing Network Operations” の内容を読んだ。 この資料では例としてサンプルプロジェクトも提供されているの…

Android アプリ開発独習メモ #2

< Android アプリ開発独習メモ #1 | Android アプリ開発独習メモ #3 >さらに Android アプリ開発の勉強メモ。 前回は “Building Your First App” の途中まで進めたが、この記事は “Building Your First App” の最後まで。 Starting Another Activity 資料 : …

Android アプリ開発独習メモ #1

Android アプリ開発独習メモ #2 >Android アプリ開発の勉強を始めた。 とりあえず Android Developers の Getting Started の内容を順に進めていこうと思う。 この記事は適当なメモである。 本記事では “Building Your First App” の “Building a Simple Use…