9

Android用のシンプルなアプリを作成するように依頼されました。実際、私が支払われる最初のものなので、私は本当にそれを台無しにしたくありません:)。要件の 1 つは、コードを難読化する必要があることでした。

難読化の一般的な考え方を学びましたが、ばかげた間違いはしたくありません。

コードを難読化するには、正確に何をする必要がありますか? リリースとしてエクスポートすることでうまくいきますか、それとも他の手順が必要ですか? コメントもお待ちしております。

PS。問題があればEclipseを使用しています。

編集

アンサーで提案された記事から:

Ant または Eclipse ビルドの一部として実行されるように ProGuard を有効にするには、/project.properties ファイルで proguard.config プロパティを設定します。パスは、絶対パスまたはプロジェクトのルートからの相対パスにすることができます。

proguard.cfg ファイルをデフォルトの場所 (プロジェクトのルート ディレクトリ) に残した場合は、次のように場所を指定できます。

proguard.config=proguard.cfg

実際、プロジェクトのディレクトリにproject.propertiesファイルがあります。しかし、 proguard.cfgファイルがありません。代わりに、proguard-project.txtファイルがあります。買い替えだと思います。

プロジェクトのプロパティ:

このファイルは、Android ツールによって自動的に生成されます。このファイルを変更しないでください -- あなたの変更は消去されます!

このファイルは、バージョン管理システムでチェックする必要があります。

Ant ビルド システムで使用されるプロパティをカスタマイズするには、「ant.properties」を編集し、値をオーバーライドしてスクリプトをプロジェクト構造に適合させます。

ProGuard がコードを圧縮して難読化できるようにするには、次のコメントを外します (使用可能なプロパティ: sdk.dir、user.home):

proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt

プロジェクトのターゲット。ターゲット=android-7

元々は最後の行以外はコメントアウトされています。

proguard-project.txtでは、すべてがコメント化されています。

私はここで迷子になっていると思うので、誰かが私がすべきことと、それが実際に機能するかどうかを確認する方法を段階的に教えてくれたら、とても感謝しています.

4

1 に答える 1

23

公式開発サイトの記事は古くなっています。SDK Tools r17 から、ProGuard 構成の動作方法が変更されました。基本的に、彼らは以前のものproguard.cfgを 2 つのファイルに分割しました (また、単純に .txt ファイルにしました):proguard-android.txtproguard-project.txt. ディレクトリにproguard-android.txt存在し、各プロジェクト ディレクトリにあります。{SDK dir}\tools\proguardproguard-project.txt

彼らはファイルを分割して、Android チームがかなり標準的であると見なす一般的な構成/フラグがファイルに含まれるようにし、proguard-android.txtSDK ツールの各リビジョンで (基本的にサイレントに) 更新できるようにします。次に、開発者/プロジェクト固有のフラグを、開発者がproguard-project.txtファイルに追加できます。

proguard-project.txtこれが、ファイル内のすべてがコメントアウトされていることに気付いた理由です。一般に、ほとんどの人はプロジェクト固有のニーズを持っておらず、標準設定で ProGuard を実行して完了したいだけだからです。

参考までに(非常に良い説明です):http://tools.android.com/recent/proguardimprovements

ステップバイステップ(毎日:P)

(Eclipse IDE を使用) ProGuard を有効にするには、デフォルト設定のみを使用して縮小と難読化を行います。

  • まず、SDK ツールを最新のものに更新します (執筆時点では r19)。
  • project.propertiesの行のコメントを外します。

proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt

r17 より前にプロジェクトを作成した場合、同じことが表示されない場合があります。その場合は、(SDK ツールを更新した後に) 新しいダミー プロジェクトを作成し、proguard-project.txtおよびproject.propertiesファイルをコピーすることをお勧めします。

それでおしまい!ProGuard が有効になり、実行されますが、リリース ビルドでのみ実行されます (Android ツールを使用して署名付き/未署名の apk をエクスポートする場合)。

リリース ビルドを作成すると、新しい ProGuard フォルダーがプロジェクト フォルダーに作成されることに気付くでしょう。このフォルダー内には、保持または削除されたクラス/メソッドなどを含む 4 つのファイルがあります。また、難読化すると、エラーが発生した場合にスタック トレースも難読化されることに注意してください。

編集: (2012 年 9 月 4 日) Tools r20の変更を反映するために、この回答を更新したかっただけです。

Android チームは、proguard 構成ファイルを 1 つ追加しました。それはproguard-android-optimize.txtあり、ディレクトリにも存在します{SDK dir}\tools\proguard。このファイルは、 proguard の最適化がオンになっていることを除いproguard-android.txtて、元の構成ファイルと同じです。

この追加ファイルは、最適化を有効にしたい人のために追加されました (最適化を有効にする必要がある Log 呼び出しの削除などを実行できるようにするためかもしれません)。project.properties次のように、ファイル内で代わりにこのファイルを指定するだけです。

proguard.config=${sdk.dir}\tools\proguard\proguard-android-optimize.txt:proguard-project.txt

proguard-android...以前と同様に、構成ファイルを変更しようとしないでください。プロジェクト固有のフラグはproguard-project.txt、プロジェクト フォルダー内のファイルに入れる必要があります。

于 2012-06-14T01:46:02.810 に答える