携帯Javaアプリ(iアプリ)のファイルサイズの最適化を行うための情報を紹介します。
私の調べたところ、フリーのソフトの組み合わせではproguard、JoGa、7zipの組み合わせが最も小さくなります。
商用ではSophiaCompressが圧倒的なのかと思います。クラスを統合するってだけ聞いてもその凄さが分かるかと思います。他でやってるのみたことない。あれば教えてください。実機での動作は確認していませんがpreverifer通って、エミュレータで動いています。7zipは注意が必要とSophiaCompress?のプログラムが出力していたので、実機により動かないものがあるということなのでしょう。
normal | tetris.jar | 8,299bytes |
pro2.1 JoGa? 7zip | tetris.jar | 6,968bytes |
pro3.0.1 7zip | tetris.jar | 6,905bytes |
pro3.0.1 JoGa? 7zip | tetris.jar | 6,888bytes |
SophiaCompress?(7zipあり) | tetris.jar | 5,356bytes |
7Zipにパスを設定する。
PATH=%PATH%;"C:\Program Files\7-Zip"
として、
>7z
とコマンドラインから実行できるようにする。
圧縮したいjarファイルのあるディレクトリに proguard.jar、JoGa?.Jar、pro.txt、pack.batを用意します。 pro.txt、pack.batのtetrisを圧縮したいJarファイルの名前に書き換えます。
コマンドラインから
pack
と実行します。 JoGa?が立ち上がるので、実行ボタン[>]を押します。 ダイアログが表示されるのでAPIをチェックして了解を押します。 NOを押します。 了解を押します。 アプリケーションを終了させます。
pro.txt
-injars tetris.jar -libraryjars ..\..\..\lib\classes.zip -libraryjars ..\..\..\lib\doja_classes.zip -outjars proout.jar -keep public class tetris.Tetris
pack.bat
set DT=tetris REM PROGUARD java -jar proguard.jar @pro.txt move /Y proout.jar %DT%.jar REM JOGA java -jar joga.jar C:\dev\iDKDoJa3.0\apps\%DT%\bin\%DT%.jar move /Y JoGaDIR\%DT%_JOGA.jar %DT%.jar rmdir JoGaDIR REM PREVERIFY ..\..\..\bin\preverify -classpath ..\..\..\lib\classes.zip;..\..\..\lib\doja_classes.zip %DT%.jar move /Y output\%DT%.jar . REM 7Zip mkdir output cd output jar xvf ..\%DT%.jar del ..\%DT%.jar 7z u -tzip -mx=9 ..\%DT%.jar * %DT%\* cd .. rmdir /S /Q output
その他のオプティマイザを研究中です。
REM RETROGUARD 未完成 REM java -classpath .;retroguard.jar;C:\dev\iDKDoJa3.0\lib\classes.zip; C:\dev\iDKDoJa3.0\lib\doja_classes.zip RetroGuard %DT%.jar output.jar script.rgs retroguard.log REM move /Y output.jar %DT%.jar REM JARG REM java -jar jarg.jar -nobco -j2me-prev C:\dev\iDKDoJa3.0\bin\preverify.exe -j2me-cp "C:\dev\iDKDoJa3.0\lib\classes.zip;C:\dev\iDKDoJa3.0\lib\doja_classes.zip" %DT%.jar