Superdry Memorandom :-p

旧「superdry memorandum :-D」です

Proguard, Android, and the Licensing Server

LVLするだけじゃデコンパイルされる可能性があるから難読化したほうがいいよということで、難読化ツール「ProGuard」についてのカンタンな使用方法について、以下のサイトを超てきとうに翻訳してみた。

難読化ツール「Proguard」をつかったのカンタンなビルドの仕方

条件
手順

1.まずはProGuradを導入してないなら、インスコ
2.以下のコマンド実行してbuild.xmlをつくる。アプリ名は適宜変更してね。

android update project -- path ./ MyAndroidAppProject

3.まずはbuid実行して普通のAPKができるか確認してみる。

ant release

4.でもこのままでは署名なしなので、署名するためにはlocal.propertiesファイル作って以下を書き込んで。鍵ファイルへのパスは適宜変更してね。これでビルドすると署名付きになるよ。

key.store=/Path/to/my/keystore/MyKeystore.ks
key.alias=myalias

5.でもこのままじゃ、難読化できてないままなので、難読化するためにはadd-proguard-release.xmlprocfg.txtの設定ファイルをリンク先から入手してbuild.xmlをおいてるところにコピー。
6.local.propertiesにProguardをインストールしたパスを追加して。

proguard.dir=/Directory/Proguard/Is/Installed/In

7.build.xmlファイルの上部(先頭の

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project [
       <!ENTITY add-proguard-release SYSTEM "add-proguard-release.xml">
]>

8.build.xmlファイルの

<project name="MyProjectName" default="help">
&add-proguard-release;

9.で、buid実行すると、難読化できるよ。作成したAPKファイルを動作確認してみてね。

ant release

10.動作確認してうまく動かない場合、きっとリフレクションとかJNI使ってる。その時はClassNotFoundExceptionが出るよ。難読化の対象から特定のClassを外したいならprocfg.txtに以下のオプションを書き込んでね。

-keep public class * [my classname]
備考
  • こまかいオプションについてはProGuardのマニュアルをみてね。
  • これは一般的な手順なので他にももっとやりかたはあるかも。ま、一度作っちゃえばあとは他のアプリにも同様に適用できるので便利かも。
  • obf/mapping.txtファイルにはどういう風に難読化したかがでるので、必要だったらみてみてね。