カスタム注釈によって注釈が付けられたクラスやメソッドを変換/変更する方法はありますか? #バイトコード操作(ただし、デックス用)注釈によるクラス/メソッドの変換
これを行うにはどうすればよいですか?
プロキシは、私が探しているもののための適切な方法ではありません。
カスタム注釈によって注釈が付けられたクラスやメソッドを変換/変更する方法はありますか? #バイトコード操作(ただし、デックス用)注釈によるクラス/メソッドの変換
これを行うにはどうすればよいですか?
プロキシは、私が探しているもののための適切な方法ではありません。
Dexファイルのベース操作は可能ですが、非常に複雑で、優れたツーリングはほとんどありません。
代わりに、クラスファイルとして表示されるときに、ビルド中にコードを計測する必要があります。それにはさまざまなツールがあります。私はByte Buddyというツールを書いています。これはMavenまたはGradleプラグインを使ってビルド中にコードを実行できるようにします。
クラスを変更するには、変更するクラスと変更方法を指定できるライブラリのPlugin
インターフェイスを実装する必要があります。 Byte Buddyはすべてのクラスをインライン化し、ランタイムプロキシを作成する必要はありません。
、あなたはプラグインのコードを参照する構成を作成する必要があります。
configuration {
myPlugin
}
dependencies {
myPlugin "my:plugin:1.0"
}
byteBuddy {
transformation {
plugin "pkg.MyPluginImpl"
classpath configuration.myPlugin
}
}
私はそれはあなたがAndroidのための開発を与える使用するものであると仮定します。
これをライブラリモジュールにも適用するにはどうすればよいですか?主なアプリプロジェクトのクラスのみが変換されています。 – Reymanx
残念ながらそれは不可能です。ライブラリは、配置された成果物の一部ではありません。それらを再構築する必要があります。あるいは、実行時にJavaエージェントを使用する必要があります(これはAndroidでは不可能です)。 –