2006/04/27(木) [n年前の日記]
#1 [iappli] とうとう.jarが30Kbyteを超えてしまった
30Kbyte未満に収めないと。
_jarg - Java Archive Grinder
7zipとやらが必要らしいのだが、7za なるものがない。インストール済みのはずだったけど…。と思ったら、 _7zip - Download を見る限り、コマンドライン版を別途落としてこないといけないらしい。
◎ 一応配列をint[]→byte[]にしたら多少は減ってくれるみたい :
ではあるのだけど。その減り方が、単純に int → byte になるわけではないようで。どうにも規則性がわからない。
◎ 変数名を短くしたら減った。 :
そんな。
たしかこのへんは自動化するツールがあったはずだな…。
たしかこのへんは自動化するツールがあったはずだな…。
◎ _アプリ開発メモ - 効果的な圧縮 :
◎ _携帯Javaアプリ最適化 - Wiki :
私の調べたところ、フリーのソフトの組み合わせではproguard、JoGa?、7zipの組み合わせが最も小さくなります。ふむ。
◎ _Java Blender :
Java Blender は i-appli のプログラムを圧縮するツールです。 i-appli にはコードサイズの制限があるため、 名前を 1 文字にしたり、クラスをできるだけ作らないようにして コードサイズを減らそうとしがちですが Java Blender を使うとそのような処理を自動的に行うことができます。 そのためプログラマは普通の Java と同じ感覚で i-appli のプログラムを書けるようになります。ありがたい。素晴らしい。Java Blender より
_jarg - Java Archive Grinder
jargはJavaクラスファイルが格納されているJARファイルのサイズを削減します。 「簡単にサイズ削減できること」が第1目標ですが、jargで処理した結果、 Javaクラスファイルは最適化されるのでより速くなりますし、改名されるのでより解析されにくくなります。 つまり、jargは、'Java Optimizer'であり、'Java Obfuscator'であり、'Java Shrinker'もしくは'Java Reducer'でもあります。ありがたい。ありがたい。…ん? 0.9.14 が最新版らしいのだけど、 _SourceForge の該当ページ には 0.9.13 しかない。うーむ。…と思ったが、files を辿ったら、0.9.14 があった。
最後に、jargは、100% Pure Javaですし、オープンソースですし、無料でご利用いただけます。
7zipとやらが必要らしいのだが、7za なるものがない。インストール済みのはずだったけど…。と思ったら、 _7zip - Download を見る限り、コマンドライン版を別途落としてこないといけないらしい。
◎ 容量削減できた。 :
結構減るな。30K未満に収まった。
が、.jam の AppClass が変な名前に書き換えられてしまう。eclipse で作業しようとしたら動かなくなっていて、ちとハマった。…あ、そうか。名前を短くしていくことで容量削減をしてるから、AppClass も変わってしまうのか。
が、.jam の AppClass が変な名前に書き換えられてしまう。eclipse で作業しようとしたら動かなくなっていて、ちとハマった。…あ、そうか。名前を短くしていくことで容量削減をしてるから、AppClass も変わってしまうのか。
◎ ProGuard + JoGa を使ってみた。 :
_ProGuard
_JoGa
たしかにこっちのほうが減るような。かつ、AppClass を書き換えないような指定もできる。
下のような結果に。
_JoGa
たしかにこっちのほうが減るような。かつ、AppClass を書き換えないような指定もできる。
下のような結果に。
種類 | 結果(byte) |
---|---|
オリジナル | 33,131 |
JavaBlender | 28,681 |
JavaBlender → jarg → 7zip | 26,863 |
ProGuard → JoGa → 7zip | 25,069 |
◎ _shortやbyteは容量が増えやすい :
shortやbyteは容量が増えやすいのです! なぜなら、型変換の命令が追加されるからです。あ、なるほど…。別のところで増えちゃってるから、規則性が見出せないのだな。
[ ツッコむ ]
以上です。