Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
以下はbuild.gradleに記述する例。 |
|
Line 15: | Line 17: |
== エントリポイント == Javaのエントリポイントを保護する。これが無いと当然実行できなくなるのだが、指定しないとproguardはお構い無しに名前変更してしまう。 {{{ keep 'public class sample.AppMain { \ public static void main(java.lang.String[]); \ }' }}} |
オプション
proguardは、難読化だけではなく、黙っていると最高度の最適化をしてしまい、意図しないコードを生成し、結果動作しなくなってしまう。 しかも、どのように変更されるのか調査するのが面倒なため、オプションを調整しながら、どのように最適化・難読化されたのかを確認しづらい。 以下では、「難読化」という目的を果たしつつ、「動かない」というトラブルに巻き込まれないための最低限のオプション(あるいは事前のコード変更)について述べる。
以下はbuild.gradleに記述する例。
必須オプション
dontshrink dontoptimize
これは必須。苦労したくなければ指定した方がよい。少なくとも最初の段階では絶対に指定しておくべき。
エントリポイント
Javaのエントリポイントを保護する。これが無いと当然実行できなくなるのだが、指定しないとproguardはお構い無しに名前変更してしまう。
keep 'public class sample.AppMain { \ public static void main(java.lang.String[]); \ }'