問題タブ [dexguard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - DexGuard とベクター ドローアブル
DexGuard を使用してアプリをコンパイルしています。私のアプリはベクター型ドローアブルを使用しています。私はすべての設定を正しく行っており、デバッグ バージョンとリリース バージョンで Proguard を使用している場合の両方で正しく動作します。DexGuard を使用している場合、リリース バージョンでのみクラッシュします。だから私はそれが DexGuard の問題であることを知っています。DexGuard v7.0 を使用していますが、ライセンスの制限により更新できません。
-keepresourcefiles "res/drawable/**"
-keep class android.support.v7.** { *; }
テスト目的とより明確なスタックトレースのために dexguard ファイルに追加
したので、それが問題ではないことがわかりました。次のスタックトレースでクラッシュします。
コードに従うと、DexGuard を使用すると、メソッドloadDrawableFromDelegates
(から呼び出されるgetDrawable
)android.support.v7.widget.AppCompatDrawableManager
が null を返すことがわかります。そのため、getDrawable
引き続き と を呼び出しますがContextCompat.getDrawable
、これは Lollipop より前のデバイスでは Vector をサポートしていません。invalid drawable tag vector
ログと共に null が返されるため、ResourcesNotFoundException
.
デバッグ バージョンを使用するとloadDrawableFromDelegates
、Drawable が返されるため、ContextCompat.getDrawable
呼び出されず、すべて正常に動作します。これを回避する方法はありますか?私はググってみましたが、似たような問題を抱えていた人が他にもいますが、それらは主に appcompat ベクトル設定の問題であり、DexGuard ではありませんでした。
android - DexGuard 7 と Retrofit 2 のエラー
私のアプリでは、ネットワーク通信にレトロフィット 2 を使用しています。たとえば、すべてのAPIリクエストを含むserverAPIインターフェースがあります。
アプリケーションを難読化するために Dexguard 7.2.09 を使用していますが、すべてのネットワーク通信が正常に機能しています。
何が悪いのか本当にわかりません。
アプリケーションがこのリクエストを呼び出すと、コードは onFailure() メソッドにジャンプしますが、アプリはサーバーにリクエストを送信しません。
アプリケーションを難読化しなければ、すべて正常に動作します。
android - サポートされている Android デバイスがゼロの謎
約 1 か月間、この問題を解決しようとしてきましたが、問題の原因を示す情報が見つかりません。私が確認したところ、「uses-features」の問題の1つではないようです。
「サポートされている Android デバイス」の詳細に関する以前の質問を開発者コンソールに投稿しましたが、これは矛盾しているように思われます。0 対応機種は?
以下は aapt の出力です。サポートされている Android デバイスがゼロになる原因となるものはありますか? すべての支援に感謝します。出力の「ラベル」行を削除しました。
android-gradle-plugin - Android gradle プラグイン (2.2.0 へのアップグレード後) が dexguard タスク エラー「メソッドの署名がありません: ....getAllLibraries()」で失敗する
「dexguard」タスク中にこのスタックトレースを取得します(すべての行はタイムスタンプとで始まりました[ERROR] [org.gradle.BuildExceptionReporter]
):
Windows 7 64b で DexGuard v7.1.23、Android Studio 2.2、デフォルト gradle 2.14.1 を使用しています。
build.gradle
エラーは、(関連するすべてのスクリプトで)変更した後に発生します。
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はこれらのスクリプトを流暢に理解するには十分ではありませんか?)。
android-proguard - proguard.ParseException: proguard.cfg の不明なオプション '-encryptstrings'
progurad オプションを指定して mvn install goal を実行すると、次のエラーが発生します。以前は、このエラーはありませんでした。次のエラーが発生した原因がわかりませんでした。
プロジェクトにdexguardを使用しています。maven が dexguard フォルダーの場所を特定できなかったため、このエラーが発生したのですか?
proguard.cfg の内容:
以下は問題なく動作します: