New Project Wizard
概要
PreEmptive Protection - DashO プロジェクトを作成するための最も簡単な方法は、New Project Wizard を使用することです。 ウィザードは、アプリケーションを調べて、そのアプリケーションを保護するための適切な設定を決定します。 ウィザードを起動するには、[File]>[Project Wizard]メニューを選択します。
ウィザードの最初のステップは、アプリケーションの特徴を明らかにすることです。 アプリケーションを最もよく表している種類を選択します。
その選択に基づいて、ウィザードはアプリケーションの種類に固有の一連の質問を尋ねます。 ウィザードが完了したら、何か問題が発生していないかコンソールを見てください。 以下のセクションでは、アプリケーションの種類ごとにウィザードを使用する方法を示します。
メモ:
既定では、New Project Wizard はスタートアップ時に自動的に起動します。
Java ライブラリ
このウィザードでは、難読化する Java ライブラリを選択する際に、そのライブラリが格納されているディレクトリまたは jar ファイルの場所を指定するよう求められるほか、Java ランタイム クラスを解決するために DashO で使用する JDK の場所(Include JDK(JDK の導入)を参照)も指定するよう求められます。
ウィザードはライブラリを調べて、実行時または難読化の目的のために必要となる依存関係を決定します。
難読化する入力として、またはランタイム サポートの jar ファイルとして、追加の jar を加えることができます。
サポート ライブラリの一覧には Java モジュール(.jmod
)も追加できます。
[Missing classes]一覧は、ライブラリによって参照されているが、見つからなかったクラスを示します。
次にウィザードは、ライブラリ内のエントリ ポイントについて尋ねます。 ウィザードは、エントリ ポイントとして使用される特別なクラスやメソッドと一緒に、ライブラリ全体を 1 つのエントリ ポイントとして表示します。
最後にウィザードは、結果として生じるプロジェクト ファイルを保存する場所を尋ねます。
既に存在する名前を選択した場合は、そのファイルを上書きするかどうかの確認を求められます。 既存のプロジェクトを上書き保存すると、新しい設定が保存され、古いプロジェクトのバックアップが作成されます。
Java アプリケーション
このウィザードでは、難読化するアプリケーション jar を選択する際に、そのアプリケーションが格納されている jar の場所を指定するよう求められるほか、アプリケーションの ランタイム クラスを解決するために DashO で使用する JDK の場所(Include JDK(JDK の導入)を参照)も指定するよう求められます。
ウィザードはアプリケーションを調べて、実行時または難読化の目的のために必要となる依存関係を決定します。
難読化する入力として、またはランタイム サポートの jar ファイルとして、追加の jar を加えることができます。
サポート ライブラリの一覧には Java モジュール(.jmod
)も追加できます。
[Missing classes]一覧は、アプリケーションによって参照されているが、見つからなかったクラスを示します。
次にウィザードは、アプリケーションのエントリ ポイントについて尋ねます。
jar のマニフェストに Main-Class
属性が含まれている場合は、それがエントリ ポイントとして挙げられます。
それに加えてウィザードは、エントリ ポイントとしても使用できる特別なクラスやメソッドを表示します。
DashO はこれらのエントリ ポイントを使用して、難読化された出力から除去する、使用されていない項目を決定します。
DashO をフォローするために希望するだけのエントリ ポイントを選択できます。エントリ ポイントは、少なくとも 1 つは選択する必要があります。
最後にウィザードは、結果として生じるプロジェクト ファイルを保存する場所を尋ねます。
既に存在する名前を選択した場合は、そのプロジェクトを上書きするかどうかの確認を求められます。
既存のプロジェクトを上書き保存すると、新しい設定が保存され、古いプロジェクトのバックアップが作成されます。
WAR ファイル
このウィザードでは、難読化する WAR ファイルを選択する際に、WAR ファイルの場所と名前を指定するよう求められるほか、Java ランタイム クラスを解決するために DashO で使用する JDK の場所(Include JDK(JDK の導入)を参照)も指定するよう求められます。
ウィザードは、WAR に含まれるクラスや jar ファイルについて、WAR ファイルを調べます。
これらの項目には、JNLP ファイルによって参照される jar ファイルだけでなく Web コンテナによっても使用される、WEB-INF
内の特別な場所が含まれています。
WAR ファイル内のどの項目を難読化するかを選択できます。
WAR ファイルに格納されている jar ファイルに加えて、DashO はサーブレットと JSP API の一部であるクラスを必要とします。
ウィザードは、既知の場所でこれらの jar ファイルへの参照を探し、サポート jar ファイルの一覧にこれらを追加します。
アプリケーションが Web コンテナに対し、log4j ログ サービスなどの Web アプリケーション間で共有されるその他すべてのクラスを提供することを期待している場合は、それをサポート jar ファイルの一覧に追加する必要があります。
サポート ライブラリの一覧には Java モジュール(.jmod
)も追加できます。
最後にウィザードは、ウィザードの出力を保存するディレクトリを尋ねます。 ウィザードは、プロジェクト ファイルに加えて、いくつかのファイルを作成します。
obfuscate.xml
:WAR ファイルを開き、DashO プロジェクト ファイルを実行してから、WAR ファイルを再アセンブルする Ant スクリプト。obfuscate.properties
:obfuscate.xml
が読み取る、Java のプロパティ ファイル。 場所の既定値を変更するには、このファイルを使用します。
obfuscate.xml
ファイルは、Ant を起動して実行することができます。
ant -f obfuscate.xml
または、別の Ant ファイルから呼び出すこともできます。
<ant antfile="obfuscate.xml"/>
3 つのタスクを実行します。
WAR ファイルをディレクトリに解凍します。 既定のディレクトリは
.unwar
です。.unwar
ディレクトリの内容に対して、ウィザードで生成されたプロジェクト ファイルを実行します。 結果は、一時的に.obfus
ディレクトリに格納されます。難読化された結果を新しい WAR ファイルに入れ、元のファイル名に
_dashoed
を加えた名前で WAR を再作成します。
指定したディレクトリに、上書きされるプロジェクト ファイルがある場合は、そのプロジェクトを上書きするかどうかの確認を求められます。
既存のプロジェクトを上書き保存すると、新しい設定が保存され、古いプロジェクトのバックアップが作成されます。
難読化を実行するには、DashO の Ant タスクをインストールする必要があります。 詳細については、DashO の Ant タスクのドキュメント(英語)を参照してください。
Android アプリケーションおよびライブラリ
難読化の対象として Android アプリケーション(APK)またはライブラリ(AAR)プロジェクトを選択すると、ウィザードはビルド環境と Android プロジェクトの場所を聞いてきます。 処理は、Gradle ビルド環境で行う場合と、APK プロジェクトを直接処理する場合とでは若干異なります。
メモ:Android ライブラリ(AAR)を難読化する場合は、DashO を Gradle ビルド環境に統合する必要があります。
Gradle ビルド環境
必要条件
使用する Android Gradle プラグインのバージョンに応じて、必要条件は変わります。 バージョン間の互換性を参照してください。
メモ:
プロジェクトにプロダクト フレーバーが含まれている場合、またはさまざまなビルド タイプを異なる方法で構成する必要がある場合は、ビルド バリアントの使用を参照してください。
フォルダーに Gradle によって使用される build.gradle
ファイルが含まれている場合、ウィザードはそのフォルダーを Android プロジェクトのディレクトリと見なします。
Eclipse を使用して Android プロジェクトを作成した場合は、プロジェクトを Gradle へ移行したいと思うでしょう。
その後、プロジェクトを次のように構築する必要があります。
gradlew clean build
メモ:ウィザードを実行する前に、プロジェクトのクリーン ビルドから始めてください。
Android アプリケーションまたはライブラリのソース コードを既に含んでいるディレクトリでウィザードを実行しても、ソース ファイルは上書きされません。 プロジェクトを含んでいるディレクトリを選択したら、評価するビルド バリアントを選択します。
ウィザードは、お使いの環境に基づいて Android SDK Home を決定し、このプロジェクトに構成されている SDK バージョンを選択します。
ウィザードはプロジェクトを調べて、実行時または難読化の目的のために必要となる依存関係を決定します。
メモ:Android プロジェクトの場合は、ウィザードで、入力として追加の jar ファイルを加えないでください。 DashO の入力として、ライブラリ プロジェクトや他の Gradle 依存関係を含めたい場合は、ウィザードの完了後に、
dasho.gradle
ファイル内にincludeAsInputs
エントリを追加してください。 詳細については、『DashO Gradle プラグイン ユーザー ガイド』を参照してください。
Android プロジェクトで Google API のようなアドオンのターゲットを使用する場合、これらのライブラリはサポート ファイルとして自動的に追加されない場合があります。 [Missing classes]一覧は、プロジェクトによって参照されているが、見つからなかったクラスを示します。
ウィザードは、AndroidManifest.xml
、リソース、およびコンパイルされたクラスを分析して、アプリケーションまたはライブラリのエントリ ポイントを決定します。
既定では、選択されていないエントリ ポイントがいくつか表示される場合があります。
それらはほとんどの場合、AndroidManifest.xml
によって参照されるが、プロジェクト自体ではコンパイルされないクラスです。
そうでない場合は、Android 以外のアプリケーションで通常使用されるエントリ ポイントです。
入力として、それらのクラスを定義するライブラリを含める予定である場合は、続行する前にライブラリを選択します。
メモ:Android ライブラリ(AAR)プロジェクトでは、どのエントリ ポイントも一覧に示されないことがあります。これは、すべてのパブリック クラスおよびメソッドは、既定でエントリ ポイントと見なされるため、それらを明示的に一覧に示す必要がないためです。
ウィザードでは、一般的プロジェクトや、プロダクト フレーバーまたはビルド タイプに固有のプロジェクトを生成することができます。 詳細については、ビルド バリアントの使用を参照してください。
メモ:このウィザードは、Gradle プロジェクトで使用されているすべてのライブラリを自動的に識別することはできません。 適切なライブラリが難読化されるよう、includeAsInputs を手動で構成することができます。
ウィザードは、いくつかのファイルを作成または変更します。
project.dox
:プロジェクト固有の設定をすべて含んでいる、DashO の構成ファイルです。 これは、プロジェクトのソース コードに直接関係します。 このファイルは、DashO のユーザー インターフェイスを使って操作することができます。 バリアント固有のプロジェクトを生成する場合、ファイルの名前は異なります。build.gradle
:Gradle ビルド スクリプトです。 ウィザードはこのファイルを変更して、DashO Gradle プラグインに依存関係を追加します。 変更には、dasho.gradle
のインポートが含まれます。 これはプロジェクト固有ではありません。ただし、DashO のバージョンが違えば(DashO に新しい機能が追加されているので)、異なる変更を行う可能性はあります。dasho.gradle
:メインのbuild.gradle
によって参照される、Gradle ビルド スクリプトの一部です。 これは、構成情報を提供します。 このファイルには、プロジェクト固有のデータは含まれません(project.dox
への参照の可能性を除く)が、DashO のバージョンが違えば(DashO に新しい機能が追加されているので)、異なるバージョンのファイルが作成される可能性はあります。 正しいバージョンの DashO Gradle プラグインが使用されていることを確認してください。
メモ:
正しいバージョンが構成されていることを確認するには、『DashO Gradle プラグイン ユーザー ガイド』の「バージョン間の互換性」セクションを参照してください。
build.gradle
内のminifyEnabled
への参照によって、dasho.gradle
で提供されている設定がオーバーライドされないよう、すべての参照をコメント アウトしてください。
指定したプロジェクト ファイルが既に存在する場合は、そのプロジェクトを上書きするかどうかの確認を求められます。
既存のプロジェクトを上書きすると、新しい設定が保存され、古いプロジェクトのバックアップが作成されます。
プロジェクトのビルド
DashO のユーザー インターフェイスを使用して、難読化とチェックの差し込みを構成したり、あらゆる問題や間違った構成を調査するために難読化を実行したりすることができます。
必要なサポート jar ファイルを追加したり、それらを User Property の gradleSupport
に設定したりするのは、手動で行う必要があるかもしれません。
プロジェクトを構築して難読化するには、Android の Gradle プラグインから提供される標準のコマンドを使用する必要があります。
たとえば、次のようなものがあります。
gradlew assemble
gradlew build
gradlew installDebug
既定では、デバッグ ビルドは難読化されません。 詳細については、『DashO Gradle プラグイン ユーザー ガイド』の Enabling Obfuscation セクションを参照してください。
メモ:ビルド処理全体の詳細については、『Android Gradle Plugin User Guide』を参照してください。
DashO は、非クラス ファイル セクションの ${AndroidManifestFile}
エントリと ${AndroidManifestOutput}
エントリを使用して、AndoidManifest.xml
ファイルを書き換えます。
ビルド バリアントの使用
ウィザードは、ビルド バリアント(プロダクト フレーバー / ビルド タイプ)と直接動作し、選択された特定のビルド バリアントを評価します。 分析後、すべてのビルドで使用される一般的なプロジェクトを作成するか、プロダクト フレーバーまたはビルド タイプに固有のプロジェクトを作成するかを選択します。 次のいずれかの文章に当てはまる場合は、バリアント固有のプロジェクトを使用することを検討してください。
- フレーバーは、異なるアクティビティ、サービスなどが記述されている、それぞれ異なる
AndroidManifest.xml
ファイルを持っている。 - フレーバーは、それぞれのリソース内で異なるカスタム ビュー コンポーネントを参照している。
debug
ビルドの難読化は、release
ビルドとは異なる構成で行いたい。
バリアント固有のプロジェクトを生成する場合は、ウィザードを再実行して、他のバリアント用のバリアント固有プロジェクトを作成するか、または難読化からそれらを除外する必要があります。
メモ:バリアント固有のプロジェクトを Gradle ビルドと統合する方法の詳細については、『DashO Gradle プラグイン ユーザー ガイド』を参照してください。
APK の直接操作
必要条件
- Android SDK Tools Revision 10 以降
ウィザードは、有効な APK ファイルを選択するように要求します。
ウィザードは、お使いの環境に基づいて Android SDK Home を決定します。 APK のコンパイル時に使用される SDK バージョンを選択します。
ウィザードは、AndroidManifest.xml
、リソース、および APK 内のコンパイルされたクラスを分析して、アプリケーションのエントリ ポイントを決定します。
既定では選択されていないエントリ ポイントがいくつか表示される場合があります。
これらのエントリ ポイントは、Android 以外のアプリケーションが通常使用するものです。
通常、APK プロジェクトのウィザードによって既定で選択されるエントリ ポイントを保持する必要があります。
メモ:
APK を正しくデコードできない場合は、[Add Jars]ページにエラーが表示されます。 [Cancel]をクリックし、詳細についてはコンソールを参照してください。
ウィザードは project.dox
ファイルを作成します。
プロジェクト固有の設定をすべて含んでいる、DashO の構成ファイルです。
これは、APK のコンパイルされたコードに直接関係します。
このファイルは、DashO のユーザー インターフェイスを使って操作することができます。
メモ:
Output – Signing パネルで署名を構成し、Output – APK パネルで Android の Build Tools のディレクトリを設定または検証する必要があります。 この構成に役立つよう、ウィザードは Android SDK のbuild-tools
ディレクトリの検出を試みます。
この APK にプロジェクト ファイルが既に作成されている場合は、そのプロジェクトを上書きするかどうかの確認を求められます。
既存のプロジェクトを上書き保存すると、新しい設定が保存され、古いプロジェクトのバックアップが作成されます。
プロジェクトのビルド
DashO のユーザー インターフェイスを使用して、難読化およびチェックの差し込みを構成および実行します。
DashO は、クラスの名前の変更が可能になるように AndoidManifest.xml
ファイルを書き換えます。
新しい APK ファイルが出力されます。