2

Gradleを実行しているがプラグイン「dexguard」を保持しているときにdexguardを無効にする方法を探して、ドキュメントを調べました。

私は何もしないように proguardFile getDefaultDexGuardFile('dexguard-debug.pro')を変更しようとしましたが、残念ながらうまくいきませんでした。現在、apk を計測できない機能テスト スーツ MonkeyTalk に dexguard 機能を設定する必要はありません。

dexguard 機能をオフにする方法は?

4

3 に答える 3

4

現在の Android Gradle プラグイン (v1.0+) および Dexguard プラグイン (6.1.+) に対する zatziky の回答からの更新

dexguard プラグイン スイッチを作成するには、次の手順を実行します。

ルートbuild.gradleにプロパティを追加しますext(または、まだ作成していない場合は作成します。なぜそれを行うのかについては、こちらを参照してください

ext {
    enableDexGuardPlugin = false
    ....
}

アプリ build.gradle で、次のようにプラグインを追加します。

apply plugin: 'com.android.application'
if(rootProject.ext.enableDexGuardPlugin) {
    apply plugin: 'dexguard'
}

ライブラリプロジェクトがある場合は、このようにします

apply plugin: 'com.android.library'
if(rootProject.ext.enableDexGuardPlugin) {
    apply plugin: 'dexguard'
}

getDefaultDexGuardFile('dexguard-release.pro')必要がない場合は、デバッグビルドタイプ (特に) からすべてのプロガード構成を削除します。残念なことに、少なくとも lib プロジェクトでは、すべてのビルド タイプが assembleDebug でもビルドされるため、zatzikyが言ったgetDefaultDexGuardFileようにスタブを提供する必要があります。

private File getDefaultDexGuardFile(String name) { new File(name) }

これをルートに追加して、build.gradleすべてのスクリプトに含めることができます。

これにより大きなパフォーマンス上の利点を期待していた場合は、がっかりするかもしれません。minifyEnabled前に述べたように、現在gradle androidはダムであり、すべてのビルドタイプを(少なくともライブラリで)ビルドするため、デバッグビルドですべてを無効にすることが重要です。上記のプロパティを使用できます。enableDexGuardPlugin

release {
    ...
    minifyEnabled rootProject.ext.enableDexGuardPlugin
    ...
}
于 2015-06-07T09:34:11.890 に答える
2

DexGuard の最近のバージョンでは、「proguardFile」行をリストしないことで、特定のビルド バリアントの処理を無効にすることができます。

たとえば、デバッグ ビルドで無効にするには、次のようにします。

buildTypes {
    debug {
    }
    release {
        proguardFile getDefaultDexGuardFile('dexguard-release.pro')
        proguardFile 'dexguard-project.txt'
        proguardFile 'proguard-project.txt'
    }
}

編集- 機能させるには、すべての proguardFiles を削除する必要があります

于 2015-04-14T15:27:05.050 に答える
2

dexguard プラグインをオンにしておくことはできません。

これは、Eric La Fortune が私に送信した回避策であり、動作します (Dexguard 6.x):

DexGuard を無効にするには、Android プラグインに戻す必要があります。別の Gradle ビルド ファイルを作成できます。または、Groovy で優先プラグインを選択することもできます。例えば

build.gradle:
boolean dexguard = ......

apply plugin: dexguard ? 'dexguard' : 'android'

同じ方法でユーティリティ メソッド getDefaultDexGuardFile を呼び出すこともできます。

runProguard true
proguardFile dexguard ?
getDefaultDexGuardFile('dexguard-release.pro') :
getDefaultProguardFile('proguard-android.txt')

標準の Android プラグインが選択されている場合は、ビルド ファイルでこのメソッドのダミー バージョンを定義する必要があります。どちらの場合も呼び出されませんが、標準プラグインの不足しているメソッド定義を解決します。

private File getDefaultDexGuardFile(String name) { new File(name) }
于 2014-12-16T15:56:10.843 に答える