事象の水平線

個人的ブックマーク代わりなメモ書きブログ。 地球は丸いよ。↓このへん。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop
検索で出てくるのは、情報が古いものが多い。
libraryで引っかかった気がしたら、”proguard libraryName”で検索するのが速そう。

基本的なことは【AndroidでのProGuard 使い方】とか参照

以下メモ。

【Android】難読化ツールProguard設定まとめ
http://kontany.net/blog/?p=86
<<引用>>
でproguardが適用されるのは、リリースビルドされる時です。
まず、ビルドの詳細ログが見られるようにするため、設定を変更します。
[Window] → [Preference] → [Android] → [Build] → [Build output]と順に選択していき、[Verbose]を選択。


吐かれるログを見て、無事終了したらプロジェクト直下に新たに「proguard」フォルダが生成され、中には「dump.txt」「mapping.txt」「seeds.txt」「usage.txt」の計4ファイルが入っている。
エラーが出た場合は、基本的にエラーで怒られたクラス名などを-keepしてあげれば改善される。まぁ個々は頑張るしかない。
(コンソールにBuild Logが流れてるようなときは、青いPCアイコンからAndroidに切り替えて見れる@Eclipse)
console_android.png


bug?
大量に出る
Warning: com.google.common.base.Equivalence: can't find referenced class javax.annotation.Nullable

こんなやつ(おそらくcommons.codec)
<<以下参照>>
http://stackoverflow.com/questions/27423614/add-jar-file-path-added-in-library-project-in-proguard
http://d.hatena.ne.jp/rudi/20110205/1296914415
http://qiita.com/amay077/items/328cd2dd6ad6d483b7b1
以下を追加(無視)で解決らしい
-dontwarn com.google.common.**




Android で Proguard を使う(ADT17以降)
http://qiita.com/amay077/items/328cd2dd6ad6d483b7b1
<<引用>>
-libraryjars について
外部ライブラリを使っている(/libs に jar を入れてる)場合、それらを -libraryjars xxx.jar と列挙しなければならないと 思っていた が不要らしい。
-libraryjars に列挙したら最初の一つしか library jar として認識してくれなくて「なにこれ?」と思ってググったら、
Using ProGuard with Android - StackOverflow 回答日-2012/06/28
1) ProGuard manual > Troubleshooting > Note: duplicate definition of program/library class
The Android Ant/Eclipse builds already specify -injars/-libraryjars for you. If you specify them again in your configuration, ProGuard notes that they are duplicated. So don't specify -injars/-libraryjars.
libs配下は既定で定義済だから proguard-project.txt の方で再定義しなくてよいらしい




proguard with sqlcipher
<<以下参照>>
https://gist.github.com/developernotes/3040592
結局以下だけでOK
-keep class net.sqlcipher.** { *; }




proguard with conceal
<<以下参照>>
https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-facebook-conceal.pro
以下を追加でOK
# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters

# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.proguard.annotations.DoNotStrip *;
}

-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
void set*(***);
*** get*();
}



<<参照>>
ProGuardとLogCatとAdMobが織りなす罠
結局Logcatは手で消そうかな。と思った。
スポンサーサイト

PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。