トラブルシューティング
PreEmptive Protection™ DashO™ を使用して製品を保護する際に発生する可能性がある、いくつかの一般的な問題があります。 以下の項目にお客様の特定の問題が見つからない場合は、追加情報を記録するように DashO を構成してみてください。 DashO Gradle プラグイン(Android 用)および DashO Gradle プラグイン(Java 用) にはそれぞれ個別のトラブルシューティング セクションがあります。 どちらかの統合を使用している場合は、以下の該当するトラブル シューティング ページを調べてください。
- 詳細なログまたはデバッグ ログを有効にする方法
- UI に関する問題
- アクティブ化ツールの問題
- ウィザードの問題
- パフォーマンスの問題
- エラー
- Error: Class not found: java.lang.Record
- Error: Error creating output file for {some class}: While parsing {some class and method}
- Error: Error computing frames: Method(s) too large: {some method(s)}
- Error: {some number}
- Error: Class not found {some class}; super class of {some other class}
- Error: Unable to resolve common supertype for: {some class} and {some other class}
- Missing org.apache.http.impl.client.DefaultHttpClient in an Android project.
- Error: Required Method Not Found: {some class and method} call to method {some method} in [class|interface] {some other class}
- Error: Referenced Field Not Found: {some class and method} references field {some field} in [class|interface] {some other class}
- Error: Unable to add to path: {some path}: {message}
- Error: Unable to add to path: {some path}: DashO does not currently support multidex APKs.
- Error: {some class} did not match any classes in the input path.
- Error: Method {some class and method} not found.
- Error: Recursive definition at position {i} in "${expression}"
- Error: Invalid Regular Expression used in {context} : {expression} : {details}
- Error: Ambiguous {some area} class rule: '{some class rule}'. Please select the class or add a nested rule.
- Error: Error reading {path to project.dox} - Illegal version number: X.Y.Z
- Error: Error caching inputs: {some message}
- Error: Issue decoding APK
- Error: Wildcard method call removal is no longer supported: {some instance}
- Error: Unexpected path map version "{some version}" (expected: {some other version}).
- Error: Error reading {some class and method}. This method may have been already protected by DashO.
- Error: DashO does not currently support multi-release jars as inputs: {some path}
- Error: Running on Java {some version} is not supported. Please run on Java 11.
- Error: Unable to access lock: {some path}/dasho.license.lock
- 警告
- Warning: A path in ${gradleInput} does not appear to contain any classes.
- Warning: File format changed. project.dox (vX.Y.Z) has been updated to vX.Y.Z. Please save the updated version.
- Warning: Duplicate class {some class} in {some path} ignored; using version from {some other path}
- Warning: Required Method Not Found: {some class and method} call to method {some method} in [class|interface] {some other class}
- Warning: Referenced Field Not Found: {some class and method} references field {some field} in [class|interface] {some other class}
- Warning: The 'EnclosingMethod' attribute of class '{some class}' references '{some other class}' which was not part of the inputs, and will be retained unmodified in the obfuscated output.
- Warning: Your Android Mode project file contains {some configuration element}.This is ignored in Android Mode.
- Warning: Some strings could not be encrypted, ... First found in: {some class and method}.
- Warning: We recommend using Long Term Support (LTS) releases of Java when running. Java {some version} is not an LTS release.
- Warning: Globally Excluded Class ({some class}) was configured to both update references ({some rule}) and not update references ({some other rule}). References will not be updated in this class.
- Error: Classes renaming alphabet: Minimum length of {n} exceeds alphabet's maximum length {m}".
詳細なログまたはデバッグ ログを有効にする方法
追加情報を記録するように DashO を構成する方法は次のとおりです。
- DashO GUI を実行している場合:[Preferences]で、Logging Level
Verbose
(またはDebug
)を使用し、Print Stack Traces
をオンにします。 - DashO コマンド ラインを実行している場合:
dashocmd
の実行時に、引数--verbose
(または--debug
)と--printStackTraces
を追加します。 - DashO Gradle プラグイン(Java 用)を使って DashO を実行している場合:
dashOConfig
にverbose = true
(またはdebug = true
)を追加します。 - DashO Gradle Plugin for (Android 用)を使って DashO を実行している場合:
dasho
にverbose true
(またはdebug true
)を追加します。 - Ant 統合を使って DashO を実行している場合:
obfuscate
タスクでverbose="true"
およびprintstacktraces="true"
を設定します。 また、output
やerror
ファイルを設定しておくと役立つことがあります。
UI に関する問題
DashO が起動しない
DashO が起動しない理由で一番多いのは、Java の適切なバージョンを見つけられないことです。
これは、DashO GUI の実行時には A Java Exception has occured.
というメッセージで、また CLI 実行時には Unsupported major.minor version 52.0
というメッセージとして表示されることがあります。
コマンド プロンプトから、DashO ホームで dashocmd.bat --version
(または ./dashocmd --version
)を実行することで、この問題が診断しやすくなる可能性があります。
適切な Java ランタイムが利用され、正しく構成されていることを確認してください。
メモ: 提供されたインストーラーのいずれも使用しなかった場合は、
java
の適切なバージョンがパス上にあることを確認してください。 コマンド プロンプトからjava -version
を実行すれば、パス上にあるjava
のバージョンを特定できます。 また、DASHO_JAVA_HOME
を設定することもできます。DASHO_JAVA_HOME
を使用すると、パスより優先します。 適切なバージョンで構成されていることを確認してください。
高 DPI およびスケーリングに関する問題
Java で実行されるデスクトップ アプリケーション(つまり DashO)は、拡大率が 100% 以上になっている高 DPI ディスプレイの Windows では、ほとんどの場合、適切に表示されません。
これらの問題は、DashO の GUI では、ツール ヒントが切り詰められる(たとえば、View the User Guide
ではなく View the User
となる)、アイコンやスプラッシュ画面イメージが小さく表示される現象として現れます。
javaw.exe
の Windows 設定を変更することにより、表示を改善できます。
- DashO の実行に使用される JDK(または JRE)の場所 を特定します。
- Windows エクスプローラーで、
javaw.exe
(bin
またはjre/bin
のいずれかにあります)を探します。 javaw.exe
を右クリックして[プロパティ]を選択します。- [互換性]セクションを表示します。
- [高い DPI スケールの動作を上書きします]チェック ボックスをオンにします。
- "システム" を選択します。
- [OK]をクリックします。
macOS で {folder} の内容が表示されない
Catalina 以降、macOS は一部のユーザー フォルダー(ダウンロード、デスクトップ、書類など)へのアプリケーション アクセスを制限するようになりました。 DashO をアプリケーションとして起動すると、それらのフォルダーへのアクセスを要求できない場合があります。 代わりに、フォルダーが空として表示されます。
DashO GUI でこれらのディレクトリにあるプロジェクトを使用するには、アプリケーション(PreEmptive Protection DashO x.y.app/Contents/Java/dashogui
)内にある dashogui
シェル スクリプトを使用して DashO を起動します。
または、アクセス権を必要としないディレクトリにプロジェクトを移動させます。
アクティブ化ツールの問題
構成エディターを介したアクティブ化では、DashO アクティブ化ツールが使用されます。 アクティブ化ツールは、preemptive.com への Web ブラウザーを起動することによって機能します。このページでログインし、DashO のインストレーションをアクティブ化することができます。 ブラウザーでのアクティブ化手続きが完了すると、ブラウザーから必要な情報がアクティブ化ツールに送り返されてくるので、アクティブ化を確認し、保存することができます。
以下のサブセクションでは、アクティブ化ツールから起こる可能性のある問題の解決方法について詳述します。
アクティブ化ツールが Windows ファイアウォール ダイアログを表示する
アクティブ化ツールはブラウザーから情報を受け取るために、TCP ポートで localhost
ホストをリッスンします。
これにより、次のメッセージを含む[Windows セキュリティの重要な警告]ダイアログがトリガーされます。
すべてのパブリック ネットワークとプライベート ネットワークで、Windows Defender ファイアウォールにより OpenJDK Platform binary の機能のいくつかがブロックされています。
アクティブ化ツールは localhost
のみをリッスンするため、ファイアウォールの例外を必要としません。
このダイアログは次のようにして安全に閉じることができます。
- すべてのチェック ボックスをオフにします。
- [キャンセル]ボタンをクリックします。
メモ: 含まれている java ランタイムを使用していない場合、この例外を無視すると、同じ java インストレーションを使用する他のアプリケーションにも影響を及ぼします。
ブラウザー処理の完了後、アクティブ化ツールが続行されない
アクティブ化ツールは Web ブラウザーからの情報を待っている間、次の画面を表示します。
ただし、アクティブ化ツールへのブラウザーの HTTP 要求がブロックされたか、または失敗した場合には、ブラウザーがアクティブ化手続きのフェーズが完了したことを報告していても、ツールは上に示す画面を表示し続けます。
これを解決するには次のようにします。
- Web ブラウザーの成功メッセージでアクティブ化トークンを探し、それをクリップボードにコピーします。
- アクティブ化ツールで、ウィンドウ下部にある "click here to activate manually."(ここをクリックすれば、手動でアクティブ化を行えます)のラベルの付いたハイパーリンクをクリックします。
- 表示される画面で、アクティブ化トークンをフォームに入力して[Activate]をクリックします。
ウィザードの問題
The Wizard was not able to locate the buildscript section of build.gradle. You may need to manually incorporate the DashO Gradle Plugin for Android.
ウィザードは、buildscript
セクションを含む build.gradle
ファイルを見つけることができませんでした。
プロジェクトのセットアップを完全に完了していません。
それを手動で構成する必要があります。
パフォーマンスの問題
Android モードでのビルドが予想以上に時間がかかる
DashO Gradle プラグイン(Android 用)は、アプリケーションが直接または間接的に依存するライブラリ プロジェクトまたはサード パーティ製のライブラリなど、Android アプリケーションのビルドで使用可能なすべてのコードを保護します。 文字列の暗号化および制御フローの難読化を R8 の名前変更と組み合わせることで、攻撃者はアプリケーションのクラスと共通ライブラリのクラスを区別することが困難になるので、保護が強力になります。 ただし、ビルドに要する時間が問題になる場合は、DashO が処理するクラス数を減らすことができます。
そのような場合は、アプリケーションの依存関係の多くが Android のサポート ライブラリである可能性があります。これらのライブラリを保護対象から除外するには、dasho
に excludeFromProtection "^android"
を追加します。
これで、DashO により、android
で始まる名前が含まれるすべての入力が保護対象から除外されます。
グローバルな対象除外を使用して、DashO が特定のパッケージのクラスを処理しないようにすることもできます。 どのパッケージを対象から除外するかは、プロジェクトによって異なります。
エラー
Error: Class not found: java.lang.Record
(Java 14 以降でコンパイル済みの)record を使った入力を難読化するときに、JDK_HOME 環境変数で設定している JDK のバージョンが 17 より前であった場合、DashO は次のエラーを表示します。
Error: Class not found: java.lang.Record; super class of com.preemptive.sealedrecordtest.ConstantExpr
Warning: java.lang.Record not found
Warning: java.lang.runtime.ObjectMethods not found
このエラーを回避するには、record を使った入力を難読化するときに、JDK_HOME 環境変数で Java 17 以降のバージョンを設定していることを確認してください。この要件は、Sealed Interfacese など、インターフェイスを拡張するレコードにも適用されます。
Error: Error creating output file for {some class}: While parsing {some class and method}
デバッグ ログを有効にして DashO を再度実行し、そのログの情報をサポート担当者に連絡してください。
この問題を回避するには、保護対象から some class and method
を除外してみてください。
Error: Error computing frames: Method(s) too large: {some method(s)}
DashO の一部の保護技術は、メソッドの全体的なコード サイズを増大させる可能性があります。
ごくまれに、保護によってメソッドのサイズが、Java 仮想マシンがサポートするサイズを超えるまで大きくなることがあります。
制御フローおよび/または文字列の暗号化の対象から some method(s)
を除外するか、メソッドをより小さなメソッドにリファクターすることができます。
メモ: 1 つのクラスにつき 1 つのメソッドのみがリストされます。
Error: {some number}
デバッグ ログを有効にして DashO を再度実行し、そのログの情報をサポート担当者に連絡してください。 その時点で操作されているクラスまたはメソッドを特定できる場合は、そのクラスまたはメソッドを保護対象から除外して、問題を回避することができます。
Error: Class not found {some class}; super class of {some other class}
DashO は、クラスの使用方法や名前の変更が可能な項目を決定するときに、スーパー クラスにアクセスして、継承されるメソッドおよびオーバーライドされるメソッドを決定する必要があります。
some class
を含んでいる jar ファイルを、サポートするクラスパス(または、そのクラスを DashO で保護する必要がある場合は入力)に追加する必要があります。
some class
が java.lang.Object
である場合は、Include JDK(JDK の導入)を構成する(または、これが Android プロジェクトである場合は、android.jar
をサポートするクラスパス(Supporting Classpath)に追加する)必要があります。
some other class
が、アプリケーションで実際に使用されていると思われないクラスである場合は、Removal の構成を確認してください。
未使用のクラスを除去しないように DashO が構成されている場合は、すべての入力クラスのスーパー クラスにアクセス可能である必要があります。
Error: Unable to resolve common supertype for: {some class} and {some other class}
このエラーは通常、some class
または some other class
が入力またはサポート クラスパスに見つからない場合に発生します。
背後にある問題の詳細については、Print Stack Traces を有効にします。
Missing org.apache.http.impl.client.DefaultHttpClient in an Android project.
Google は Marshmallow(6.0 - SDK v23) で、android.jar
内のこのクラスの配布を停止しました。
${sdk.dir}/platforms/${sdk.target}/extras/org.apache.http.legacy.jar
をサポート クラスパスに追加してください。
Error: Required Method Not Found: {some class and method} call to method {some method} in [class|interface] {some other class}
some class and method
の実行パスを調べているときに、some method
が some other class
に見つかりませんでした。
これは、DashO 構成内の正しくないバージョンのサポート ライブラリを参照した場合に発生する可能性があります。
入力およびサポート クラスパスを確認してください。
Ignore Missing Members をオンにすると、このエラーを警告に格下げすることができます。
Error: Referenced Field Not Found: {some class and method} references field {some field} in [class|interface] {some other class}
some class and method
のコードをスキャンしているときに、some field
が some other class
に見つかりませんでした。
これは、DashO 構成内の正しくないバージョンのサポート ライブラリを参照した場合に発生する可能性があります。
入力およびサポート クラスパスを確認してください。
Ignore Missing Members をオンにすると、このエラーを警告に格下げすることができます。
Error: Unable to add to path: {some path}: {message}
これは、入力またはサポート クラスパスのエントリの読み取り時に発生するエラーです。
message
には詳細情報が含まれます。
エントリ(または、エントリによって展開されるユーザー プロパティ定義を確認してください)。
メモ: これがサポート クラスパス エントリであり、警告にする場合は、
WARN_ON_MISSING_SUPPORT_ENTRY
という名前のユーザー プロパティ を追加し、true
を設定します。
Error: Unable to add to path: {some path}: DashO does not currently support multidex APKs.
DashO は、処理後の Multidex APK を入力としてサポートしていませんが、Gradle ビルドに統合されている場合には Multidex APK をサポートします。 代わりに、DashO を Gradle ビルド処理に統合してください。
Error: {some class} did not match any classes in the input path.
構成されている特殊なエントリ ポイント some class
が入力内に見つかりませんでした。
クラス名に間違いがないことと、クラスが入力の一部であることを確認してください。
GUI でプロジェクトを表示すると、クラスが入力の一部であるかどうかの判断に役立つ可能性があります。
Error: Method {some class and method} not found.
構成されているエントリ ポイント some class and method
が入力内に見つかりませんでした。
クラスおよびメソッドのスペルに間違いがないことと、メソッドの署名が正しいことを確認してください。
GUI でプロジェクトを表示すると、クラスおよびメソッドが入力の一部であるかどうかの判断に役立つ可能性があります。
Error: Recursive definition at position {i} in "${expression}"
プロパティの拡張は入れ子のプロパティをサポートしています。
このエラーは、入れ子のプロパティを含んでいるプロパティを評価していて、再帰が見つかった場合に発生します。
これを解決するには、再帰的な定義を削除する必要があります。
再帰が見つかった場所は、expression
内の i
で始まるプロパティ名です。
Error: Invalid Regular Expression used in {context} : {expression} : {details}
このエラーは、無効な正規表現が見つかった場合に発生します。 メッセージには次の事項が含まれています。
context
- 構成内でexpression
が使用されている領域。expression
- エラー原因となった式。 これは、展開されたプロパティ参照からのものであった可能性があります。details
- 特定の問題に関する詳細情報。
Java 正規表現の構文を確認してください。
Error: Ambiguous {some area} class rule: '{some class rule}'. Please select the class or add a nested rule.
これは、DashO が期待される動作を判断できない場合に発生します。
selects-class
属性が false
である場合、規則はその子である入れ子になった規則を調べて、クラスが規則に一致するかどうかを判断します。
子がない場合、その規則はあいまいになります。
このエラーを解決するには、次のいずれかを実行します。
select-class
をtrue
(またはexcludeclass
をfalse
)に設定する。- 入れ子になった規則を追加する。
- クラスの規則を削除する。
Error: Error reading {path to project.dox} - Illegal version number: X.Y.Z
古いバージョンの DashO で新しい DashO 構成ファイルを開こうとしています。 このファイルは DashO vX.Y.Z(以降)で開く必要があります。 新しいバージョンの DashO では、古いバージョンの構成ファイルを読み取ることができます。
次のプラグインのいずれかを使用したビルド時にこのエラーが表示された場合、DashO の場所が正しく設定されているかどうかを確認してください。
Error: Error caching inputs: {some message}
自動入力管理で使用されるキャッシュで問題がありました。 詳細については、メッセージを参照してください。
Error: Issue decoding APK
APKTool で APK のデコード中に問題が発生しました。 デバッグ ログを有効にして、詳細をコンソールで確認してください。
Error: Wildcard method call removal is no longer supported: {some instance}
ワイルドカードによるメソッド呼び出しの除去はサポートされなくなりました。 そのメソッドが含まれる特定のクラスを構成する必要があります。
Error: Unexpected path map version "{some version}" (expected: {some other version}).
このメッセージが表示されるのは、お使いの DashO バージョンと互換性のないバージョンの DashO がパスの割り当てファイルを読み取ろうとした場合です。
このメッセージが GUI に表示された場合は、この構成を使って行われた最後のビルドが、ユーザーが実行しようとしている DashO バージョンと互換性のない DashO Gradle プラグイン(Android 用)バージョンであるということです(例:DashO Gradle プラグイン(Android 用)バージョン 0.10.0 を使ってビルドを行ったが、非ベータ バージョンの DashO 10.0 を使ってそのビルドの構成を開いた、など)。 使用したい DashO バージョンと互換性のあるバージョンの DashO Gradle プラグイン(Android 用)を使用していることを確認したうえで、Android プロジェクトをビルドしてください。
Gradle のビルド中にこのメッセージが表示された場合は、DashO のバージョンと、使用しようとしている DashO Gradle プラグイン(Android 用)のバージョンに互換性がありません。
DashO Gradle プラグイン(Android 用)のバージョンと、それらのバージョンの DashO との互換性の詳細については、バージョン間の互換性を参照してください。
Error: Error reading {some class and method}. This method may have been already protected by DashO.
このエラーが発生する可能性があるのは、既に DashO によって保護されていたコードを処理しようとした場合です。 DashO は、既に保護しているコードを再度処理するようには設計されていないためです。 このエラーが発生する例としては、ライブラリや、そのライブラリを使用する Android アプリと DashO を統合しようとした場合が挙げられます。 そのような場合は、アプリを保護するだけで十分です。アプリを保護すれば、そのアプリ内のライブラリ コードも保護されるからです。
DashO によって既に保護されているコードを処理するのに DashO を使用しないようにしてください。
DashO Gradle プラグイン(Android 用)を使用しているときにこの問題が発生した場合は、{some class}
が含まれる入力を使って excludeFromProtection
を構成します。
Error: DashO does not currently support multi-release jars as inputs: {some path}
DashO は、入力として構成されたマルチ リリース jar ファイルをサポートしていません。
Error: Running on Java {some version} is not supported. Please run on Java 11.
DashO は、Long Term Support(長期サポート)のない古い JVM リリースでの実行をサポートしません。
Error: Unable to access lock: {some path}/dasho.license.lock
DashO はロック ファイルを作成できませんでした。
これは、デバイス上の別のユーザーが既にライセンスをアクティブ化している場合に発生することがあります。ライセンス ファイルは、そのユーザーのみが書き込み可能になっているかもしれません。
ロック ファイルが存在しており、書き込み可能であるかどうかを確認してください。
警告
Warning: A path in ${gradleInput} does not appear to contain any classes.
Android ビルドに基づく従来の DashO Gradle プラグインでは、DashO の入力はプロパティ gradleInput
(DashO Gradle プラグインから渡されます)から受け取るように構成されます。
このプロパティには(User Properties ページで)1 つ以上のパスの既定値が設定されているため、DashO はクラスを読み込んで、GUI にクラス ツリーを作成できます。
この既定値にクラスが何も含まれていない場合、クラス ツリーは正しく作成されず、新しいチェックや規則を設定することが難しくなります。
これは、以下の理由から発生する可能性があります。
- クラスがコンパイルされていない可能性があります。
gradlew assemble
または同様のタスクを実行して、プロジェクトをコンパイルしてください。 - ウィザードがビルド バリアントに基づいて設定した
gradleInput
がビルドされていません(たとえば、gradleInput
はrelease
クラスの場所を参照しているのに、debug
しかビルドされていません)。 これは、すべてのバリアントをビルドすれば解決します。 - プロジェクトで Kotlin を使用していますが、
gradleInput
に Kotlin クラスが含まれていません。 Kotlin クラスの場所をgradleInput
に追加してください。その際、他のパスとの区切りには、プラットフォームに依存しないプロパティの拡張${path.separator}
(または、プラットフォーム依存の;
または:
)を使用します。 Kotlin クラスのパスは、通常、次のようになります。
build/tmp/kotlin-classes/[<flavorName>]<buildType>
- Android Gradle プラグインがコンパイルしたクラスを配置する場所が変更されている可能性があります(たとえば、DashO プロジェクトは、現在使用しているバージョンより古いバージョンの Android Gradle プラグインで作成されています)。
少なくとも 1 つのビルド バリアント用のクラスを含んでいるディレクトリを探し、その場所を参照するように
gradleInput
の既定値を更新する必要があります。
Android Gradle プラグインのバージョンが 3.2.0 より前である場合には、クラスのパスは通常、次のようになります。
build/intermediates/classes[/<flavorName>]/<buildType>
バージョン 3.2.0 以降の Android Gradle プラグインを使用している場合には、クラスのパスは通常、次のようになります。
build/intermediates/javac/[<flavorName>]<buildType>/compile[<flavorName>]<buildType>JavaWithJavac/classes
たとえば、プロジェクトで Android Gradle プラグインのバージョン 3.2.0 を使用しており、GUI に release
ビルド タイプで pro
フレーバーのクラスを表示させたい場合には、パスは build/intermediates/javac/proRelease/compileProReleaseJavaWithJavac/classes
になります。
クラス ツリーを再作成するには、プロパティを更新後、ツール バー にある[Reload Class List]ボタンをクリックする必要があります。
Warning: File format changed. project.dox (vX.Y.Z) has been updated to vX.Y.Z. Please save the updated version.
この警告は、古いバージョンの DashO からプロジェクトの構成を開いた場合に発生します。 更新されたバージョンを保存すると、今後この警告は表示されなくなりますが、古いバージョンの DashO で開くこともできなくなります。 GUI は構成を保存する際、常に最新の形式を使用します。
Warning: Duplicate class {some class} in {some path} ignored; using version from {some other path}
同じクラス定義が、入力またはサポート クラスパスのいずれかの、2 つの異なるエントリに見つかりました。 これは、同じライブラリの複数のバージョンが構成されている場合、または同じクラスを含む(あるいは、同じ完全修飾名を使用する異なるクラスを含む)2 つの別個のライブラリがある場合に発生する可能性があります。 重複するライブラリを削除してください。 エントリの順序を変更することもできます。 後者のエントリのクラスは無視されるようになります。
メモ: この警告は、マルチ リリース jar ファイルがサポート クラスパスにある場合にも表示されることがあります。
Warning: Required Method Not Found: {some class and method} call to method {some method} in [class|interface] {some other class}
some class and method
の実行パスを調べているときに、some method
が some other class
に見つかりませんでした。
これは、DashO 構成内の正しくないバージョンのサポート ライブラリを参照した場合に発生する可能性があります。
入力およびサポート クラスパスを確認してください。
Ignore Missing Members をオフにすると、この警告をエラーに格上げすることができます。
Warning: Referenced Field Not Found: {some class and method} references field {some field} in [class|interface] {some other class}
some class and method
のコードをスキャンしているときに、some field
が some other class
に見つかりませんでした。
これは、DashO 構成内の正しくないバージョンのサポート ライブラリを参照した場合に発生する可能性があります。
入力およびサポート クラスパスを確認してください。
Ignore Missing Members をオフにすると、この警告をエラーに格上げすることができます。
Warning: The 'EnclosingMethod' attribute of class '{some class}' references '{some other class}' which was not part of the inputs, and will be retained unmodified in the obfuscated output.
EnclosingMethod
属性は、ローカルまたは匿名の {some class}
を囲むクラスおよびメソッドを参照します。
不足している {some other class}
を入力に追加すれば、この警告は出ません。
{some other class}
がまったく存在しない場合は、ご利用のコンパイラに問題があることを示している場合があります。
元の名前が、保護済みコードでも依然として参照される、また {some other class}
を入力に追加できない場合は、DashO で EnclosingMethod
属性を除去)するよう指示することができます。
Warning: Your Android Mode project file contains {some configuration element}.This is ignored in Android Mode.
標準モードの多くの設定は Android モードでは無視されます。 このタイプの警告メッセージでは、プロジェクト ファイルの中で、Android モードでは無視される XML 要素、XML 属性、グローバル オプション、および特殊なユーザー プロパティを指摘します。
多くの場合、(エントリ ポイント, 名前の変更の対象除外、除去、およびメソッド呼び出しの除去など)これらの設定を R8 構成に移行することもできます。 必要な移行を行った後に、無視された設定をテキスト エディターを使ってプロジェクト ファイルから安全に削除することができます。
Warning: Some strings could not be encrypted, ... First found in: {some class and method}.
invokedynamic
ベースの文字列連結(詳細は JEP-280 を参照)は、Java 9 から導入されたもので、文字列定数をブートストラップ メソッドに渡すことができます。
DashO の文字列の暗号化は現在、Java 9 または Java 10 ではこれをサポートしていません。
定数でない値と連結された定数文字列(例:"Welcome, " + name + ", to string concatenation."
)は、既定では暗号化されません。
この問題が発生した場合は、DashO により、ビルドあたり一度だけ、警告が発行されます。
この問題は、Java 9 または Java 10 JVM 用にコンパイルされたクラスにのみ影響します。
DashO の文字列の暗号化を機能させるための解決方法が 2 つあります。
- 9 または 10 以外の JVM 用にコンパイルする。
- JEP-280 の説明に従って、
-XDstringConcat=indy
を使用してコンパイルする。
Warning: We recommend using Long Term Support (LTS) releases of Java when running. Java {some version} is not an LTS release.
LTS(Long Term Support:長期サポート)付きの Java リリースで実行することをお勧めします。
Warning: Globally Excluded Class ({some class}) was configured to both update references ({some rule}) and not update references ({some other rule}). References will not be updated in this class.
競合する規則 {some rule}
および {some other rule}
に一致するクラス {some class}
が見つかりました。
DashO によって処理されるクラス内のクラス、メソッド、またはフィールドを {some class}
が参照している場合は、{some other rule}
を更新して、参照の更新を有効にするか、または {some class}
と一致しないようにする必要があります。
{some class}
が参照していない場合は、{some rule}
を更新して、参照の更新を無効にするか、または {some class}
と一致しないようにします。
Error: Classes renaming alphabet: Minimum length of {n} exceeds alphabet's maximum length {m}".
Renaming - Options(名前の変更オプション)のクラス/メソッド名のパラメーター "Min Length"(最小の長さ)の値が、現在選択されている名前変更の文字集合で許可されている値を超えています。このエラーを回避するには、このパラメータの値を小さくするか、文字集合を短くするようにしてください。