「dexguard」タスク中にこのスタックトレースを取得します(すべての行はタイムスタンプとで始まりました[ERROR] [org.gradle.BuildExceptionReporter]
):
Caused by: groovy.lang.MissingMethodException: No signature of method: com.android.build.gradle.internal.core.GradleVariantConfiguration.getAllLibraries() is applicable for argument types: () values: []
at com.guardsquare.dexguard.h.getProguardFiles(DexGuard7.1.23:1090)
at com.guardsquare.dexguard.ao.doCall(DexGuard7.1.23:784)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:590)
Windows 7 64b で DexGuard v7.1.23、Android Studio 2.2、デフォルト gradle 2.14.1 を使用しています。
build.gradle
エラーは、(関連するすべてのスクリプトで)変更した後に発生します。
dependencies {
- classpath 'com.android.tools.build:gradle:2.1.3'
+ classpath 'com.android.tools.build:gradle:2.2.0'
gradle プラグイン 2.1.3 を使用すると、ビルドが機能します。
gradleにリモート接続してAndroid Studioでデバッグしようとしましたが、デバッガーの「一時停止」ボタンはプロセスを一時停止しているように見えますが、実行を再開できますが、コードは表示されません(おそらくgradleのソースが必要です)関連するすべてのプラグインは?)
エラーは、android gradle プラグイン 2.2.0 では利用できないものにアクセスする dexguard gradle プラグイン コードで発生する可能性が最も高いと思います。
質問時間:
このようなものをデバッグ/修正する方法は? 私は、make ファイルと外部ツールを実行するさまざまなスクリプトを含む巨大な C++ プロジェクトからのいくつかの重要なビルド スキームに慣れています (ソース レベルですべてのビルド エラーを簡単にチェックし、どのバイナリがどのパラメーターでどのような理由で呼び出されたかを正確に知ることができます)。 、しかし、いくつかのネットワークリポジトリからダウンロードされた非常に多くの動的パーツと非常に遅いGroovy実行制御を備えたこのgradleエコシステムは、私にとって少し複雑すぎて、頭がいっぱいです。
ビルド プロセスをデバッグする (あまり難しくない) 方法はありますか? 依存関係を追加するだけで、Linuxの-src.pkgと同様に、リポジトリからソースパッケージも取得する簡単な方法でしょうか?
または、キャッシュされた dexGuard gradle プラグイン バイナリをどこかで見つけて逆アセンブルし、それが何を呼び出しているかを確認して、自分のスクリプトで手動で書き直すことはできますか?
そのグラドルブラックボックスに関する詳細情報を取得する方法についてのアドバイスはありません。それがどのように機能するか、なぜ失敗したかなど... (ただし、Groovy 全体を適切に学習することは考えていません。特に、コア言語についてさえその考え方を理解していないためです (私は単純な人で、ASM で考えています)およびC ++)、そして私がそれをよく理解している場合、gradleはそれをドメイン固有の方法で拡張するため、純粋なGroovyはこれらのスクリプトを流暢に理解するには十分ではありませんか?)。