LoginSignup
11
19

More than 5 years have passed since last update.

【Android】Proguardの難読化で色々はまる

Posted at

AndroidアプリをProguardで難読化

Proguardで難読化してはまりにはまったのでメモ

リリース時だけProguardを有効にする

build.gradle
android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
}

ビルドすると警告が出て難読化できないので除外設定する

コンソールに出た警告から除外対象を設定しました。

proguard-rules.pro
-dontwarn org.apache.tools.ant.**
-dontwarn okio.**

apkをデコンパイルして、難読化出来ていることを確認する

① 生成したapkの拡張子をzipにして解凍
② dex2jarで.dex → .classへ変換
③ jadでデコンパイルしてソース確認

apkを実機で動作確認すると、NullPointerExceptionで落ちる

外部ライブラリには難読化すると動かなくなるライブラリがあったりするので除外する
okhttpでモデルクラスを使用していて、そのモデルクラスを難読化すると動かなくなるので除外する。
やり方としては初めにパッケージごと除外してから徐々に狭めて詰めていくやり方が良さそう。

proguard-rules.pro
-keep class com.google.**  { *; } # gson
-keep interface com.google.**  { *; } # gson
-keep class com.squareup.**  { *; } # okhttp
-keep interface com.squareup.**  { *; } # okhttp

参考サイト

Android Studio での Proguard 設定
ProGuard を使用した難読化
開発メモ/Proguardのすすめ
Proguard shrinking causes Null Pointer Exception

11
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
19