私はgradleを使ってアプリを構築しています。そして、デバッグ バージョンの packageName にサフィックスを追加します。次のように:
buildTypes {
debug {
packageNameSuffix ".debug"
}
}
ただし、私が使用するライブラリの 1 つはこれで動作しません。
lib は次のようなコードを使用して R クラスを取得していると思います。
drawable = Class.forName(this.context.getPackageName() + ".R$drawable");
そして、java.lang.IllegalArgumentException: ResClass is not initialized をスローします。
R の正しいパッケージは com.xxx.R$drawable です。パッケージに接尾辞を追加したので、lib がリフレクションを使用してクラスを取得しようとすると、com.xxx.debug.R$drawable が取得されます。
それを修正する方法はありますか?ところで、lib は jar ファイルであるため、lib のコードを変更することはできません。