あなたの知らないAndroid SDKの便利tools、14選まとめ:Androidで動く携帯Javaアプリ作成入門(50)(3/3 ページ)
SDKに含まれている便利なツールを、デバッガー/プロファイラー、コード解析/難読化、画像ファイル最適化、アプリ外部のデータリソース操作の4種類に分けて紹介。
画像ファイル最適化
【9】画像など非圧縮データをAPKファイルの先頭に配置する最適化ツール「zipalign」
zipalignはAPKファイル内の画像やRAWデータなどの非圧縮データをファイルの先頭に配置するための最適化ツールです。具体的には、4バイトアラインメントで非圧縮データを配置し、mmapなどが直接APKにアクセスすることで実行時の省メモリ化が行えます。
APKの最適化は、APKを配布する前に常に行うべきです。「えっ!」と思った方はご安心ください。Eclipseで[エクスポート]ウィザードを使用してAPKを署名・生成している場合、自動的に最適化も施されています。AntなどでAPKを生成している場合は最適化を個別に行う必要があります。
zipalignはAPKファイルを署名した後に実施しなければなりません。もし、最適化後に署名した場合、最適化状態が署名により失われてしまいます。
使用方法は以下の通りです。
zipalign [-f] [-v] <alignment> [input <output>]
パラメーターは以下の意味を持っています。
- -f: 出力ファイルを上書き
- -v: 実行メッセージを表示
- -c: 指定したファイルの整合性を確認
<alignment>は、省略した場合は「4」(32bit)になります。
infile.apkを最適化したoutfile.apkを作成するには、以下のように行います。
zipalign -f -v infile.apk outfile.apk
existing.apkの整合性をチェックする場合は以下のように行います。
zipalign -c -v existing.apk
【10】PNG画像をETC1圧縮/展開する「etc1tool」
etc1toolはPNG画像をETC1圧縮/展開するツールです。「ETC」とは「Ericsson Texture Compression」という形式の圧縮方式の略称で、JPEGのような非可逆圧縮で圧縮後のサイズが小さい点、OpenGL ESで直接テクスチャとしてGPUが利用可能な点などが特徴です。「android.opengl」パッケージのETC1、ETC1Util、ETC1Util.ETC1Textureなどから利用します。
使い方は以下のように行います。
etc1tool foo.png
これで「foo.pkm」というファイルに出力されます。
PKM形式をPNG形式に戻すには以下のように行います。
etc1tool foo.pkm --decode -o foo2.png
その他のオプションについては、公式ドキュメントを参照してください。
【10】縦横に伸長可能なイメージをWYSIWYGで作成する「draw9patch」
Draw 9-Patchは、縦横に伸長可能なイメージをWYSIWYGで作成するためのツールです。リソースを9個に分割することから、この名前が付けられています。
ツール上で、縦横に拡大された際に、どの範囲を伸長するかを指定可能で、主に図の枠線を保護する目的で使用します。
画像の指定した一部を伸長できるようになるため、以下のような変形を行わせることも可能です。
このツールで作成したリソースは、NinePatchクラスを経由して描画します。
アプリ外部のデータリソース操作
【11】エミュレーター用の仮想SDカードを作成する「mksdcard」
mksdcardはエミュレーター(Android Emulator)のためにFAT32でフォーマットされた仮想SDカードを作成するためのツールです。複数人で同じ内容の仮想SDカードを共有するような目的に適しています。
使用方法は以下の通りです。
mksdcard -l <label> <size> <file>
<label>はボリュームラベルを指定します。<size>は仮想SDカードのサイズをK(キロバイト)、M(メガバイト)または無指定(バイト)単位で指定します。<file>は仮想SDカードのファイル名を指定します。
例えば、以下のように作成します。
mksdcard -l mySdCard 1024M mySdCardFile.img
作成した仮想SDカードは以下のようにエミュレーター起動時に指定して使用可能です。
emulator -sdcard <file>
仮想SDカードにファイルをコピーするには、上記のようにエミュレーターを起動して、「adb push」コマンドで送信するのが手っ取り早いですが、「mtools」コマンドのようなFATディスクイメージを扱えるユーティリティを利用してエミュレーターなしで仮想SDカードを任意の状態にセットアップすることも可能です。
【12】ディスクイメージOBBファイルを作れる「jobb」
Google Playでは、50MBを超えるAPKをアップロードできません。巨大なリソースを必要とするアプリは、別途APKの拡張ファイルを利用することになります(または独自サーバーを用意します)。ファイル形式は任意ですが、Androidの標準APIで展開できるZIPやOBBなどのコンテナ形式が便利です。
jobbはOBB(Opaque Binary Blobs)ファイルを作成するツールです。OBBはディスクイメージのことで、「StorageManager#mountObb(……)」でAndroidのファイルシステムのいずれかにマウントされます。マウントされた後は通常のファイルシステムと同様のアクセスが可能です。
使用方法は以下の通りです。
jobb [-d <directory>][-o <filename>][-pn <package>] \ [-pv <version>][-k <key>][-ov][-dump <filename>][-v][-about]
例えば、API Level 11以降で動作する「com.my.app.package」というパッケージ向けに「/temp/assets/」以下を「secret-key」というフレーズで暗号化し、「my-app-assets.obb」というファイルに固めるには以下のように行います。
jobb -d /temp/assets/ -o my-app-assets.obb -k secret-key -pn com.my.app.package -pv 11
Storage ManagerおよびOBBファイル自体の情報を扱うツール「ObbScanner」「ObbInfo」はAPI Level 9以降で利用可能です。
その他、詳細なオプションの説明は公式ドキュメントを参照ください。
【14】アプリのデータをクラウドにバックアップ/レストアできる「bmgr」
bmgrはAPI Level 8以降のAndroid端末上のバックアップマネージャーと対話可能なシェルツールです。adbシェルのサブコマンドとして利用します。
詳しくは、連載第44回の「あなたのアプリはクラウドにデータをバックアップできますか?」を参照ください。
動画キャプチャやモンキーテストは、またの機会に
今回はAndroid SDKに付属する知られざるツールを紹介してみました。紹介した多くのツールはEclipse ADTに取り込まれているため、あまり積極的にツール単体で利用することはなかったかもしれません。ProGuardやzipalignなどはアプリのビルドを自動化したい場合などに気を配る必要があり、そうしたケースで今回の記事が参考になれば幸いです。
今回解説予定だった画面の動画キャプチャやモンキーテストは、UI操作自動化と一緒に独立した記事として詳しく解説したいため、今回は省略しています。またの機会まで、ご期待ください。
- グーグルのAPIを使うときに欠かせないGoogle OAuthの作り方と使い方
- 細か過ぎて伝わってないけど開発者が知っておきたいAndroid Mの新機能まとめ
- 腕時計から電話をかけるAndroid Wearアプリの作り方
- Android Wear用アプリの花形、時計アプリ「Watch Face」の基本的な作り方
- Android 5.0発表&スマホと連動する音声認識Android Wearアプリの作り方
- ウェアラブル端末用Android Wearアプリ開発の基礎知識
- 変わらないと生き残れないAndroid Lの新機能まとめ
- Android WearやIoTで注目のAndroidセンサー機能8選
- ウェアラブル時代に見直したいAndroidの加速度/重力センサー、ジャイロスコープ
- あなたの知らないAndroid SDKの便利tools、14選まとめ
- Android 4.4のメモリ使用状況を把握する3つのツールの使い方
- Androidでリアルタイムマルチプレーゲームを開発するには
- 低性能端末でも使えるか? Android 4.4 KitKatの新機能39選
- もはや無料BaaS。ゲーム以外でも使いたくなるGoogle Play Game Servicesのデータ管理機能
- アプリにGoogle+のソーシャルグラフを持ち込めるGoogle Play Game Servicesの基礎知識
- あなたのアプリはクラウドにデータをバックアップできますか?
- Eclipse ADTに代わるIDEとなるか? Android Studioの基礎知識
- ActionBarで、アプリのUIはこんなにスマートになる
- Android 4.x時代のアプリにないと残念なActionBarとは
- 動的クラスローディングでAndroidアプリ“裏”開発
- Android 4.xのAndroidビームをアプリに組み込むには
- AndroidアプリでNFCタグを読み書きするための基礎知識
- 新タブレット時代を見据えるAndroid 4.2の新機能9選
- Androidからイヤフォンやヘルス機器とBluetooth通信するには
- Bluetoothを使ってAndroidアプリ同士で通信するには
- Androidアプリをアプリ内購読に対応してもうける方法
- 開発者が知らないと残念過ぎるAndroid 4.1の新機能36選
- Androidのプロセス間通信を自由自在にするAIDL
- Android 4.0のサービス/プロセス間通信の基本
- Androidアプリでマルチメディアを扱うための基礎知識
- Androidのウィジェットにノーティフィケーションするには
- Android 4.0で注目の顔認識をアプリに組み込むには
- Android 4.0でアプリ開発を始めるための環境構築
- 開発者が知らないと損するAndroid 4.0の新機能44選
- Android Compatibility packageで2.x系でもマルチサイズ対応
- Androidの画面の大きさの違いを解決するFragments
- Android 3.0の新APIで簡単ドラッグ&ドロップ実装
- 開発者が知って得するAndroid 2.3の新機能18選
- アニメーションでAndroidに独創的な画面エフェクトを
- Androidアプリで“アニメーション”するための基礎知識
- XMLレイアウトでAndroidアプリに“設定画面”を追加
- 開発者が知っておきたいAndroid 2.2の新機能12連発
- もはやケータイに必須のカメラをAndroidで制御しよう
- 地図/位置情報/GPSを使うAndroidアプリを作るには
- Android NDKでJNIを使用してアプリを高速化するには
- Android 2.1の新機能「Live Wallpaper」で作る、美しく燃える“待ち受け”
- iPhoneより多彩なAndroidのセンサをアプリで操作
- SurfaceViewならAndroidで高速描画ゲームが作れる
- Android 1.6のジェスチャーとテキスト読み上げを使う
- Androidのホーム画面に常駐するアプリを作るには
- Netbookにも広まるAndroidで、かつてないWeb体験を
- アプリを国際化してAndroid Marketから世界へ発信
- 常駐アプリが作成できるAndroidの“サービス”とは
- AndroidでSQLiteのDB操作をするための基礎知識
- Androidアプリの使いやすさを左右する5つのレイアウト
- 簡単でワクワクするAndroidウィジェット10連発!
- ブラウザや地図、ストリートビューの基、Intentとは?
- Androidアプリ作成の基本“Activity”とは何か?
- Android Market配布を目指しEclipseでHelloWorld!
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 安藤幸央のランダウン(43):あなたの知らないJDKの便利ツールたち
JDK 6に含まれている開発やデバッグに便利なツールを、プロファイリングや情報取得、監視、配備、スクリプティングの5種類に分けて紹介 - Androidで動く携帯Javaアプリ作成入門(43):Eclipse ADTに代わるIDEとなるか? Android Studioの基礎知識
新しく発表されたオープンソースのAndroidアプリ開発環境について、概要や使い方、注意点、Eclipse ADTからの移行方法を解説。最大の特徴は複数デバイスの同時表示。IntelliJ IDEAベースで、ビルドツールにGradleが使われている点も注目だ。 - Androidアプリの解読・改ざんを防ぐ難読化ツールとは
Androidの普及に伴いJavaソースコード難読化ツールへの注目が高まっている。概要を解説し、リバースエンジニアリング悪用のリスクを7つに分類して妨害手段を9つ紹介しよう - ユカイ、ツーカイ、カイハツ環境!(13):究極の問題解析ツール、逆コンパイラJD-Eclipseとは
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - Androidアプリちょい足し開発レシピ(4):気になるユーザー統計を手軽に取れちゃうGoogle Analytics
Webサイトやモバイルアプリなどの解析サービスGoogle Analyticsを紹介。アプリに組み込み、トラッキングしてデータを解析してみよう。 - 第2回Androidテスト祭りレポート:Android開発の上層テストで失敗しないためのポイント
セキュリティ設計や受け入れテストガイドライン、CIツールJenkins+コードレビューGeritt、テスト効率化ノウハウ、リモートテストサービスなど - 連載インデックス「Androidアプリ開発テスト入門」
日本Androidの会テスト部が、いままで培ってきたAndroidアプリ開発におけるテストのノウハウを、実際のテストコード例とともに紹介していきます