iアプリ(Doja)の容量削減 〜ツールでダウンサイジング〜
容量削減の方法(ツール)としては、以下の2つが上げられます。
obfuscator(オブファスケータ、難読化ツール)
クラス名やメソッド・メンバ名から有意味性をはぎ取りつつ短くして、「あー、こんなソース読みたくねー」と思わせるようにするリバースエンジニアリング対策ツール。
例)「Http.class」→obfuscator使用後→「a.class」
仮にリバースエンジニアリングされたとして、「a.class」って何だよ!このb()メソッドって何やってるんだ!みたいな?難読化。
また、クラス名や変数名などはビルド後もその名前のままバイトコードに入るので、名前を短くすると結果的に容量削減にもなる。
optimizer(最適化)
使ってないクラスやメソッドを削ってくれたり。
辞書:optimizer
これらのツールはjava全般のjarファイルに適用できるものなのですが、
iアプリの場合はこれらを適用した後に、preverify(事前検証)とjamファイル修正を行う必要があります(一部のツール除く)。
通常「
iαppli Development Kit for DoJa」でビルドする際は、
preverify(事前検証)も
jamファイル修正も勝手にやってくれるワケですが、そうしてビルドされたjarファイルをobfuscator(難読化)などでいじると、自分でjarファイルに対して
preverify(事前検証)したり、jamのアプリサイズ欄に正しいjarファイルサイズを入れたりする必要があるのです。
▼preverify(事前検証)の実行
▼jam(Java Application Manager)ファイルの修正
個人的に、ごくまれにobfuscator(難読化)はいいんだけど、optimizer(最適化)すると携帯で動かなくなったりします。
多分ソースが悪いんでしょうが、そんな時はオプションでobfuscator(難読化)だけかけて容量削減してます。
▲TOP
preverify(事前検証)とは、標準的なJava仮想マシンで行われるバイトコード検証作業の一部を事前(ビルド時)に済ませておき、アプリ実行時の検証作業実行コストを削減をはかるCLDCの固有ツール。
実行すると追加の属性情報がクラスファイルに書き込まれ、
これがないとアプリは携帯で動かない。
iアプリ作成用にドコモが配布している「
iαppli Development Kit for DoJa」についてくるツール(/bin/preverify.exe)を使う。
「
iαppli Development Kit for DoJa」でビルドする際は、これを自動でやってくれているが、obfuscatorなどを使ってビルド後のjarファイルを変更する場合、手動でコマンドラインからpreverifyをかける必要がある。
以下、preverifyを手動(コマンドブロンプト)から使用する一連の流れ。
(
ProGuardなどでjarファイルをいじった後の流れ)
1.jarファイル解凍し、出てきたクラスファイルを1つのフォルダにまとめておく
jar -xvf ○○○.jar
2.クラスファイルのディレクトリに移動(cdコマンド)し、preverify実行(「iDKDoJa3.5」のトコは、使用するアプリのDojaバージョンで)
C:\iDKDoJa3.5\bin\preverify.exe -classpath .;C:\iDKDoJa3.5\lib\classes.zip;C:\iDKDoJa3.5\lib\doja_classes.zip C:\my_class_files(クラスファイルのあるディレクトリ)
3.preverifyされたクラスファイルがoutputフォルダ内にできているので、それを再びjar化。cdコマンドでクラスファイルのあるディレクトリに移った上で、下記コマンド。
jar -cvMf ○○.jar(新規作成するjarファイル名) *.*
4.
jamファイルの修正
▲TOP
obfuscatorなどでjarファイルをいじった場合、これを修正する必要がある。
修正点は2点。
AppSize
iアプリのサイズ。修正する場合は、jarファイルのサイズを目で見て書き込む
AppClass
iアプリのメインクラス名(IApplication、MApplicationを継承して、最初に作るクラス)
obfuscatorを使ってクラス名が変わった場合、変更後のクラス名を入れる。
(obfuscatorは大抵クラス名の変換ログを出力できるので、それをみる)
▲TOP