Android Studioの導入(6)~Proguardの設定と難読化の結果の検証方法~

今回は残課題となっていたAndroid Studio上でのProguardを有効にする場合の手順と、Proguardで難読化が行われているかの検証方法についてまとめました。

Proguardを有効にする場合の手順

  • 対象のプロジェクトを開いた状態で、「ファイル > プロジェクト構成」を選択します。
    001
  • 「release」の「Build Types」タブを選択し、「Minify Enabled」を「true」に、Proguard Fileには「proguard-project.txt」の配置パスを設定して、OKを押下します。
    002
  • すると「build.gradle」ファイルに下記のような設定が追加されます。
    buildTypes {
          release {
                minifyEnabled true
                proguardFile 'C:/android/Sakana/proguard-project.txt'
            }
        }
    

    003

  • ちなみに「proguard-project.txt」はEclipseで開発していた時のファイルをそのまま使用しました。
    設定内容は下記の通り。
    </pre><pre>-keep class * extends java.util.ListResourceBundle {
        protected Object getContents();
    }
    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
        public static final *** NULL;
    }
    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
        @com.google.android.gms.common.annotation.KeepName *;
    }
    -keepnames class * implements android.os.Parcelable {
        public static final ** CREATOR;
    }
    -dontwarn com.google.android.gms.*
    -ignorewarnings
    
    004
  • 後は先日お伝えした方法で、署名付きのリリース用apkファイルを作成すればOKです。
    005
  • ビルドが成功しても正しく動作しないことがあるようなので、作成された署名付きのリリース用apkファイルを実機にインストールして動作確認を行うようにしてください。

Proguardで難読化が行われているかの検証方法

  • アプリが正しく動作したら次は、本当に難読化が行われているかの検証を行います。
    まずは作成された署名付きのリリース用apkファイルを作業用フォルダへコピーします。
    今回は、「Sakana-release.apk」ファイルを「C:\Android\work」配下にコピーしましたが場所はどこでもOKです。
    007
  • 続いて配置したapkファイルの拡張子をzipへ変更して、解凍ソフトで解凍します。
    今回の例では、「Sakana-release」というフォルダが生成されましたが、その中のclasses.dexファイルを使用します。
    009
  • 下記のサイトからclasses.dexファイルをclassファイルに変換するためのツールをダウンロードします。
    http://sourceforge.net/projects/dex2jar/files/
    ※「dex2jar-2.0.zip」をダウンロードしました。
  • ダウンロードしたzipファイルを作業用のフォルダへ解凍し、同一フォルダ内に上記の「classes.dex」ファイルを配置します。
    010
  • コマンドプロンプトを起動して、「d2j-dex2jar.bat classes.dex」と実行すると、classes.dexを配置した同じフォルダ配下に「classes-dex2jar.jar」が生成されます。
    012013
  • 生成された「classes-dex2jar.jar」を作業用フォルダへコピーして、拡張子をzipに変更した上で解凍ソフトで解凍します。
    014
  • 「classes-dex2jar」フォルダ配下には、classファイルが多数配置されています。
    その中で自分が作成したパッケージ配下を参照し、「a.class、b.class、c.class・・・」と身に覚えの無いclassファイルが存在してれば、難読化は成功しているはずです。
    015

おまけ~classファイルを逆コンパイルしてjavaファイルに変換する方法~

  • 難読化の確認だけであれば上記までのチェックでOKだと思うのですが、「せっかくなので難読化状態のjavaの中身も見たい!」と言う場合は、classファイルを逆コンパイルしてjavaファイルを生成することができます。
  • 下記サイトから逆コンパイル用のツールを環境に合わせて取得します。
    http://varaneckas.com/jad/
    ※今回は「Jad 1.5.8g for Windows 9x/NT/2000 on Intel platform」をダウンロードしました。
  • ダウンロードしたzipファイルを作業用のフォルダへ解凍し、同一フォルダ内に逆コンパイルしたいclassファイルを配置します。
    ※今回はお試しで「a.class」を配置しました。
    016
  • コマンドプロンプトを起動して、「jad.exe -8 -d output -s .java -r *.class」と実行すると、outputフォルダが生成され配下に逆コンパイルされたjavaファイルが出力されます。
    017018

今回は以上となります。良かったらご参考まで

コメントは受け付けていません。

サブコンテンツ

公開中のAndroidアプリ(全て無料です)

ビジネス

おじさんのメモ帳 おじさんのメモ帳
シンプルなメモ帳
日報 日報
日報作成補助ツール
議事録 議事録
議事録作成補助ツール

学習(国語・算数)

漢字かな 漢字かな
漢字の読みの学習に
ひらがなプラス ひらがなプラス
かな・カナの学習に
暗算百問 暗算百問
毎日暗算で頭の体操
あんざん25 あんざん25
両手で計算してみよう

学習(理科・社会)

記号かな 地図記号
地図記号の学習に
魚かな 魚かな
海の生物の学習に
動物かな 動物かな
陸上の生物の学習に
野菜かな 野菜かな
植物な食物の学習に
元素記号 元素記号
元素記号の学習に

その他

こづかい帳 こづかい帳
計算力と金銭感覚を育もう
お絵かきプラス お絵かきプラス
メモや絵日記等に

このページの先頭へ