web-dev-qa-db-ja.com

JACKコンパイラーで縮小化と難読化を行う方法は?

Googleは彼らの新しい JACKコンパイラ のテストバージョンをリリースしましたAndroid Android Studio 2.1。

私の質問は、どのようにしてAPKとJACKの難読化を有効にするのですか?以下の記事によると、JACKは難読化をネイティブに実行し、Proguardの必要性を排除しています。

これに対して、次の記事では、JACKが難読化を実行するためにProguard構成ファイル(つまり、.proファイル)を利用しているとしています。

それはまた言う

このプロセスの間、ジャックは要求されたコードの縮小(縮小および/または難読化も処理します-))。

これはどういう意味ですか? minifyEnabledオプションを使用して、Proguardオプションを含む.proファイルを定義する必要がありますか?

要約:

  • JACKを使用して難読化を有効にするには、どのようにすればよいですか? JACKでコンパイルした場合でも、Proguardの使用をバイパスできますか、それとも難読化プロセスでProguardが事実上の役割を果たしますか?

  • 現在、JACKは難読化をサポートしているかどうかを示していますが、Android Studioの安定した(つまり、非ベータ/カナリー)バージョンで利用できますか?

注:

私はすでに次の投稿を参照しました:

その他の参考資料:

更新:

answer by Matt Insko は役に立ちますが、より詳細で、より正確で標準的な回答を求めています。

36
Y.S

J.A.C.K.難読化は、最新リリースのGradleプラグイン(v2.1.0)ではサポートされていないようです。

最新のv2.1.0プラグインを使用しているときにJACKを有効にすると、プレビューツールを使用する必要がある_Jack requires Build Tools 24.0.0 or later_が通知されます。

Android gradle v2.2.0-alpha1、Build Tools-v24rc4、Platform Tools-v24rc3、およびSdk Tools-v25.1.7rc1を使用して、JACKによって難読化を実行することができました。

defaultConfigビルドで_Minifying the variant used for tests is not supported when using Jack._が構成されているため、debug内で有効にすると、_minifyEnabled true_に不満が出ました。

だから、私はカスタムビルドタイプを作成し、そこで有効にしました:

_buildTypes {
    ...
    custom {
        minifyEnabled true
        proguardFiles 'proguard-Android-JACK.txt-2.2.0-alpha1'
        jackOptions {
            enabled true
        }
    }
_

proguardFiles getDefaultProguardFile('proguard-Android.txt')の使用時に問題が発生しました。次のエラーが発生しました:_com.Android.jack.api.v01.ConfigurationException: Error while parsing ..._、そこで、文句を言われた行を削除し、変更した構成ファイルを手動で指定しました。

9
Matt Insko

あなたはここを見ることができます: https://source.Android.com/source/jack.html

公式ドキュメントから:

(ジャック)縮小、難読化、再パッケージ、およびmultidexを処理します。 ProGuardなどの別のパッケージを使用する必要がなくなりました。

特に、「縮小と難読化」のセクションに注意してください。

Jackは圧縮と難読化のサポートを備えており、proguard構成ファイルを使用して圧縮と難読化の機能を有効にします。

また、サポートされるオプションと無視されるオプションも表示されます。

2