Gradle ビルド環境
このセクションでは、PreEmptive Protection - DashO を使用するために、既存の Android アプリケーション(APK)またはライブラリ(AAR)プロジェクトを構成する手順をひととおり示します。 ビルド環境として Gradle を使用する場合、あるいは APK ファイルを直接操作する場合では、セットアップ プロセスが異なります。DashO を Android の Gradle ビルド プロセスに統合することができます。
Gradle ビルド スクリプトに統合された場合、DashO は Java クラス ファイルを取り込み、それらを保護します。アプリケーション プロジェクトでは、その後、ビルド スクリプトは難読化されたバージョンを取り込んで、APK ファイルの内部にパッケージ化される classes.dex ファイルを作成します。 ライブラリ プロジェクトでは、その後、ビルド スクリプトは難読化されたバージョンを取り込んで、AAR ファイルの内部にそれをパッケージ化します。
メモ:DashO-GameOfLife サンプルを使用して、この処理の手順を追うことができます。
必要条件
Android アプリケーション(APK)またはライブラリ(AAR)プロジェクトがある必要があります。これは Eclipse、Android Studio から、または手動で作成することができます。Eclipse または Android Studio で作成する場合は、プロジェクトの物理的な場所を知っていなければなりません。Eclipse および Android Studio は、Android の SDK がどこにあるかを知っていて、適切な参照を作成します。
DashO は、Android SDK と Android プロジェクトの場所にアクセスできる必要があります。それらは、ファイル システムからアクセスできるのであれば、必ずしも物理的に同じマシン上にある必要はありません。それらすべてが同じマシン上にない場合は、ネットワーク ドライブを割り当ててアクセスを提供することができます。
PreEmptive Protection - DashO のための、Android プロジェクトのステージング
Android Studio を使用してプロジェクトをセットアップしている場合は、既に Gradle ビルドがあります。Eclipse を使用していて、Gradle ビルドがない場合は、Android の指示に従って移行します。
build.gradle ファイルを作成したら、プロジェクトをコンパイルします。
gradlew build
これにより Gradle がダウンロードされ、Android プロジェクトが構築されます。
ウィザードによる PreEmptive Protection - DashO プロジェクトの作成
New Project Wizard は、DashO の起動時に自動的に起動することができます。DashO が既に実行されている場合は、[File|Project Wizard]から起動できます。[Select Application Type]ウィザード画面で "An Android application or library" を選択し、次に "Gradle" ビルド環境を選択して、[Select Android Project]画面で Android プロジェクト ディレクトリを入力します。
ウィザードは、その作業のほとんどを自動的に実行します。JAR をサポートするための参照を自動的に検出しようとしますが、場合によっては、それらを手動で追加することも必要となります。ウィザード画面のうちの 1 つで、追加の JAR を追加する機会が与えられます。その画面では android.jar(メイン Android API ライブラリ)のバージョンを変更することもできますが、ほとんどの状況下で、これを変更すべきではありません。
ウィザードは、project.dox
というファイルを Android プロジェクト フォルダーのルートに保存します。このファイルには、このプロジェクトの DashO の構成がすべて含まれています。また、dasho.gradle
を作成し、DashO を使ってコードを難読化できるように build.gradle
を更新します。これをすぐにテストするには、コマンド プロンプトから gradlew assembleRelease
を実行します。既定では、ウィザードはデバッグ ビルドの難読化をオフにします。
ウィザードの完全な手引きは、Android アプリケーションおよびライブラリ セクションに記載されています。
PreEmptive Protection - DashO GUI を使って、難読化を構成する
さて、ステージングされた Android プロジェクトを DashO に読み込んだら、DashO GUI を使用して、望みどおりの構成にすることができます。プロジェクトを忘れずに保存してください。プロジェクトは project.dox
ファイルを更新します。後で構成設定を変更する場合は、DashO を実行して project.dox
ファイルを開き、変更を加えて保存します。
DashO GUI の段階的な説明については、ユーザー インターフェイス リファレンス セクションを参照してください。
GUI 内でプロジェクトを構築すると、構成内容をテストして、正しくビルドするかどうかを確認することができます。
メモ:
${gradleSupport}
に値を提供する必要があるかもしれません。
Gradle を使って、完全なビルドを作成する
完全なビルドを実行するには、コマンド ラインで Android プロジェクト フォルダーへ移動し、gradlew build
を実行します。エラーや警告が画面に出力されます。
お使いの環境が、同じ gradle スクリプトから複数の Android プロジェクトを構築するように設定されている場合は、まだ DashO を使用するように構成されていないプロジェクトについて、project.dox
ファイルが見つからないことに関するエラーを受け取る場合があります。これを解決するために、構成ファイルを作成するまで、それらのプロジェクトの難読化をオフにしておくことができます。
メモ:ビルドで、アプリケーションの一部としてのみ使用される Android ライブラリ(AAR)をコンパイルする場合、そのライブラリを直接難読化しないでください。代わりに、ライブラリをアプリケーション プロジェクトの入力として含めてください。
難読化された APK をエミュレーターにインストールする
アプリケーション プロジェクトの場合、Gradle ビルドは、build\outputs\apk
というフォルダーを作成し、このフォルダーに異なるバージョンの APK を格納します。既定では、デバッグ バージョンは難読化されないので、必要なものの 1 つは、{プロジェクト名}-release-unaligned.apk
です。タイムスタンプを再確認してください。これは、Gradle ビルドによって今作成されたものでなければなりません。
エミュレーターを実行している場合は、adb install {プロジェクト名}-release-unaligned.apk
と入力します。これにより、実行中のエミュレーターに APK がインストールされます。その後、エミュレーターを使用し、アプリケーション一覧へ移動して、アプリケーションにアクセスすることができます。インストールしたアプリケーションは、デバイスにインストールされている他の Android アプリケーションと同様に表示されます。
メモ:
dasho.gradle
を編集してデバッグ ビルドでの難読化を有効にし、その後gradlew installDebug
を実行して、エミュレーター上にインストールすることもできます。
リリース ビルドを作成および署名する
物理デバイスへのインストールに必要となるリリース ビルドを作成するには、署名キーを作成して、Android Gradle プラグインにこの情報を提供する必要があります。build.gradle
内部でこの情報を提供します。
android { ... signingConfigs { release { storeFile file("android.keystore") storePassword "パスワード" keyAlias "エイリアス" keyPassword "パスワード" } } }
署名情報が追加されると、gradlew build
はリリース用の署名付き APK を生成します。gradlew installRelease
を実行すると、エミュレーター上でリリース ビルドをコンパイルしてインストールします。
メモ:
詳細については、『Android Gradle Plugin User Guide』および『DashO Gradle プラグイン ユーザー ガイド』を参照してください。
別のマシンで実行する
あるマシンから別のマシンへプロジェクト ディレクトリをコピーした後、gradlew build
を実行した場合、DashO と Android SDK が他のマシン上で利用可能であれば、このコマンドは正常に動作します。DashO の新しい場所を指すように dasho.gradle
を更新し、DashO Gradle プラグインが入っているディレクトリを指すように build.gradle
を更新する必要があるかもしれません。
最善の解決策は、上記のさまざまなツールを 1 つのビルド マシンから利用できるように、前もって環境を準備しておくことです。Android プロジェクトを既に作成している場合、あるいは環境を設定した後、新しいプロジェクトを作成できない場合は、build.gradle
、dasho.gradle
、および/または 1 つ以上の *.properties
ファイルを編集して、正しい場所を反映させる必要があるかもしれません。このことは、何かが見つからないと主張するエラー メッセージを受け取るとわかります。その場合は、ビルドが探している場所を書き留めて、ビルド環境の同様の場所を検索し、参照を更新してください。