Gradle プラグイン(Android 用)の構成
DashO™ Gradle プラグイン(Android 用)を使用するには、まずそれを Gradle ビルドに追加し、その追加したものを buildscript で構成します。
プラグインの追加
DashO Gradle プラグイン(Android 用)を適用するには、buildscript 内にお使いのビルドへの依存関係として追加する必要があります。この依存関係により、さらに、buildscript のリポジトリとして PreEmptive Maven リポジトリを追加する必要が生じます。
buildscript {
repositories {
maven { url 'https://maven.preemptive.com' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.preemptive.dasho:dasho-android:1.2.+'
}
}
また、本プラグインは、該当する Android プラグイン(つまり com.android.application
または com.android.library
)の後に追加することも必要になってきます。
apply plugin: 'com.android.application'
apply plugin: 'com.preemptive.dasho.android'
プラグインの構成
本プラグインは、buildscript 内で、com.preemptive.dasho.android
プラグインの適用箇所より後なら任意のポイントで dasho
クロージャによって構成できます。
dasho {
debug false
doxFilename "project.dox"
enabledBuildVariants "release"
excludeFromProtection null
home "/Applications/PreEmptive Protection DashO x.y/Contents/Java"
javaOptions "-Xmx128m", "-Xms96m"
libraryAssetDirs "../lib/src/main/assets"
libraryResourceDirs "../lib/src/main/res"
searchVersion "10"
verbose false
}
dasho
クロージャに使用できるプロパティは次のとおりです。
名前 | 機能 | 既定値 |
---|---|---|
debug |
有効にすると、本プラグインにより、DashO が --debug および --printStackTraces オプションを使って実行され、DashO を呼び出すのに使用されたコマンドが出力されます。 |
false |
doxFilename |
Android プロジェクトを保護する際に DashO に使用させる DashO 構成ファイルの名前を設定します。このファイルは、プロジェクト ディレクトリ内のファイルである必要があります。このパス内の円記号(\ )は、エスケープする(\\ )か、スラッシュ)(/ )に置き換える必要があります。 |
既定の DashO 構成ファイルを参照 |
enabledBuildVariants |
本プラグインに保護させるビルド バリアントを設定します。正規表現が使用可能です。バリアント名に正規表現との一致箇所(大文字と小文字の区別はなし)が含まれる場合に、本プラグインによりビルド バリアントが保護されます。空白値("" )はすべてのバリアントに一致します。 |
release (すべての release バリアントと一致します) |
excludeFromProtection |
保護対象から除外すべき入力を設定します。正規表現が使用可能です。正規表現との一致箇所(大文字と小文字の区別はなし)が含まれる名前を持つ入力はすべて、入力でなく依存関係として DashO に渡されます。 | ヌル値(ドキュメントを参照) |
home |
DashO ホーム。DashOPro.jar の検索先。searchVersion を指定する場合、またはそうしないで本プラグインで DashO を自動的に特定できるようにする場合は、設定しないでください。 |
既定値なし |
javaOptions |
DashO を実行するために、Java を呼び出す際に使用する追加の JVM オプション。1 つまたは複数の文字列が使用可能です。 | 追加オプションなし |
libraryAssetDirs |
暗号化される、参照ライブラリの Asset または関連ライブラリの Asset の任意の場所。v1.2.0 で追加されました。1 つまたは複数のパスが使用可能です。 | ライブラリの Asset を暗号化しない |
libraryResourceDirs |
暗号化される、参照ライブラリのリソースまたは関連ライブラリのリソースの任意の場所。現在、raw サブディレクトリにあるリソースのみが暗号化されます。v1.2.0 で追加されました。1 つまたは複数のパスが使用可能です。 |
ライブラリの Raw リソースを暗号化しない |
searchVersion |
{major}[.{minor}] の形式の文字列(例:10 、10.2 )を指定した場合に DashO ホームが検索されるように本プラグインを構成します。home を指定する場合は設定しないでください。 |
既定値なし |
verbose |
有効にすると、本プラグインにより、DashO が --verbose および --printStackTraces オプションを使って実行され、DashO を呼び出すのに使用されたコマンドが出力されます。 |
false |
dasho
クロージャは、そのプロパティを設定する必要がない場合には、プロパティがすべて省略可能であるため、記述する必要はありません。
メモ:
DashO Gradle プラグイン(Android 用)は、DashO の実行時に Gradle 用に構成される同じバージョンの Java を使用します。 これはorg.gradle.java.home
設定で構成されます。
DashO Gradle プラグイン(Android 用)は、Android Studio の Instant Run 機能とも Apply Changes 機能とも互換性がありません。 DashO をデバッグ ビルド バリアントで実行できるようにするには、Instant Run を無効にするか、Apply Changes を使用しない必要があります。
既定の DashO 構成ファイル
DashO 構成ファイルを指定する際に、dasho
クロージャの doxFilename
プロパティも指定しない場合、DashO Gradle プラグイン(Android 用)により、最新のバリアントに一致するプロジェクト ファイルが検索されます。
たとえば、以下のビルド フレーバーとビルド タイプを構成したとします。
android {
buildTypes {
debug { }
release { }
}
flavorDimensions 'monetization', 'deviceType'
productFlavors {
free { dimension 'monetization' }
paid { dimension 'monetization' }
phone { dimension 'deviceType' }
tablet { dimension 'deviceType' }
}
}
ビルド バリアント freePhoneDebug
に対し、DashO Gradle プラグイン(Android 用)により、アプリケーション レベルの build.gradle
と同じディレクトリからプロジェクト ファイルが検索されます。検索対象として使用されるプロジェクト ファイルは、以下のリストにあるプロジェクト ファイルのうち、最初に見つかったプロジェクト ファイルです。
freePhoneDebug.dox
freePhone.dox
free.dox
phone.dox
debug.dox
project.dox
メモ:
構成ファイルは、標準ビルド時に、1 つのビルド バリアントにつき 2 回使用されます。 1 回はencryptResources
タスクで、もう 1 回はtransformClassesWithDashOFor{buildVariant}
タスクです。
保護対象からの除外
dasho
クロージャには、入力を DashO による保護対象から除外できるようにする excludeFromProtection
プロパティを記述します。
このプロパティの設定では、正規表現が使用可能です。
正規表現との一致箇所が含まれる名前を持つ入力はすべて、依存関係として DashO に渡されます。
既定では、何も保護対象から除外されません。
たとえば、プロジェクトに以下のような依存関係がある場合を考えます。
dependencies {
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation project(':imageViewerLibrary')
}
この場合、excludeFromProtection "androidx"
を設定すると、androidx
jar が依存関係として DashO に渡されます。
この設定が役に立つのは、単一ビルドを実行することで、ライブラリ(AAR)とアプリケーション(APK)の両方を配布する場合です。
ライブラリとアプリケーションを共に保護しておきながら、その後、アプリケーションの build.gradle
ファイル内に excludeFromProtection ":library"
を設定するように、DashO を構成することもできます。
アプリケーションのみを配布する場合は、ライブラリを独立して保護しないでください。ライブラリは、保護対象から除外されない限り、アプリケーションと一緒に保護されるためです。
メモ:
正規表現は、大文字と小文字の区別なしで名前の一部と一致しさえすればよいのです。 このため、view
はandroidx.recyclerview:recyclerview:1.0.0
と:imageViewerLibrary
のどちらとも一致します。
すべてと一致するようにexcludeFromProtection
を構成した場合(例:excludeFromProtection ".*"
、excludeFromProtection ""
)には、本ビルドは失敗します。
一部のプラグインでは、名前が変更され、元の名前と一致しなくなる場合があります。 たとえば、Firebase Performance プラグインでは、androidx.annotation:annotation:1.0.0
という名前が0a1124bfce06f9f05e9f92edcabdc725-classes
のような名前に変更されます。 名前が壊れた場合は、名前を壊したプラグイン(例:com.google.firebase.firebase-perf
)を適用する前にcom.preemptive.dasho.android
を適用するようにしてください。
リソースの暗号化
このプラグインは、リソースの暗号化に対応する DashO にリソース情報を渡します。
Gradle の構成に基づいて、Asset およびリソース ディレクトリを自動的に見つけます。
アプリケーションとリソースの両方をビルドしており、ライブラリの Asset と Raw リソースを暗号化させたい場合、クロージャで libraryAssetDirs
および libraryResourceDirs
プロパティを構成します。
本プラグインと Android プラグインとの連携
適用した本プラグインは、自動的に
Android プラグインと統合されます。
本プラグインの完全なバージョンを表示するには、gradlew dashOPluginVersion
を実行します。
サポートされているプロパティ
本プラグインでは、Gradle プロジェクト プロパティ、Java システム プロパティ、または環境変数として設定できる、以下のプロパティがサポートされています。
DASHO_HOME
- DashO ホームを指定します。DISABLE_DASHO
- このプロパティが存在する場合は、DashO によりクラスが処理されなくなります。 値は不要です。false
以外の値はすべてtrue
として解釈されます。GENERATE_DASHO_CONFIG
- 既定の Android モード構成ファイルを生成するように DashO に指示します。 値は不要です。false
以外の値はすべてtrue
として解釈されます。SHOW_DASHO_CMD
- このプロパティが存在する場合は、DashO を起動する際に使用されるコマンド ライン引数が表示されます。 値は不要です。false
以外の値はすべてtrue
として解釈されます。
これらのプロパティは、gradlew
コマンド ラインで、-P{name}[={value}]
または -D{name}[={value}]
を使って渡すことができます。
メモ:構成ファイルが既に存在する場合に
GENERATE_DASHO_CONFIG
プロパティを使用すると、エラーが発生します。