ProGuard が、スレッドを同期するために使用した .wait() 呼び出しを削除したことを発見しました。これにより、競合状態が発生し、楽しいデバッグの 1 日が始まりました :) とにかく...
私はそれを次のプロガード構成の部分まで追跡しました:
-assumenosideeffects public class android.util.Log {
<methods>;
}
なぜこれが起こったのかを理解したい。Log クラスの削除に副作用がないと仮定すると、別のクラス/オブジェクトで .wait() が削除される理由がわかりません。
ProGuard の最適化では #wait() 呼び出しも削除されるのを見ましたが、Eric はそのようなことが起こる可能性があると説明しています。しかし、彼はその理由を説明していません。
また、ここでログを削除する方法の例を見つけました ( http://proguard.sourceforge.net/index.html#manual/examples.html )。したがって、この構成のプロガードを置き換えることができます(ただし、それはこの質問のポイントではありません)。