当我更改packageNameSuffix时找不到R

时间:2014-01-15 05:15:20

标签: android reflection package-name

我使用gradle构建应用程序。我在我的调试版本的packageName中添加了一个后缀。如下:

buildTypes {
    debug {
        packageNameSuffix ".debug"
    }
}

但是,我使用的其中一个库无法使用它。

我认为lib使用这样的代码来获取R类:

drawable = Class.forName(this.context.getPackageName() + ".R$drawable");

它会抛出java.lang.IllegalArgumentException:ResClass未初始化。

R的正确包是com.xxx.R $ drawable。由于我在包中添加了一个后缀,当lib想要使用反射获取类时,它会得到com.xxx.debug.R $ drawable。

有什么办法可以解决吗? BTW我无法修改lib的代码,因为它是一个jar文件。

1 个答案:

答案 0 :(得分:0)

不确定它是否对您有帮助,我在不同的情况下也遇到过类似的问题。

R类只是一个类,例如,当R包名称与当前应用包名称不同时,import com.xxx.yyy.R有帮助。

可能您可以使用正确的包名创建缺少的类作为类的祖先。当然,这将破坏您的非调试版本,因此您必须为调试版本添加此类,并将其删除以用于非调试版本。