私はそれを実装するアプリケーションのレイアウト項目にアクセスする必要があるライブラリを開発しています。私はそれを行う方法を知っている唯一の方法は、反射とです。言い換えれば、私はこのように私のライブラリAPIにコンストラクタを作成した場合:AndroidライブラリからアプリRクラスにアクセスする
public MyLibraryAPI(String packageName) {
Class appR = Class.forName(String.format("%s.R", packageName));
...
}
、開発者は、コンストラクタのパラメータとしての彼のパッケージ名とライブラリをインスタンス化します。
私の最終的に必要なのは、内部クラスに開発者レイアウト(.xmlファイル)で使用されるAndroidビュー(IDとタイプの両方)を知らせることです。反射なしでこれを達成し、パフォーマンスのオーバーヘッドを逃れる方法はありますか?私はそれができないと確信していますが、私が気が付かないものを見ている専門家がいるかどうかを尋ねます。
EDIT:さらに、デフォルトでproguardは保護のためにコードを難読化しますが、結果として実行時にリフレクションを実現する手段をJVMに提供できません。したがって、リフレクションを使用する場合は、バーカーであるRクラスのプロガード難読化。
アノテーションプロセッサを使用できますか?バターナイフの仕組みに似た何か? –
ええ、私は、コンパイル時に実行を移動するアノテーション処理を使用することができます。しかし、これはバインディングのアノテーションを提供する必要があるため、開発者の視点からはより大きな努力が必要です。または私は間違っていますか?私はまだ議論している、私はどちらの側にも傾いていない。とにかくお返事ありがとうございます。 – NitroNbg